Для корректной работы с прямыми и плоскостями мы должны вернуться к основам и вспомнить, чем отличаются друг от друга точки и векторы и каким образом представляется каждый из этих объектов. Необходимость в данном обзоре возникает потому, что для представления прямой или плоскости нам требуется «складывать точки» и «масштабировать точки», то есть выполнять операции, которые фактически не имеют смысла для точек. Для того чтобы увидеть, что в действительности происходит, введем понятие координатного фрейма (coordinate frame), которое проясняет существенную разницу между точкой и вектором и которое придает смысл операции «сложения точек». Использование координатных фреймов приводит в конечном счете к понятию «однородных координат» («homogeneous coordinates*), являющимся основным инструментом компьютерной графики и значительно упрощающим многие алгоритмы. Мы будем использовать координатные фреймы явно лишь в нескольких местах книги, преимущественно при изменении системы координат и при «полете» камеры вокруг сцены1 (см. главы 5, 6 и 7). Но даже если основной координатный фрейм явно не виден, он тем не менее будет присутствовать в каждой ситуации.
4.5.1. Системы координат и координатные фреймы
Нельзя открыть новых земель, не потеряв из виду берег на очень долгое время.
Андре Жид (Andre Gide)
Рассматривая векторы в предыдущих разделах, мы говорили о векторе, например, о векторе v = (3,2,7), как об упорядоченной тройке. То же самое мы можем сказать и о точке, например: Р= (5,3,1). Вследствие этого может показаться, что точки и векторы - это одно и то же. Однако на самом деле точки и векторы сильно различаются: точки имеют местоположение, но не имеют размера и направления, в то время как у векторов есть размер и направление, но нет местоположения.
Что мы имеем в виду, говоря о векторе v = (3,2,7)? Разумеется, то, что вектор v имеет компоненты (3,2,7) в основной системе координат. Подобным же образом, Р= (5,3,1) означает, что точка Р имеет координаты (5,3,1) в основной системе координат. При обычных обстоятельствах эта путаница между объектом и его отображением проблем не создает. Проблема возникает, когда присутствует более чем