2013-07-11 39 views
0

如何正確插入2個歐拉角與給定時間(或速度)之間?在給定時間內插歐拉角/旋轉矩陣

例如,我想實現一個簡單的眨眼,首先旋轉蓋子,然後再次。眨眼的時間應該在50到500毫秒之間。目前我簡單地計算出x值(對於向下):

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毫秒),認爲在70毫秒內向下280毫米/秒的峯值速度和打開眼瞼約100毫米/秒的功能將真的幫助我。

+0

我不清楚你實際上在這裏問什麼。你在問數學或代碼嗎? – doctorlove

+0

[旋轉矩陣之間的插值]的可能的重複(http://stackoverflow.com/questions/5580283/interpolating-between-rotation-matrices) – Ali

+0

即時通訊詢問代碼如何正確實現像閃爍給定的速度和持續時間眨眼間 – EBBLER

回答

0

我認爲這是3d?在這種情況下,使用四元數來表示您在空間中的方向。然後插值只是四元數的簡單插值。

+0

這應該如何幫助我?我問這個「簡單插值」與各自的持續時間和速度 – EBBLER

+0

因爲使用quats比試圖處理歐拉角更簡單,因爲所有的方向是相等的,而在歐拉角他們不是。 – joojaa