Ответ 1
Я не уверен, что m34
не выглядит.
Двумерное вращение легко, потому что все, что ему нужно, - это угол поворота. Затем выполняется поворот ВОКРУГ по оси Z (т.е. Ось, которая указывает прямо из экрана).
Вращение 3D отличается. Он нуждается в угле, но также он должен знать, какую ось (или оси) вы вращаете вокруг.
В CATransform3DRotate
вы даете ему пять параметров...
- Преобразование, к которому вы хотите применить поворот.
-
Угол (в радианах) π радиан = 180 градусов 3, 4 и 5 - то, какая часть угла поворота применяется к каждой оси.
-
Ось X - это ось, которая идет слева от экрана справа от экрана.
- Ось Y - это ось, которая идет от верхней части экрана до нижней части экрана.
- Ось Z - это ось, которая указывает прямо из экрана прямо к вам.
Вращение, которое вы применили в вашем примере, выглядит следующим образом:
угол = 45 градусов (преобразуется в радианы). X = 0 Y = 1 Z = 0
Это означает, что все 45 градусов будут повернуты вокруг оси Y. то есть он будет вращаться, как вращающаяся дверь вокруг линии вниз по середине.
Если у вас были параметры... "1, 0, 0" в конце, тогда он вращался бы как лопатка лодку. "Отпасть от тебя".
Наконец, если у вас есть "0, 0, 1", он будет вращаться, как колесико на экране.
Вы также можете комбинировать значения, т.е. иметь "0, 1, 1", чтобы применить поворот вокруг двух осей.
Строка w матрицы представляет собой перспективную проекцию. Вы когда-нибудь делали перспективный рисунок в школе, где вы ставили точку и рисовали линии из точки, а затем рисовали вещи, чтобы соответствовать этим линиям, чтобы дать ей перспективу? Ну значение m34 определяет, где находится эта точка, и поэтому обеспечивает перспективу. Установите его как -50, и вы увидите большую разницу.
Значение m34 относится к значению оси Z этой точки. Таким образом, точка помещается в (0, 0, -1/500)