Проективная инвариантность Остановимся на некоторых деталях свойства проективной инвариантности NURBS-кривых (для 2D-или ЗБ-случаев). Вывод дается в тематическом задании 11.9. Основная идея заключается в том, что при преобразовании NURBS-кривой посредством главной матрицы размерностью четыре на четыре (что может привести к искажению перспективы) в результате получается другая NURBS-кривая, причем ее контрольные точки являются просто преобразованными версиями исходных контрольных точек. Чтобы эта схема работала, веса также следует скорректировать.

Рассмотрим конкретный случай ЗБ-точек: пусть Т- преобразование, представленное главной матрицей М размерностью четыре на четыре. Обозначим строки матрицы М через щ,, та2, т3, т4, тогда матрицу М можно записать в блочной форме: М - (m, | т21 т31 та4)т. (Символ Т, как всегда, означает транспонирование.) Если последняя строка равна (0, 0, 0, 1), то данное преобразование становится аффинным (и перспективного искажения не происходит). В результате получается [Piegl, 167], что кривая Г(Р(г)), полученная путем применения преобразования Г( ) к NURBS-кривой из уравнения (11.68), идентична NURBS-кривой на базе преобразованных контрольных точек Т(Рк), а именно:

2>л^кло

^ИО) = -с-- (11.70)

2>*^.Л0

со скорректированными весами

»1=»*Й,П|«)' (1171)

где Рк = [Рх, Pf, Р:Л)Т - обычное расширение Р на случай однородных координат. Отметим, что веса зависят от положения контрольных точек, а также от содержимого четвертой строки матрицы. Если преобразование является аффинным, то (Рк- m4) - 1, то есть веса корректировать не нужно.

Практические упражнения

11.9.1. Создание базовых поверхностей Обдумайте, как при помощи NURBS-кривых создать каждую из следующих поверхностей: О круговой цилиндр; О круговой конус; О плоский лоскут (patch); О сфера.

За подробностями обратитесь к тематическому заданию 11.10. Можно ли таким способом создать произвольный лоскут Кунса?

11.9.2. Что если веса одинаковы?

Пусть все веса у NURBS-кривой q(t) одинаковы (то есть это В-сплайн кривая). Останется ли она NURBS-кривой после преобразования М? А В-сплайн кривой?


⇐ Предыдущая| |Следующая ⇒