2015-07-12 4 views
0

Я вращаю куб через серию поворотов на 90 градусов с использованием кватернионов, и я хочу иметь возможность получить относительное положение кватернионов после поворота по сравнению с его исходным положением, которое у меня есть сохраняются.Найти относительное положение осей куба после вращения

IE Я хотел бы знать, какая ось теперь эквивалентна исходной оси х (и, если он перевернут), и так далее ...

Я использую threejs, но я уверен, это не обязательно для ответа.

+1

ли вы имеете в виду это? 'var dir = new THREE.Vector3 (1, 0, 0); dir.applyQuaternion (q1); dir.applyQuaternion (q2); ... ' – WestLangley

+0

О, дерьмо, конечно, было бы так легко. Вы имеете в виду, просто сделайте вектор для каждой оси и поверните его вместе с кватернионом, верно? – dougalg

+0

Так выглядит, если я это сделаю, тогда я могу просто проверить, какая часть вектора равна 1 или -1, чтобы определить, какая ось эквивалентна. Большое спасибо. Если вы сделаете это aswer, я приму это. – dougalg

ответ

1

Используйте этот шаблон, чтобы определить направление, на которое указывает ось X после применения серии поворотов.

var dir = new THREE.Vector3(1, 0, 0); 
dir.applyQuaternion(q1); 
dir.applyQuaternion(q2); // etc... 

Чтобы увидеть его визуально, вы можете добавить оси в качестве ребенка вашей кубической сетки. Оси будут автоматически повернуты.

var axes = new THREE.AxisHelper(100); 
mesh.add(axes); 

Three.js R.71

+0

Спасибо, я только что закончил пробовать, и кажется, что он работает нормально, если есть одно вращение, но когда есть сложные вращения по разным осям, они перепутались. Я сделал быструю скрипку, чтобы показать, с чем я работаю, используйте клавиши со стрелками, чтобы повернуть окно. И вы увидите предупреждение о результатах, и вы можете сравнить это с визуальным. https://jsfiddle.net/dzvjf36a/ – dougalg

+0

Я принимаю это, но по какой-то причине мне пришлось инвертировать кватернион, чтобы он работал, я предполагаю, что это причуда моей реализации. – dougalg

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