При конвейерной организации процесса тонирования будет последовательно выполняться приведение луча, исходящего из центра проецирования, ко всем пикселям картинной плоскости. Уравнение каждого луча можно записать в параметрическом виде: р(а) * р0+а<1.
10.11. Алгебраические поверхности
После подстановки этого выражения в уравнение для q получим неявное полиномиальное уравнение относительно неизвестной а:
<7(Р(о:)) = 0.
Это уравнение можно решить подходящим численным методом или для квадратичных поверхностей - аналитически. Если в уравнении имеются члены вида x'yhk, то получим не более i+j+k точек пересечения. Отбор среди них единственной может привести к тому, что тонирование займет довольно много времени.
10.12. Кривые и поверхности в OpenGL
В составе OpenGL имеются средства поддержки работы с кривыми и поверхностями Бе-зье - Безье-вычислитель (evalua/or), которые позволяют вычислять значения полиномов Бе-зье любого порядка. Безье-вычислитель не требует, чтобы опорные точки размещались с постоянным шагом, а потому позволяет преобразовывать в форму Безье кривые, определенные любым другим из описанных ранее способов. Безье-вычислитель можно использовать для работы с полиномами от одной, двух, трех и четырех переменных. При построении кривых Безье-вычислитель вычисляет значения полинома одной переменной, что необходимо при формировании карт цветов или траектории движения во временной области персонажей в анимационных приложениях. В библиотеке GLU Безье-вычислитель используется в четырехмерном варианте для поддержки методов обработки NURBS-кривых. Вариант Безье-вычислитель, работающий с полиномами двух переменных, используется в основном при формировании поверхностей. Помимо обработки кривых и поверхностей Безье-вычислитель в OpenGL обеспечивает вычисление цветов, нормалей и координат текстур.
10.12.1. Кривые Безье Функция обработки полинома одной переменной настраивается в процессе инициализации OpenGL-программы посредством вызова функции
glMaplf(type, u_min, u_max, stride, order, point_array)