3.4.3. КВАДРАТИЧНЫЕ ПОВЕРХНОСТИВопросам обработки квадратичных поверхностей посвящена обширная литература [48,59,103,107,115,131], что обусловлено, с одной стороны, относительной простотой их обработки, а с другой – богатством геометрических форм. Уравнение функции вида или в матричном виде
где В соответствии с методом трассирования лучей найдем точки пересечения светового луча с поверхностью второго порядка (3.4.12). Прямую
где Подставим выражения из (3.4.13) в (3.4.12):
Введем новые матрицы
Так как Проверим дискриминант Рис. 3.4.8. Пересечение луча с продолжением поверхностей цилиндра Имея аппарат определения видимой точки для квадратичного примитива, необходимо быть уверенным в его работоспособности при перемещении примитива в объектной системе координат. В §2.2 приведены правила определения коэффициентов уравнения квадратичной поверхности при изменении системы координат. Напомним, что если в системе координат
а для перевода некоторой точки квадратичной поверхности в новой системе координат Для метода трассирования лучей и твердотельной конструкции примитива существенно важным является инвариантность свойства положительности внутренней области примитива по отношению к преобразованию координат (перемещениям примитива). В соответствии с доказательством, приведенным в §2.2, наблюдается не только инвариантность знака скалярного поля второго порядка внутри примитива, но и сохранение ориентации нормали при перемещениях примитива. Нормальный вектор в точке
где Функция
Вектор В приложении приведены программы ALLOID, ALLIPS, CILIND, KONYS, PICA, используемые для изображения наиболее часто используемых примитивов второго порядка: ALLOID – эллипсоида, усеченного двумя плоскостями; ALLIPS – эллипсоида; CILIND – кругового цилиндра со свободно-ориентированной осью и закрытыми торцами; KONYS – конуса, ограниченного двумя плоскостями, перпендикулярными оси; PICA – неограниченного конуса. Все эти подпрограммы используют в свою очередь алгоритм решения квадратного уравнения KVADR и служебную подпрограмму NA8FIR, которая из нескольких точек пересечения прямой с примитивом сначала выбирает действительно лежащие на поверхности, а из последних - ближайшую к центру проекции. Процедура обработки эллипсоида и конуса ориентирована на расположение осей этих фигур параллельно координатным осям. Так как все решения пересечения прямой с примитивами ориентированы только на поиск одной ближайшей точки, то подпрограммы можно применять в сценах только с пространственно складывающимися фигурами. На рис. 3.2.2 показаны несколько шаров и усеченный эллипсоид (бочка), иллюстрирующие изобразительные свойства примитива типа эллипсоида. Изображение построено с использованием подпрограмм ALLIPS и ALLOID. Заметим, что шарообразные поверхности всегда проявляют блик, конечно, при их достаточной гладкости. Плоские же поверхности (торец бочки на рис. 3.2.2) проявляют блик только в очень узком диапазоне условий наблюдения и освещения. Изображение цилиндра, для которого использовано математическое описание в виде (3.2.1) показано на рис. 3.2.3. Рисунки 3.2.5,а,б демонстрируют возможности изменения облика конического примитива при перемещении отсекающих плоскостей вдоль оси конуса. Фигуру на рис. 3.2.5 называют бантик, фигуру на рис. 3.2.6 – усеченный конус.
|