Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Вращение трехгранника вокруг своих осей


Автор: shtuceron 14.2.2010, 15:26
Добрый день, можете исправить мою ошибкую.
Имеется трехгранник, необходимо смоделировать вращение вокруг его осей для различных углов, к примеру если я осуществляю поворот вокруг оси X меняются положения осей Y и Z, при вращении вокруг оси  Y (уже измененной) меняются X и Z и т. д.

Для осуществления этого алгоритма я ввожу матрицу и выделяю из неё три компоненты Up, Right, Backward, связанные с этим трехгранником и произвожу вращения вокруг этих осей.

Matrix m = Matrix.Identity;

m *= Matrix.CreateFromAxisAngle(m.Right, angle1);
m *= Matrix.CreateFromAxisAngle(m.Up, angle2);
m *= Matrix.CreateFromAxisAngle(m.Backward, angle3);

+ имеются визуализированные оси которые нужно поворачивать
Пишу на XNA создаю basicEffect, передаю в него world * m * view * projection, angle1, angle2, angle3 меняются с помощью стандартных компонентов (numericUpDown).

Так вот, если изменять углы последовательно все нормально, но если произвольно происходит каша (ощущение что вращение происходит относительно векторов (1,0,0), (0,1,0), (0,0,1)), в чем может быть проблема?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)