point3 p,q; vector3 v; frame f;
v = point_sub(p,q,f);

или использовать текущий фрейм, который становится в этом случае таким же параметром текущего состояния системы, как и прочие атрибуты (тип линии, цвет и т.п.).

4.3.6. Фреймы в OpenGL

При работе с OpenGL мы пользуемся двумя фреймами- фреймом камеры и мировым фреймом. Фрейм камеры можно рассматривать как фиксированный. Матрица вида задает положение мирового фрейма относительно фрейма камеры. Таким образом, матрица вида (model-view matrix) преобразует представление точек и векторов в однородных координатах в мировом фрейме в представление в фрейме камеры4. Поскольку матрица вида является одним из компонентов текущего состояния графической системы, то, следовательно, в любой момент в системе специфицированы фреймы камеры и мировой. OpenGL поддерживает стек матриц, в котором можно сохранять текущую матрицу вида, или, что то же самое, два фрейма.

Как мы уже говорили в главе 2, камера всегда размещается в точке начала координат своего фрейма. Векторы базиса этого фрейма направлены следующим образом: один, у, вверх по отношению к камере, второй, z, в направлении, обратном направлению визирования камеры, а третий, х, таким образом, чтобы вместе с двумя первыми образовать правостороннюю ортогональную систему координат. Другие фреймы, которые понадобятся нам в процессе размещения объектов сцены, формируются с помощью однородных преобразований относительно фрейма камеры. В разделе 4.5 будет описано, каким образом можно задавать такие преобразования. В главе 5 мы рассмотрим использование этих преобразований при размещении камеры относиМожно считать и наоборот - мировой фрейм фиксирован, а фрейм камеры подвижен. Какой точки зрения вы будете придерживаться - дело вкуса.

4.3. Системы координат и фреймы тельно объектов сцены. Поскольку изменение фрейма представляется матрицей вида и система позволяет сохранять текущее значение матрицы, у прикладного программиста имеется возможность переключаться между фреймами, изменяя текущее значение матрицы вида.


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