Поделиться через


Системы координат

Обычно трехмерные графические приложения используют одну из двух типов систем координат Декартиана: левую или правую. В обеих системах координат положительные оси x указывают справа, а положительная ось y — вверх.

Координаты слева и правой руки

Вы можете помнить, какое направление положительных точек оси z, указывая пальцы левой или правой руки в положительном направлении x и свергая их в положительное направление y. Направление, на которое указывает большой палец, либо к вам, либо от вас, является направление, которое положительные точки оси z для этой системы координат. На следующем рисунке показаны эти две системы координат.

иллюстрация систем координат слева и правой стороны декартиана

Direct3D использует левую систему координат. Хотя левая и правая координаты являются наиболее распространенными системами, существует множество других систем координат, используемых в трехмерном программном обеспечении. Например, не является необычным для трехмерного моделирования приложений использовать систему координат, в которой ось Y указывает на средство просмотра или от него, а оси z — вверх.

Вершины и векторы

Учитывая систему координат, координаты x, y и z могут определять точку в пространстве (вершину) или трехмерное направление (вектор).

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

Основные операции, выполняемые в сетках, определенных в трехмерной системе координат, — преобразование, поворот и масштабирование. Эти основные преобразования можно объединить для создания матрицы преобразования. Дополнительные сведения см. в разделе "Преобразования".

При объединении этих операций результаты не являются коммутативными; Порядок умножения матриц имеет важное значение.

Перенос из правой системы координат

При переносе приложения, основанного на системе координат правой руки, необходимо внести два изменения в данные, передаваемые в Direct3D:

  • Переверните порядок вершин треугольника, чтобы система пересекла их по часовой стрелке с передней стороны. Другими словами, если вершины являются v0, v1, v2, передают их в Direct3D как v0, v2, v1.
  • Используйте матрицу представления для масштабирования мирового пространства на -1 в направлении z. Для этого переверните знак матрицы _31, _32, _33 и _34 элемента структуры матрицы, используемой для матрицы представления.

Системы координат и геометрия