logo
Компьютерная графика / МАШ_ГРАФИКА

5.1. Интерполирование по однократным узлам. Билинейные поверхности

Кривые, как плоские, так и пространственные, являются функциями одного параметра. Поверхности всегда описы-ваются двумя.

Рассмотрим вначале интерполирование по однократным узлам и найдем двумерный аналог полинома Лагранжа. Пусть на плоскости Oxy задана прямоугольная сетка (xij ) (i = 0,1 ,..., n; xi xk при i k, j = 0,1 ,..., m; yj ys при j s) . В узлах сетки заданы значения координаты по оси z некоторой поверхности z ( x i , у j ) = z i j . Необходимо

64

построить квадратичную форму L(x,у) минимально возможной степени, для которой L( xij )=zi j ,(i = 0,1 ,..., n; j = 0,1 ,..., m) , т.е. в узлах сетки её значения равны величинам z(xi , уj ).

Решение задачи существует и единственно. Так как об-щее число геометрических условий по оси х равно (n+1), а по оси у(m+1), то искомая форма будет иметь степени по этим осям, соответственно, не выше n и m . В скалярном виде её можно представить следующим образом:

( 2.20)

где Ф i (x), Ф j (y) – функции Лагранжа по переменным х,у , построенные по соответствующим координатам узлов ( xi , уj ) , (i = 0,1 ,..., n; j = 0,1 ,..., m). Назовём её квадратичной формой Лагранжа.

В векторном виде квадратичную форму (2.20) можно представить как:

L n,m (x,y) = ФТ(х) ZФ(y), (2.21)

где Zпрямоугольная матрица ( (n+1) (m+1) ), содержащая значения z i j , (i = 0,1 ,..., n; j = 0,1 ,..., m) :

ФТ(х) = ( Ф0 (х) , Ф1 (х) , . . . , Фn (х) ) - вектор-строка значений функций Лагранжа по оси х;

Ф(y) = ( Ф0 (y) , Ф1 (y) , . . . , Фm (y) ) - вектор-столбец значений функций Лагранжа по оси у.

65

Рассмотрим интерполирование на прямоугольном участ-ке [x0,x1]0, y1]. В его граничных точках заданы по одному геометрическому условию: z(x00 )= z00 , z(x1 0 ) =z10 , z(x0 , у1)= z01 , z(x1 1) =z11 . Минимальные степени квадратичной формы S(x,y) по переменным х,у равны еди-нице. Явное решение для S(x,y) проще всего задать в век-торной форме при помощи функций Лагранжа:

S (x,y) =Ф(x)Т ZФ(у); (2.22 а)

где Ф(x)=((x1x) / (x1 -x0), (x-x0) / (x1 -x0 ));

Ф(у)=((y1y) / (y1 -y0), (y-y0) / (y1 -y0));

Переходя, как и в одномерном случае, к безразмерным нормированным переменным tх= (x - x0)/(x1 - x0 ) и tу = (у - y0)/(y1 - y0 ) и используя матрицу МЛ , решение для S(x,y) можно представить в виде:

S(tx,ty) = (MЛТх1) Z (MЛТy1), (2.22 б)

где ЛТх1)Твектор – строка,

В том случае, если участок поверхности интерполируется по четырём произвольным однократным узлам (не обра-зующим прямоугольник), то такую поверхность, называют билинейной, поскольку она линейна в отдельности по каждой переменной (как и поверхность (2.22)). Рассмотрим билинейную поверхность более подробно. Допустим, она строится по точкам {Pj} = {P1,P2,P3,P4}. Для пара-метров u и v вводят локальную систему координат, начало которой помещают в точке P1, ось u направляют отP1 к P2 , а ось v - отP1 кP3 Масштабы по осям u и v вводят таким образом, чтобы значения u=1 и v=1 пара-метры получали в точкахP2,P3.

Математическое задание координат точек, лежащих на осях и внутри поверхности, имеет вид:

66

S(u,v) =P1 (1-u)(1-v) +P2 u(1-v) +P3 v(1-u) +

+P4 u v, где 0 u, v 1. (2.23)

При этом:S(0,0)=P1;S(1,0)=P2;S(0,1)=P3;S(1,1)=P4.

При фиксации одного из параметров происходит сниже-ние размерности объекта (поверхности) на единицу и он превращается в линию (линию уровня) :

S(u,v0 =const) – линия соответствующая уровню v= v0;

S(u0 =const,v) – линия соответствующая уровню u= u0.

Поскольку билинейные поверхности линейны в отдель-ности по каждому параметру, то их линии уровня являются отрезками прямых (Рис 2.3) .

Рис.2.3

67

Функция Q на языке Autolisp для построения линий уровня поверхности, интерполированной по 4 точкам, и их проекций на плоскость z=0 , а также соответствующая отладочная функция приведены в Приложении.