Системы координат (Direct3D 9)
Обычно трехмерные графические приложения используют два типа систем координат Декартиана: левую и правую. В обеих системах координат положительные оси x указывают справа, а положительная ось y — вверх. Вы можете помнить, какое направление положительных точек оси z, указывая пальцы левой или правой руки в положительном направлении x и свергая их в положительное направление y. Направление, на которое указывает большой палец, либо к вам, либо от вас, является направление, которое положительные точки оси z для этой системы координат. На следующем рисунке показаны эти две системы координат.
Direct3D использует левую систему координат. При переносе приложения, основанного на правой системе координат, необходимо внести два изменения в данные, передаваемые в Direct3D.
- Переверните порядок вершин треугольника, чтобы система пересекла их по часовой стрелке с передней стороны. Другими словами, если вершины являются v0, v1, v2, передают их в Direct3D как v0, v2, v1.
- Используйте матрицу представления для масштабирования мирового пространства по -1 в направлении z. Для этого переверните знак символа _31, _32, _33 и _34 структуры D3DMATRIX, используемой для матрицы представления.
Чтобы получить значения правого мира, используйте функции D3DXMatrixPerspectiveRH и функции D3DXMatrixOrthoRH для определения преобразования проекции. Однако будьте осторожны, чтобы использовать соответствующую функцию D3DXMatrixLookAtRH, отменить порядок выкладки заднего лица и выложить соответствующие карты куба.
Хотя левая и правая координаты являются наиболее распространенными системами, существует множество других систем координат, используемых в трехмерном программном обеспечении. Например, не является необычным для трехмерного моделирования приложений использовать систему координат, в которой ось Y указывает на средство просмотра или от него, а оси z — вверх.
Формально ориентация набора базовых векторов (т. е. системы координат) может быть найдена вычислением детерминанта матрицы, определенной определенным набором базовых векторов. Если детерминант положительный, то основа, как говорят, будет "положительно" ориентированной (или правой рукой). Если детерминант является отрицательным, то основа считается "отрицательно" ориентированной (или левой рукой). Описание детерминированного ресурса см. в любом линейном ресурсе алгебры.
В неформальном режиме можно использовать правило "правая или левая рука", чтобы определить, формируется ли заданный набор векторов с правой или левой рукой.
Основные операции, выполняемые для объектов, определенных в трехмерной системе координат, — преобразование, поворот и масштабирование. Эти основные преобразования можно объединить для создания матрицы преобразования. Дополнительные сведения см. в преобразованиях (Direct3D 9).
При объединении этих операций результаты не являются коммутативными; Порядок умножения матриц имеет важное значение.
Связанные разделы