ui设计方向网站建设目标,泉州教育网站,小语种外贸网站建设,仿锤子 wordpress1. 概述
QQuaternion 是 Qt 中用于表示三维空间中旋转的四元数类。它包含一个标量部分和一个三维向量部分#xff0c;可以用来表示旋转操作。四元数在计算机图形学中广泛用于平滑的旋转和插值。
2. 重要方法 默认构造函数 QQuaternion::QQuaternion(); // 构造单位四元数 (1…1. 概述
QQuaternion 是 Qt 中用于表示三维空间中旋转的四元数类。它包含一个标量部分和一个三维向量部分可以用来表示旋转操作。四元数在计算机图形学中广泛用于平滑的旋转和插值。
2. 重要方法 默认构造函数 QQuaternion::QQuaternion(); // 构造单位四元数 (1, 0, 0, 0) 从标量和向量构造 QQuaternion::QQuaternion(float scalar, const QVector3D vector); // 从标量和向量构造四元数
QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos); // 从标量和三个坐标构造四元数 从 QVector4D 构造 QQuaternion::QQuaternion(const QVector4D vector); // 从 QVector4D 构造四元数
基本操作 共轭 QQuaternion QQuaternion::conjugated() const; // 返回四元数的共轭 点积 static float QQuaternion::dotProduct(const QQuaternion q1, const QQuaternion q2); // 返回两个四元数的点积 从轴和角度构造 static QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D axis, float angle); // 从轴和角度构造四元数
static QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle); // 从轴和角度构造四元数 归一化 void QQuaternion::normalize(); // 归一化四元数
QQuaternion QQuaternion::normalized() const; // 返回归一化的四元数 旋转向量 QVector3D QQuaternion::rotatedVector(const QVector3D vector) const; // 旋转一个向量 设置和获取分量 void QQuaternion::setScalar(float scalar); // 设置标量部分
void QQuaternion::setVector(const QVector3D vector); // 设置向量部分
float QQuaternion::scalar() const; // 获取标量部分
QVector3D QQuaternion::vector() const; // 获取向量部分
转换 欧拉角 void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const; // 获取欧拉角
QVector3D QQuaternion::toEulerAngles() const; // 返回欧拉角 旋转矩阵 QMatrix3x3 QQuaternion::toRotationMatrix() const; // 转换为旋转矩阵 四元数到 QVector4D QVector4D QQuaternion::toVector4D() const; // 转换为 QVector4D
其他 长度 float QQuaternion::length() const; // 返回四元数的长度
float QQuaternion::lengthSquared() const; // 返回四元数的长度平方 检查 bool QQuaternion::isIdentity() const; // 检查是否为单位四元数
bool QQuaternion::isNull() const; // 检查是否为零四元数 插值 static QQuaternion QQuaternion::slerp(const QQuaternion q1, const QQuaternion q2, float t); // 球面线性插值
static QQuaternion QQuaternion::nlerp(const QQuaternion q1, const QQuaternion q2, float t); // 归一化线性插值
运算符重载 乘法 QQuaternion QQuaternion::operator*(float factor); // 乘以标量
QQuaternion QQuaternion::operator*(const QQuaternion quaternion); // 乘以另一个四元数 加法 QQuaternion QQuaternion::operator(const QQuaternion quaternion); // 加法 减法 QQuaternion QQuaternion::operator-(const QQuaternion quaternion); // 减法 除法 QQuaternion QQuaternion::operator/(float divisor); // 除以标量
#include QCoreApplication
#include QQuaternion
#include QVector3D
#include QDebugint main(int argc, char *argv[]) {QCoreApplication app(argc, argv);// 构造一个四元数QQuaternion quaternion(0.7071, 0.7071, 0.0, 0.0);// 归一化四元数quaternion.normalize();// 获取四元数的标量和向量部分float scalar quaternion.scalar();QVector3D vector quaternion.vector();qDebug() Scalar: scalar;qDebug() Vector: vector;// 旋转一个向量QVector3D originalVector(1.0, 0.0, 0.0);QVector3D rotatedVector quaternion.rotatedVector(originalVector);qDebug() Original Vector: originalVector;qDebug() Rotated Vector: rotatedVector;// 转换为欧拉角QVector3D eulerAngles quaternion.toEulerAngles();qDebug() Euler Angles: eulerAngles;return app.exec();
} 觉得有帮助的话打赏一下呗。。 需要商务合作定制程序的欢迎私信