publicstaticQuaternionToQ(Vector3v){returnToQ(v.y,v.x,v.z);}publicstaticQuaternionToQ(floatyaw,floatpitch,floatroll){yaw*=Mathf.Deg2Rad;pitch*=Mathf.Deg2Rad;roll*=Mathf.Deg2Rad;floatrollOver2=roll*0.5f;floatsinRollOver2=(float)Math.Sin((double)rollOver2);floatcosRollOver2=(float)Math.Cos((double)rollOver2);floatpitchOver2=pitch*0.5f;floatsinPitchOver2=(float)Math.Sin((double)pitchOver2);floatcosPitchOver2=(float)Math.Cos((double)pitchOver2);floatyawOver2=yaw*0.5f;floatsinYawOver2=(float)Math.Sin((double)yawOver2);floatcosYawOver2=(float)Math.Cos((double)yawOver2);Quaternionresult;result.w=cosYawOver2*cosPitchOver2*cosRollOver2+sinYawOver2*sinPitchOver2*sinRollOver2;result.x=cosYawOver2*sinPitchOver2*cosRollOver2+sinYawOver2*cosPitchOver2*sinRollOver2;result.y=sinYawOver2*cosPitchOver2*cosRollOver2-cosYawOver2*sinPitchOver2*sinRollOver2;result.z=cosYawOver2*cosPitchOver2*sinRollOver2-sinYawOver2*sinPitchOver2*cosRollOver2;returnresult;}publicstaticVector3FromQ2(Quaternionq1){floatsqw=q1.w*q1.w;floatsqx=q1.x*q1.x;floatsqy=q1.y*q1.y;floatsqz=q1.z*q1.z;floatunit=sqx+sqy+sqz+sqw;// if normalised is one, otherwise is correction factorfloattest=q1.x*q1.w-q1.y*q1.z;Vector3v;if(test>0.4995f*unit){// singularity at north polev.y=2f*Mathf.Atan2(q1.y,q1.x);v.x=Mathf.PI/2;v.z=0;returnNormalizeAngles(v*Mathf.Rad2Deg);}if(test<-0.4995f*unit){// singularity at south polev.y=-2f*Mathf.Atan2(q1.y,q1.x);v.x=-Mathf.PI/2;v.z=0;returnNormalizeAngles(v*Mathf.Rad2Deg);}Quaternionq=newQuaternion(q1.w,q1.z,q1.x,q1.y);v.y=(float)Math.Atan2(2f*q.x*q.w+2f*q.y*q.z,1-2f*(q.z*q.z+q.w*q.w));// Yawv.x=(float)Math.Asin(2f*(q.x*q.z-q.w*q.y));// Pitchv.z=(float)Math.Atan2(2f*q.x*q.y+2f*q.z*q.w,1-2f*(q.y*q.y+q.z*q.z));// RollreturnNormalizeAngles(v*Mathf.Rad2Deg);}staticVector3NormalizeAngles(Vector3angles){angles.x=NormalizeAngle(angles.x);angles.y=NormalizeAngle(angles.y);angles.z=NormalizeAngle(angles.z);returnangles;}staticfloatNormalizeAngle(floatangle){while(angle>360)angle-=360;while(angle<0)angle+=360;returnangle;}
Quaternion2Vector3
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén)策肝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肛捍,“玉大人,你說(shuō)我怎么就攤上這事之众∽竞粒” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵棺禾,是天一觀的道長(zhǎng)缀蹄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)膘婶,這世上最難降的妖魔是什么缺前? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮悬襟,結(jié)果婚禮上衅码,老公的妹妹穿的比我還像新娘。我一直安慰自己脊岳,他們只是感情好逝段,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著割捅,像睡著了一般惹恃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棺牧,一...
- 那天巫糙,我揣著相機(jī)與錄音,去河邊找鬼颊乘。 笑死参淹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乏悄。 我是一名探鬼主播浙值,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼檩小!你這毒婦竟也來(lái)了开呐?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筐付,沒(méi)想到半個(gè)月后卵惦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡瓦戚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年沮尿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片较解。...
- 正文 年R本政府宣布奸焙,位于F島的核電站瞎暑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏忿偷。R本人自食惡果不足惜金顿,卻給世界環(huán)境...
- 文/蒙蒙 一臊泌、第九天 我趴在偏房一處隱蔽的房頂上張望鲤桥。 院中可真熱鬧,春花似錦渠概、人聲如沸茶凳。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贮喧。三九已至,卻和暖如春猪狈,著一層夾襖步出監(jiān)牢的瞬間箱沦,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓疆前,卻偏偏與公主長(zhǎng)得像寒跳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竹椒,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 不支持上傳文件童太,所以就復(fù)制過(guò)來(lái)了。作者信息什么的都沒(méi)刪。對(duì)前端基本屬于一竅不通书释,所以沒(méi)有任何修改翘贮,反正用著沒(méi)問(wèn)題就...
- 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
- 我不能把世界送給你 我不能當(dāng)你忠實(shí)的犬仆 我能為你做的 就是離開(kāi) 盡早 也許你不明白我這樣的人 你在星光下 我是躲...
- 下午接到你的電話征冷,依然是銀鈴般的聲音择膝。你說(shuō)你要去做個(gè)手術(shù),日記本就留給我吧检激,你說(shuō)我愛(ài)寫(xiě)一些東西肴捉,就當(dāng)是素材吧!我大...