可以旋轉,但角度(軸)還不對(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。假設現在這個陀螺儀被放在一...