7.2.2. Использование ир дает наилучшее приближение к ир вектором V

Покажите, что использование ир из уравнения (7.1) для задания векторов и и V эквивалентно тому, что вектор V - ближайший к ир вектор из всех, перпендикулярных к вектору п. Выполните следующие этапы: О Покажите, что V - п х (ир х п).

О Используйте следующее свойство двойного векторного произведения: а х (Ь с) = (а с) Ь - (а Ь) с.

О Покажите, что тогда вектор V является проекцией вектора ир на плоскость с нормалью п (см. главу 4), откуда следует, что V - ближайший к ир вектор в этой плоскости.

Для того чтобы осуществлять наилучший контроль за передвижениями камеры, создадим в программе собственную камеру и будем управлять ею. После каждого изменения, произведенного с этой камерой, она сама «сообщает» OpenGL, что она теперь собой представляет.

Мы создаем класс Camera, который «знает», как делать все то, что делает камера. Сделать это очень просто, и выигрыш получается значительный. Создадим в программе объект класса Camera, например cam, и настроим его с помощью таких функций:

cam.set(eye. look, up):
// initialize the camera

// инициализируем камеру

cam.slide(-l. 0. -2):
// slide the camera forward and to the left

// перемещаем камеру вперед и вверх

сат.гоП(ЗО):

//roll it through 30°

// накреняем камеру на 30"

cam.yaw(20):
// yaw it through 20°

// рыскаем камерой на 20°

etc.

// и так далее а

Встраивание камеры в программу

7.3. Встраивание камеры в программу

Хорошо сказать о предмете столь же интересно и столь же трудно, как нарисовать его.

Винсент ван Тог (Vincent van Gogjn)

7.3. Встраивание камеры в программу

Листинг 7.1. Определение класса Camera

class Camera{ private:
Point3 eye: Vector3 u. v. n:

double viewAngle. aspect. nearDist. \farDist: // view volume shape // форма отображаемого объема

void setModelViewMatrixO: // tell OpenGL where the camera is // сообщаем OpenGL. где находится камера

public:

Camera О: // default constructor // конструктор no умолчанию

void set(Point3 eye. Point3 look. Vector3 up): // like gluLookAtO // подобно gluLookAtO


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