Глобальное вращение - PullRequest
       47

Глобальное вращение

7 голосов
/ 22 июня 2011

in GLScene у нас есть три параметра (RollAngle, PitchAngle и TurnAngle) для вращения вокруг локальной ориентации.на изображении ниже, как я могу вращать куб вокруг глобальной ориентации (оранжевая ось)?

enter image description here

Ответы [ 3 ]

7 голосов
/ 22 июня 2011

Вам необходимо преобразовать угол поворота оси в углы Эйлера. Вот ссылка, подробно объясняющая этот процесс с помощью кода:
http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToEuler/index.htm

Из статьи:

yaw   = atan2(y * sin(angle)- x * z * (1 - cos(angle)) 
                , 1 - (y2 + z2 ) * (1 - cos(angle)))   

pitch = asin(x * y * (1 - cos(angle)) + z * sin(angle))   

roll  = atan2(x * sin(angle)-y * z * (1 - cos(angle)) 
             , 1 - (x2 + z2) * (1 - cos(angle)))

РЕДАКТИРОВАТЬ: переименованы переменные в соответствии с соглашением по именам тангажа, рыскания, крена.

3 голосов
/ 23 июня 2011

Может быть, вы могли бы использовать объект "DummyCube" в качестве родителя.Затем вы можете вращать сначала куб внутри фиктивного куба, а затем куб кубика.

1 голос
/ 22 июня 2011

Это грязный чит, но если объект находится в начале координат (0,0,0) и в сцене только один объект, вы можете повернуть камеру (и источник света) вокруг объекта, а не вращатьпредмет.

...