Параметрические бикубические поверхности
Параметрические бикубические поверхности задаются многочленами третьей степени от двух параметров s и t. Как и прежде, будем рассматривать только уравнение для координаты х:
x(s, t) = a11xs3t3 + a12xs3t2 + a13xs3t + a14xs3 +
+ a21xs2t3 + a22xs2t2 + a23xs2t + a24xs2 +
+ a31xst3 + a32xst2 + a33xst + a34xs +
+ a41xt3 + a42xt2 + a43xt + a44x.
Или:
x(s, t) = [s3 s2 s 1] = S Cx TT,
где: S = [s3 s2 s 1],
T = [t3 t2 t 1],
TT – транспонированная матрица Т.
Матрица Сx задает коэффициенты бикубического многочлена. Существуют еще матрицы Сy и Сz, которые определяют коэффициенты бикубических уравнений y(s, t) и z(s, t).
Изменяя оба параметра s и t от 0 до 1, можно определить все точки на куске поверхности. Если одному из параметров присвоить постоянное значение, а второй параметр изменять в пределах 0…1, то в результате получается кубическая кривая.
Форма Эрмита для задания бикубической поверхности: перепишем уравнение кубической кривой Эрмита от параметра s так, чтобы геометрический вектор Эрмита был не константой, а функцией от параметра t:
x(s, t) = S Mh Ghx(t) = S Mh .
При фиксированном значении параметра t функции P1x(t) и P4x(t) описывают х-компоненты начальной и конечной точек кривой, задаваемой параметром s. Аналогично, R1x(t) и R4x(t) описывают касательные векторы в конечных точках кубической кривой. Каждая из кривых P1x(t), P4x(t), R1x(t), R4x(t) представлена кубическим многочленом в форме Эрмита:
P1x(t) = T Mh , P4x(t) = T Mh ,
R1x(t) = T Mh , R4x(t) = T Mh .
Объединяя эти выражения, получим:
x(s, t) = S Mh Qhx MhT TT = S Mh MhT TT.
Таким образом, бикубическая поверхность Эрмита задается 16 параметрами, из которых:
q11x = x(0, 0), q12x = x(0, 1), q21x = x(1, 0), q22x = x(1, 1) – координаты углов куска поверхности;
q13x = dx/dt (0, 0), q14x = dx/dt (0, 1), q23x = dx/dt (1, 0), q24x = dx/dt (1, 1), q31x = dx/ds (0, 0), q32x = dx/ds (0, 1), q41x = dx/ds (1, 0), q42x = dx/ds (1, 1) – х-компоненты касательных векторов в угловых точках для каждой из ограничивающих кусок поверхности параметрических кривых;
q33x = d2x/dsdt (0, 0), q34x = d2x/dsdt (0, 1), q43x = d2x/dsdt (1, 0), q44x = d2x/dsdt (1, 1) – частные производные по обоим параметрам s и t в угловых точках куска поверхности (кривизна).
При соединении кусков бикубических поверхностей должны выполняться условия непрерывности: кривые, заданные на общем ребре, должны быть одинаковыми (должны совпадать начальные и конечные точки кривых и значения касательных векторов к кривым в этих точках); касательные вектора, пересекающие ребро, должны иметь одно и тоже направление для обоих сочленяющихся кусков.
Уравнения для кусков Безье выводятся также, как и для формы Эрмита. В результате получается:
x(s, t) = S Mb Pbx MbT TT = S Mb MbT TT.
Геометрическая матрица Рbx состоит из 16 управляющих точек, причем точки Р11х, Р14х, Р41х и Р44х являются угловыми точками куска поверхности.
Поверхности Безье, также как и кривые, обладают свойством выпуклых оболочек.
При соединении двух кусков поверхностей для выполнения условия непрерывности необходимо равенство четырех управляющих точек, принадлежащих общим ребрам кусков. Кроме того, для достижения непрерывности касательного вектора требуется, чтобы две четверки управляющих точек, лежащих по обеим сторонам общего ребра были коллинеарны (лежали на одной прямой) четверке управляющих точек общего ребра и друг другу. Отношения длин коллинеарных отрезков должны быть постоянными.
Куски в форме В-сплайнов представляются в виде:
x(s, t) = S Ms Psx MsT TT.= S Ms MsT TT.
Шестнадцать управляющих точек задают кусок поверхности, находящийся около четырех центральных точек Р22, Р23, Р32 и Р33.
7.5. Преобразования параметрических кривых и кусков поверхностей
Для выполнения аффинных преобразований с параметрическими кривыми или поверхностями не обязательно применять матрицу преобразования к каждой точке кривой (поверхности). Достаточно перемножить матрицу аффинного преобразования и геометрическую матрицу управляющих точек и касательных векторов (Gh, Gb, Gs, Qh, Pb, Ps). Для выполнения перемножения матриц каждая управляющая точка и касательный вектор записываются в однородных координатах (к координатам точки добавляется четвертая координата, равная единице, а к координатам вектора – равная нулю) [11, 14].