Files
XCEngine/docs/api/math/quaternion/quaternion.md
2026-03-20 02:35:15 +08:00

2.1 KiB
Raw Blame History

Quaternion

命名空间: XCEngine::Math

类型: struct

头文件: XCEngine/Math/Quaternion.h

描述: 四元数,用于表示三维旋转

概述

Quaternion 提供了一套完整的三维旋转表示和操作方法。四元数可以避免欧拉角的万向节锁问题并提供平滑的旋转插值Slerp

结构体成员

成员 类型 描述 默认值
x float X 分量 0.0f
y float Y 分量 0.0f
z float Z 分量 0.0f
w float W 分量(标量部分) 1.0f

公共方法

方法 描述
Identity 返回单位四元数
FromAxisAngle 从轴角创建四元数
FromEulerAngles 从欧拉角创建四元数
FromRotationMatrix 从旋转矩阵创建四元数
Slerp 球面线性插值
LookRotation 创建看向目标的旋转
ToEulerAngles 转换为欧拉角
ToMatrix4x4 转换为 4x4 矩阵
operator* 四元数乘法
Inverse 求四元数逆
Dot 点积
Magnitude 求模长
Normalized 返回归一化四元数
Normalize 归一化四元数(静态)

使用示例

#include <XCEngine/Math/Quaternion.h>
#include <XCEngine/Math/Vector3.h>
#include <XCEngine/Math/Math.h>

using namespace XCEngine::Math;

// 从欧拉角创建
Quaternion q1 = Quaternion::FromEulerAngles(0, Math::Radians(90.0f), 0);

// 从轴角创建
Quaternion q2 = Quaternion::FromAxisAngle(Vector3::Up(), Math::Radians(45.0f));

// 组合旋转
Quaternion combined = q1 * q2;

// 旋转向量
Vector3 rotated = q2 * Vector3::Forward();

// 球面插值
Quaternion result = Quaternion::Slerp(q1, q2, 0.5f);

相关文档