陀螺儀操作攝相機,可以旋轉,但角度(軸)還不對

2021-09-25 20:04:30 字數 1348 閱讀 2484

可以旋轉,但角度(軸)還不對(x軸除外)

-(void)update:(cctime)time 

document* doc = [document shareddocument];

kmvec3 center = ;

kmvec3 eye = ;

kmvec3 up = ;

//kmvec3subtract(¢er, &eye, ¢er);

// 得到陀螺儀資料

float yaw = (float)(cc_radians_to_degrees(doc.motionmanager.devicemotion.attitude.yaw));

float pitch = (float)(cc_radians_to_degrees(doc.motionmanager.devicemotion.attitude.pitch));

float roll = (float)(cc_radians_to_degrees(doc.motionmanager.devicemotion.attitude.roll));

// 構建攝相機矩陣

kmmat4 cammat;

kmmat4identity(&cammat);

// 構建旋轉矩陣

kmquaternion vec4;

kmmat4 rotamat;

kmquaternionrotationyawpitchroll(&vec4, yaw, pitch, roll);

kmmat4rotationquaternion(&rotamat, &vec4);

// 構建平移矩陣

kmmat4 transmat;

kmmat4translation(&transmat, 0, 0, 100);

// 矩陣變換

kmmat4multiply(&cammat, &cammat, &rotamat);

kmmat4multiply(&cammat, &cammat, &transmat);

// 用最終的矩陣變換相應的點

kmvec3transform(¢er, ¢er, &cammat);

kmvec3transform(&up, &up, &cammat);

kmvec3transform(&eye, &eye, &cammat);

[cam seteyex:eye.x eyey:eye.y eyez:eye.z];

[cam setcenterx:center.x centery:center.y centerz:center.z];

[cam setupx:up.x upy:up.y upz:up.z];

}

陀螺儀的學習

從陀螺儀得到x y z三個角速度後就需要通過積分來得到角度,事實上,經過簡單的積分是得不到正確的角度的,更得不到尤拉角,在這裡說一下通過的runge kunta更新四元數,從而對角速度積分得到角度的過程。四元數能到快速的發展,得益於飛行器控制與導航的發展,要求更合理的描述剛體空間的運動,以便於計算機...

陀螺儀工作原理

陀螺儀是用來測量平衡和轉速的工具,在載體高速轉動的時候,陀螺儀始終要通過自我調節,使得轉子保持原有的平衡,這一點是如何做到的?帶著這個問題,我們來看一下這個古老而又神秘的裝置的工作原理。我把三個gimbal環用不同的顏色做了標記,底部三個軸向,rgb分別對應xyz。假設現在這個陀螺儀被放在一艘船上,...

陀螺儀工作原理

我們知道陀螺儀使用來測量平衡和轉速的工具,在載體高速轉動的時候,陀螺儀始終要通過自我調節,使得轉子保持原有的平衡,這一點是如何做到的?帶著這個問題,我們來看一下這個古老而又神秘的裝置的工作原理。我把三個gimbal環用不同的顏色做了標記,底部三個軸向,rgb分別對應xyz。假設現在這個陀螺儀被放在一...