Конгер Д.
Физика для разработчиков компьютерных игр
стр. 119

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

Чтобы использовать однородные координаты в 3D, нужно добавить к каждому вертексу в программе еще один координатный компонент. При этом точки будут определяться не как (х, у, z), а как (х, у, z, w). Компонент w - это однородная координата w. Его единственное назначение - сделать возможным представление преобразований в виде матриц. Мы будем присваивать этому компоненту значение 1. Ему можно присваивать и другие значения, но для работы над нашей книгой в этом нет необходимости.

Значит ли это, что нужно добавить еще один компонент со значением 1 к координатам каждого объекта?

К счастью, нет. Direct3D делает присутствие четвертой координаты практически незаметным для программиста. Для вертексов задаются координаты х, у и z, и Direct3D предоставляет функции для построения матриц преобразований, основанных на однородных координатах. Если вы приказываете Direct3D выполнить преобразование, он автоматически преобразует координаты х, у, z в х, у, z, w и перемножает их с матрицей преобразования.

Но если Direct3D делает все за нас, то зачем вообще говорить о четвертой координате?

В следующем разделе вы узнаете, как выполняются математические преобразования в трехмерных пространствах. Эти математические преобразования требуют применения однородных координат.

Перемещение

Перемещение вектора в трехмерных координатах выполняется практически так же, как и в двумерных - сложением вектора с вектором смещения t, представляющим перемещение.

х' = х + t

Если вернуться к главе 4, вы увидите, что в двумерных координатах для перемещения используется в точности такое же уравнение. Единственное отличие заключается в том, что вместо двумерных векторов теперь мы будем использовать трехмерные.

Мы будем использовать однородную координату w в ЗО-преобразова-ниях — каждый вектор будет состоять из 4 компонентов, а каждая матрица преобразования будет иметь размер 4x4:









Новости
Владельцы Dark Souls в Steam получат скидку на Dark Souls Remastered
В то время, как подавляющее большинство компаний хлебом не корми - дай только в очередной раз содрать полную сумму за какое-нибудь переиздание, эти благородные японцы объявили о том, что все владельцы оригинальной Dark Souls (Prepare to Die Edition в Steam) получат… нет, не Dark Souls Remastered бесплатно, а скидку на неё.
Tencent вложит $ 15 млн в продвижение Fortnite в Китае
Китайская корпорация Tencent займётся продвижением Fortnite в Китае.