2015-07-03 3 views
0

Любой может объяснить об appendRotation, appendTranslation функции Matrix3D с ясным примером?Matrix3D - appendTranslation, appendRotation

+0

Возможный дубликат [Может ли кто-нибудь порекомендовать несколько Матриц трансформации для манекенов?] (Http: // stackoverflow.ком/вопросы/2697611/может-кто-рекомендую-некоторые-преобразование-матрицы-учебники-для-чайников) – Vesper

ответ

0

The manual on Matrix3D

Performing complex 3D transformations

В принципе, объяснение извлекут для преобразования трехмерного ортогонального базиса в 3D-пространстве с фиксированным базисом. Каждое преобразование можно рассматривать как состав преобразований и может (технически) разделяться на последовательность преобразований масштаба, вращения и трансляции. Порядок последовательности имеет значение.

Каждое «простое» преобразование, будь то поворот, масштаб, перевод или перспектива, описывается матрицей 4x4, известной в AS3, как Matrix3D. Вы можете обратиться к Matrix для преобразования 2D, потому что основной принцип тот же. Существует также матрица «нулевого преобразования», также известный как «матрица идентичности», которая описывает преобразование, где ничто не движется в любом месте, и это выглядит следующим образом:

[1,0,0,0] 
[0,1,0,0] 
[0,0,1,0] 
[0,0,0,1] 

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

appendTranslation умножает матрицу с матрицей перевода, который выглядит следующим образом, где x, y, z являются параметры:

[1,0,0,x] 
[0,1,0,y] 
[0,0,1,z] 
[0,0,0,1] 

appendScale «s матрица выглядит следующим образом:

[xScale,0,  0,  0] 
[0,  yScale,0,  0] 
[0,  0,  zScale,0] 
[0,  0,  0,  1] 

appendRotation создает матрицу, которая описывает поворот вокруг axis, который начинается с pivotPoint позиции в системе координат преобразованного объекта. Преобразование таково, что точка поворота и все точки, находящиеся на векторе оси, остаются на месте, а другие вращаются degrees против часовой стрелки, если смотреть вниз по оси от точки поворота. Фактические примеры слишком тяжелы, чтобы рассчитать вручную, но простая матрица вращения вокруг оси может быть построен, то они выглядят так (cos и sin стоять Math.cos(angle) и Math.sin(angle) соответственно):

Вращение вокруг оси X:

[1,0, 0, 0] 
[0,cos,-sin,0] 
[0,sin,cos, 0] 
[0,0, 0, 1] 

Вращение вокруг оси Y:

[cos,0,-sin,0] 
[0, 1,0, 0] 
[sin,0,cos, 0] 
[0, 0,0, 1] 

Вращение вокруг оси Z:

[cos,-sin,0,0] 
[sin,cos, 0,0] 
[0, 0, 1,0] 
[0, 0, 0,1] 

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

Этот topis требует дополнительного чтения, а его много, here - это некоторые ссылки на книги и учебные пособия по 3D-преобразованиям.

Смежные вопросы