2013-07-11 6 views
0

Как правильно интерполировать между двумя углами эйлера с заданным временем (или скоростью)?Интерполирующие углы эйлеров/матрицы вращения с заданным временем

Например, я хочу реализовать простой мигание, сначала повернув крышки, а затем снова. Время мигания должно составлять от 50 до 500 мс. На данный момент я просто вычислить й значение (вниз):

Eigen::Vector3f rotateLeftLidDown(float step) 
{ 
return Eigen::Vector3f(-step*COMPLETE_CLOSURE,0,0); 
} 


//INTERPOLATION 
float duration =gen_random_float(0.05f,0.5f); 
    for(float i=0;i<1;i=i+(duration)) 
{ 
LeftLid.push_back(rotateLeftLidDown(i)); 
} 

for(float i=1;i>0;i=i-(duration)) 
    { 
    LeftLid.push_back(rotateLeftLidUp(i)); 
    } 

Каждого этап вычисление позже выскочил из мешка и применяется к узлам со скоростью 100hertz .. этот подход может мигать быстро или медленно , но это просто не кажется правильным. Я не считаю скорость век, а также «интерполяция» здесь действительно грязная ... лучше ли преобразовывать эйлер в кватернионы или матрицы вращения?

Функция, подобная миганию (500 мс), которая считает максимальную скорость для 280 мм/с в течение 70 мс и открывать веко с примерно 100 мм/с, действительно поможет мне.

+0

Я не совсем понимаю, о чем вы на самом деле спрашиваете здесь. Вы спрашиваете о математике или коде? – doctorlove

+0

Возможный дубликат [Интерполирование между матрицами вращения] (http://stackoverflow.com/questions/5580283/interpolating-between-rotation-matrices) – Ali

+0

im спрашивает о коде, как правильно реализовать что-то вроде мигания с заданной скоростью и продолжительностью of blink – EBBLER

ответ

0

Я предполагаю, что это 3d? В этом случае используйте кватернионы, чтобы представить свою ориентацию в пространстве. Тогда интерполяция - это просто простая интерполяция кватернионов.

+0

как это должно мне помочь? im спрашивая об этой «простой интерполяции» с соответствующей длительностью и скоростью – EBBLER

+0

Поскольку использование кватов проще, чем пытаться справиться с углами Эйлера, так как все направления равны, тогда как в углах эйлеров они не являются. – joojaa

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