OSG四元数与欧拉角之间的转换
转换 之间 OSG 四元
2023-09-11 14:15:24 时间
osg::Quat HPRToQuat(double heading, double pitch, double roll) { osg::Quat q( roll, osg::Vec3d(0.0, 1.0, 0.0), pitch, osg::Vec3d(1.0, 0.0, 0.0), heading, osg::Vec3d(0.0, 0.0, 1.0)); return q; }
// Quat to HPR,pitch范围:[-PI/2, PI/2] void QuatToHPR(osg::Quat q, double& heading, double& pitch, double& roll) { double test = q.y() * q.z() + q.x() * q.w(); if (test > 0.4999) { // singularity at north pole heading = 2.0 * atan2(q.y(), q.w()); pitch = osg::PI_2; roll = 0.0; return; } if (test < -0.4999) { // singularity at south pole heading = 2.0 * atan2(q.y(), q.w()); pitch = -osg::PI_2; roll = 0.0; return; } double sqx = q.x() * q.x(); double sqy = q.y() * q.y(); double sqz = q.z() * q.z(); heading = atan2(2.0 * q.z() * q.w() - 2.0 * q.y() * q.x(), 1.0 - 2.0 * sqz - 2.0 * sqx); pitch = asin(2.0 * test); roll = atan2(2.0 * q.y() * q.w() - 2.0 * q.z() * q.x(), 1.0 - 2.0 * sqy - 2.0 * sqx); }
相关文章
- Android开发之数组和List之间的转换
- gcc下的一个VC汇编转换
- 将iso镜像转换为docker镜像
- ORACLE与SQLSERVER数据转换
- char*,wchar_t*,CString和BSTR之间的转换
- JAVA中list,set,数组之间的转换详解
- Java实现蓝桥杯单位转换
- 进制转换
- SQL Server日期与字符串之间的转换
- openpyxl 实现excel字母列号与数字列号之间的转换
- Android px、dp、sp之间相互转换
- Python - Python2与Python3的区别、转换与兼容
- 数学建模暑期集训实战:经纬度转换为平面坐标
- Qt音视频开发35-左右通道音量计算和音量不同范围值的转换
- Qt编写地图综合应用47-经纬度地址互相转换
- GO结构体之间的转换
- Scala可变数组和不可变数组之间相互转换
- VC句柄和指针之间的转换
- Atiitt 对象转换json 序列化规范 Java 循环引用的解决 设置序列化层次深度 去除不必的属性 太长不方便月度 jsonObject.remove("num1"); Prety fo
- 【项目实战】MapStruct实战篇,Java中如何实现HashMap和实体类之间的转换
- 使用FFmpeg进行mp4与m3u8之间转换
- 华为云推UGO:一手抓结构迁移,一手抓SQL转换
- Java8 stream().map()将对象转换为其他对象
- 【华为OD机试Python实现】HJ33 整数与IP地址间的转换(中等)
- 【华为机试 Python实现】HJ95 人民币转换(较难)
- json字符串、json对象、数组之间的转换
- Shell 脚本将字符串转换为数组
- 任意进制转换
- 【多样化图像转换】2、You Only Need Adversarial Supervision for Semantic Image Synthesis(OASIS)代码