日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四元数和欧拉角的相互转换

發布時間:2024/4/24 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四元数和欧拉角的相互转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

四元數轉歐拉角&歐拉角轉四元數程序:四元數轉歐拉角&歐拉角轉四元數程序。

?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include "stdafx.h"#include "math.h"#include<iostream>#include<string.h>using namespace std;void EulerAnglesToQuaternion(double roll, double yaw, double pitch) { ????double cosRoll,sinRoll,cosPitch,sinPitch,cosyaw,sinyaw,qw,qx,qy,qz;????cosRoll = cosf(roll * 0.5f); //z????sinRoll = sinf(roll * 0.5f);//z????cosyaw= cosf(yaw * 0.5f);//y????sinyaw = sinf(yaw * 0.5f);//y????cosPitch = cosf(pitch * 0.5f);//x????sinPitch = sinf(pitch * 0.5f);//x????qw = cosRoll * cosyaw* cosPitch + sinRoll * sinyaw * sinPitch;????qx = cosRoll * sinyaw * cosPitch + sinRoll * cosyaw * sinPitch;????qy = cosRoll * cosyaw * sinPitch - sinRoll * sinyaw * cosPitch;????qz = sinRoll * cosyaw * cosPitch - cosRoll * sinyaw * sinPitch; ????cout << "qw = " << qw << endl;????cout << "qx = " << qx << endl;????cout << "qy = " << qy << endl;????cout << "qz = " << qz << endl;}void QuaternionToEulerAngles(double qw, double qx, double qy, double qz) {????double roll, yaw, pitch;????roll = atan2f(2.f * (qw*qz + qx*qy), 1-2*(qz*qz+qx*qx)); //Z????yaw =? asinf(2.f * (qw*qx - qy*qz)); //Y????pitch =atan2f(2.f * (qw*qy + qz*qx), 1-2*(qy*qy+qx*qx));//X????cout << "roll = " << roll << endl;????cout << "yaw = " << yaw << endl;????cout << "pitch = " << pitch << endl;}int main(){????QuaternionToEulerAngles(0, 0.707106, 0.707106, 0);????EulerAnglesToQuaternion(1.5707,0,3.14159);????return 0;}</string.h></iostream>

二、Ctrl+F5執行

三、結果

總結

以上是生活随笔為你收集整理的四元数和欧拉角的相互转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。