gtsam/geometry/Rot3.h
是 GTSAM 库中的一个头文件,定义了 Rot3
类,用于表示和操作三维旋转。以下是这个类的详细介绍:
1. Rot3
类
Rot3
类表示三维空间中的旋转,支持通过不同的表示方式来创建和处理旋转,例如旋转矩阵、四元数和欧拉角。
主要功能
- 旋转矩阵:可以从旋转矩阵创建
Rot3
对象。 - 四元数:支持通过四元数(用于避免万向节锁)来表示和操作旋转。
- 欧拉角:支持通过欧拉角来定义旋转。
- 旋转运算:支持旋转组合、旋转逆运算等。
主要成员函数
-
构造函数
Rot3(); // 默认构造函数,表示单位旋转
Rot3(const Matrix& R); // 从旋转矩阵创建
Rot3(const Quaternion& q); // 从四元数创建
Rot3(double roll, double pitch, double yaw); // 从欧拉角创建
- 旋转矩阵
Matrix matrix() const; // 返回 3x3 旋转矩阵
- 旋转组合
Rot3 combine(const Rot3& other) const; // 旋转组合
- 旋转逆
Rot3 inverse() const; // 返回旋转的逆
- 旋转应用
Point3 rotate(const Point3& p) const; // 应用旋转到点
示例代码
#include <gtsam/geometry/Rot3.h>
#include <iostream>
int main() {
// 创建一个绕z轴旋转45度的Rot3对象
gtsam::Rot3 rotation = gtsam::Rot3::Rz(45 * M_PI / 180.0); // 角度转弧度
// 输出旋转矩阵
std::cout << "Rotation Matrix:\n" << rotation.matrix() << std::endl;
// 应用旋转到一个点
gtsam::Point3 point(1, 0, 0);
gtsam::Point3 rotated_point = rotation.rotate(point);
std::cout << "Rotated Point:\n" << rotated_point.transpose() << std::endl;
return 0;
}
在这个示例中,创建了一个绕 z
轴旋转 45 度的 Rot3
对象,并展示了如何使用该对象来旋转一个点。