£?о = Л>+ V,-»- 2у2+ Зу3, а матрица М7 примет вид

1111

Обратная матрица имеет вид А=(МГ)~' =

-1 1 0

о о -1 1

о

-3 1

Эти матрицы позволяют преобразовывать представления в разных фреймах в обе стороны. Обратите внимание на то, что матрица А преобразует точку, имеющую в исходном фрейме представление (1, 2, 3) или в однородных координатах представление Г

Р =

в начало координат нового фрейма: "0" Р' =

Но вектор (1,2, 3), который имел в однородных координатах исходного фрейма представление Г 2 3 0

4.3. Системы координат и фреймы

преобразуется в новом фрейме в Этот результат полностью согласуется с тем, который мы получили в примере с изменением систем координат. Он также демонстрирует, как важно отличать точки от векторов при выполнении операций.

4.3.5. Фреймы и абстрактные типы данных

До сих пор мы рассматривали сугубо математические вопросы представления геометрических объектов. Теперь наступила пора "спуститься на грешную землю" и задуматься над тем, как вся эта математика может быть реализована в компьютерной программе. Начнем с понятия об абстрактных типах данных.

В предыдущих разделах мы рассмотрели несколько типов геометрических объектов, в частности точки, прямые и плоскости, исполняющих в графических системах роль примитивов - "кирпичиков", из которых строятся другие объекты. Поэтому желательно, чтобы графическая система позволяла включить в программу определение переменных в таком, например, виде:

point3 p,q; vector3 v,u;

а затем разрабатывать программу в терминах этих типов данных. В языках программирования, подобных С++, которые поддерживают переопределение (перегрузку) операторов, можно использовать такие выражения:

q=p+v; u=p-q;

Но включение в программу выражений

q=v; u=p+q;

приведет к появлению сообщения об ошибке. Приведенные выше типы можно реализовать в программе разными способами. В С++ и других объектно-ориентированных языках программирования можно использовать такие средства, как конструкторы, деструкторы и перегрузку операторов, что позволяет скрыть детали реализации от прикладного программиста. Те же, кто работает на языке С, могут определить в программе тип данных point3 следующим образом:


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