c++ gtsam/geometry/Rot3.h详细介绍

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 对象,并展示了如何使用该对象来旋转一个点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值