SCNNode Вращение нескольких осей - PullRequest
0 голосов
/ 31 января 2019

Этот Вопрос был опубликован, но так и не получил ответа.

Аналогично Этот Вопрос , я пытаюсь понять SCNNode.rotation как четырехмерный вектор.Предыдущий вопрос использует пример, который манипулирует только 1 осью, то есть

SCNNode.rotation = (0, 0, 1, degToRad(45)) //Rotate about z-axis by 45 degrees

, что имеет смысл;однако, что, если я хотел повернуть ось X на 20 градусов, ось Y на 45 градусов, а затем ось Z на 78 градусов?

SCNNode.rotation = ??

Я бы предоставил код, который пробовал, но концептуально не понимаю понятия вектора вращения 4D.

1 Ответ

0 голосов
/ 31 января 2019

Каждый узел просто имеет преобразование с матрицей 4х4.Таким образом, все операции поворота отражаются в изменении преобразования.

В этом случае, если вы измените вращение, eulerAngles и ориентацию, вы должны получить одно и то же значение.

Если вращаться вокруг трех осей, я предложил использовать eulerAngles.

node.eulerAnges = SCNVector3(x:degToRad(20),y:degToRad(45), z:degToRad(78))

После того, как вы установите это, вернитесь и проверьте значение вращения:

SCNVector4(x: -0.16975601, y: 0.5943193, z: 0.786109, w: 1.448788)

Это означает, что есть осьпроходит через точку (-0,16975601, 0,5943193, 0,786109) и начало координат (0,0,0), и узел вращается вокруг нее на 1,448788 (82 градуса).

...