Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KonspektKG_Ukr (1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.26 Mб
Скачать

5.7. Обчислення крапок на бікубичній поверхні

Об'єкти, що складаються з бікубичних шматків, часто зображують шляхом креслення ряду кривих, що лежать на поверхні шматків і мають постійний параметр s чи t. У результаті виходять зображення, аналогічні показаної на мал. 5.20 (для одного шматка) і 5.21 (для декількох шматків). Основна ідея тут полягає в тому, щоб накреслити кусочно-лінійні апроксимації параметричних кривих на поверхні шматка. Для цього можна використовувати наступний метод:

Цей метод володіє одним недоліком — рівняння поверхні обчислюються 2/е2 разів. При e=0,l це число дорівнює 200, а при e=0.01 paвно 20 000. Кожне таке обчислення вимагає багатьох множень і додавань.

Для зменшення числа множень при обчисленні параметричних бікубічних поліномів можна використовувати схему Горнера розкладання багаточленів на множники. Відповідно до цього правила кубічний багаточлен можна представити у виді

Це правило легке поширити і на кубічні багаточлени, однак усе рівно залишається ще багато роботи.

Більш ефективним є спосіб проведення обчислення бікубічного багаточлена, заснований на правих разностях. Права різниця функції f(t) визначається виразом

( 5.61 )

яке можна записати у виді

( 5.62 ) Таким чином, якщо відомі f (t ) і ∆f ( t ) , можна обчислити f ( t+δ). Представляючи вираження (5.62) , як ітераційний процес, бачимо, що

( 5.63 )

причому обчислення f виробляється з постійним кроком про, так що t=δn, a fn=f(tn).

яке можна записати у виді

Для багаточлена третього порядку

( 5.64 )

права різниця має вид

Таким чином, Δf(t) є багаточленом другого порядку.Поцьому, щоб оцінити вираз (5.63), треба обчислити цей багаточлен другого порядку і виконати додавання. Спробуємо спростити процес обчислення, використовуючи праві різниці. Розглядаючи Δf(t) як деяку функцію, запишемо

( 5.66 ) Застосовуючи цю властивість до виразу ( 5.65), знаходимо

( 5.67 )

Отже, ми одержали рівняння першого порядку відносно t. Запишемо вираження (5.66), використовуючи індекс n:

( 5.68 )

чи

( 5.69 ) Замінивши n на n—1, одержимо

( 5.70 )

Щоб знайти Δfn і підставити його у вираз (5.63), необхідно лише обчислити Δf2 n-1_і результат скласти з Δfп-1. Оскільки функція Δf2 n-1_ линейна відносно t, це вже більш проста задача, чим визначення Δf n безпосередно з багаточлена другого порядку (5.65).

Щоб не робити обчислення по формулі (5.67), повторимо процес ще раз:

Δ3 f (t) = (Δf 2 (t)) = Δ 2 f(t+δ) –Δ 2 f( t ) . ( 5.71)

Застосувавши цю властивість до вираження ( 5.67), знайдемо

Δ 3 f ( t ) = 6 a δ 3 (5 .72) т. e. третя різниця є константою і її обчислення тривіальне. Запишемо тепер вираження (5.71), використовуючи індекс n:

( 5.73 - 74 )


( 5.75 )


Заміняючи n на n—2, знаходимо


За допомогою цього виразу можна з виразу (5.70) знайти Δf n і, підставивши його в ( 5.63), визначити fn+l.

Щоб використовувати праві різниці в алгоритмі, у якому проводяться ітерації по n від n=0 до δn=l, необхідно за допомогою виразів (5.64), (5.65), (5.67) і (5.72) обчислити функцію і її першу, другу і третю праві різниці при t=0 (чи n=0):

(5.76 ) Ці початкові обчислення можна виконати також шляхом прямого рішення чотирьох рівнянь. Однак корисно відзначити, що

( 5.77 ) чи в іншій формі

Повторимо тепер наступні кроки 1/δ разів, починаючи з n=0:

( 5.79 – 81 )

Відзначимо, що якщо обчислення виконуються в зазначеному порядку, то не потрібно пам'яті для запам'ятовування проміжних результатів. Для кубічних кривих необхідно подібним чином розглянути три функції x(t), y(t) і z(t). Для узагальнення поняття правих разностей на випадок поверхонь розглянемо

( 5.84 )


( 5.82 ) За аналогією з початковими обчисленнями у випадку кривих, для яких


( 5.83 )


проведемо обчислення для поверхонь


де ε — величина кроку параметра s, а δ — величина кроку параметра t. Матриця D00 має розмір 4x4, в її першому рядку містяться значення f0, Δf0 Δ2 f0 i Δ3 f0 необхідні для обчислення x(0, t), а в першому стовпці -значення, що вимагаються для визначення x(s, 0).

Як приступати до обчислення x(ε, t), якщо відомі x(0, t) для всіх кроків по t? Ітераційний процес аналогічний процесу для кривих, тільки він виконується по всіх рядках D 00 :

Рядок 1 = Рядок 1 + Рядок 2,

Рядок 2 = Рядок 2 + Рядок 3, (5.85)

Рядок 3 = Рядок 3 + Рядок 4.

Тепер у рядку 1 міститься x(ε,, t). Після повторення кроків ( 5.85) рядок 1 буде визначати вже х(2ε, t) і т.д.

При побудові x(s, 0), x(s,ε),. . ., x(s, 1) для обчислення значень використовується перший стовпець і у виразу (5.85) стовпець заміняється рядком. З іншого боку, якщо замість D00 узяти D T 00, тобто така заміна не потрібна.

Лекція 6. Отримання реалістичних зобраень. Тіні. Дифузне і дзеркальне відбиття світла.Модель Горренса-Сперроу та інші.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]