Показать сообщение отдельно
Старый 31.05.2013, 23:26   #1
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Кватернион. Как определить угол вращения.

В общем есть у меня вектор который совпадает с осью игрек и есть вектор к которому я хочу повернуть некоторое количество точек чьи координаты при направляющем векторе по оси игрек мне известны.
Vector3 axis = new Vector3(1,1,1); //нужная ось
axis.Normalize();
Vector3 curAxis = new Vector3(0,1,0);//текущая ось
float angle Vector3.Angle(axis,curAxis);//угол между векторами
Vector3 newAxis Vector3.Cross(axis,curAxis);//ось вращения для квартерниона
newAxis*=Mathf.Sin(angle);
Quaternion magic = new Quaternion(newAxis.x,newAxis.y,newAxis.z,Mathf.Cos(angle));
...
vert[i*(width+1)+j] = magic pos
И в общем вращение происходит в нужной плоскости, но не на тот угол что мне нужен. От какого вектора в плоскости с нормалью совпадающей с осью вращения этот угол считать?
(Offline)
 
Ответить с цитированием