Кватернионы все еще имеют карданный замок - PullRequest
0 голосов
/ 10 марта 2011

Вместо углов Эйлера я перешел к кватернионам, чтобы представить и обработать вращение куба в 3D. Хотя это решило бы блокировку подвеса, я все еще испытываю эту проблему.

Мой код:

// p is the point to be rotated
// angles is a Vector3D representing the rotation angles

var xaxis = new Vector3D(1, 0, 0);
var yaxis = new Vector3D(0, 1, 0);
var zaxis = new Vector3D(0, 0, 1);

p = rotate(p, xaxis, angles.x);
p = rotate(p, yaxis, angles.y);
p = rotate(p, zaxis, angles.z);

Функции rotate взяты из http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Pseudo-code_for_rotating_using_a_quaternion_in_3D_space (переведено на JavaScript).

Полагаю, проблема в том, что я все еще использую порядок осей (x y z), что является основной проблемой блокировки карданного подвеса.

Как реализовать вращение кватерниона таким образом, чтобы решить проблему блокировки карданного подвеса?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Кватернионы не подвержены блокировке карданного подвеса, так что это не ваша проблема. Если твой углы x, y и z предназначены для представления чего-то вроде углов Эйлера, проблема более вероятно, что вы определяете xaxis, yaxis и zaxis относительно оригинала система координат. Но это не даст ожидаемых результатов, потому что после первого вращение вокруг оси, оси Y и Z не указывают в исходных направлениях больше, но следующие два поворота все еще привязаны к исходной координате система.

2 голосов
/ 05 сентября 2013

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

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

...