zoukankan      html  css  js  c++  java
  • OSG四元数与欧拉角之间的转换

    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); }
  • 相关阅读:
    flex
    导航守卫 -vue
    H5 History
    JSX -react
    插槽slot -vue
    js 模拟鼠标绘制方块
    js 模拟滚动条
    js 实现简易留言板功能
    js 实现端口列表话
    js 为数组编写该方法;indexOf
  • 原文地址:https://www.cnblogs.com/coolbear/p/6419485.html
Copyright © 2011-2022 走看看