libxr
Embedded C++ framework for bare-metal, RTOS and Linux
Loading...
Searching...
No Matches
LibXR::Position< Scalar > Class Template Reference

三维空间中的位置向量 / 3D position vector More...

#include <transform.hpp>

Inheritance diagram for LibXR::Position< Scalar >:
[legend]
Collaboration diagram for LibXR::Position< Scalar >:
[legend]

Public Member Functions

 Position ()
 默认构造函数,初始化为 (0,0,0) / Default constructor initializing to (0,0,0)
 
 Position (Scalar x, Scalar y, Scalar z)
 构造函数,指定 x, y, z 坐标 / Constructor specifying x, y, z coordinates
 
 Position (const Eigen::Matrix< Scalar, 3, 1 > &p)
 从 Eigen 3x1 向量构造 / Constructs from an Eigen 3x1 vector
 
 Position (const Position &p)
 复制构造函数 / Copy constructor
 
template<typename T , std::enable_if_t< std::is_same< T, Scalar >::value||std::is_same< T, float >::value||std::is_same< T, double >::value, int > = 0>
 Position (const T(&data)[3])
 从 3 元素数组构造 / Constructs from a 3-element array
 
Position & operator= (const Eigen::Matrix< Scalar, 3, 1 > &p)
 赋值运算符,将 Eigen 向量赋值给 Position / Assignment operator to assign an Eigen vector to Position
 
Position & operator= (const Position &p)
 拷贝赋值运算符 / Copy assignment operator
 
template<typename Rotation , std::enable_if_t< std::is_same< Rotation, RotationMatrix< Scalar > >::value||std::is_same< Rotation, Eigen::Matrix< Scalar, 3, 3 > >::value||std::is_same< Rotation, Quaternion< Scalar > >::value||std::is_same< Rotation, Eigen::Quaternion< Scalar > >::value, int > = 0>
Eigen::Matrix< Scalar, 3, 1 > operator* (const Rotation &R) const
 返回旋转作用于当前向量的结果 R * p,不修改当前对象 / Returns the rotated vector R * p without modifying this object
 
template<typename Rotation , std::enable_if_t< std::is_same< Rotation, RotationMatrix< Scalar > >::value||std::is_same< Rotation, Eigen::Matrix< Scalar, 3, 3 > >::value||std::is_same< Rotation, Quaternion< Scalar > >::value||std::is_same< Rotation, Eigen::Quaternion< Scalar > >::value, int > = 0>
const Position & operator*= (const Rotation &R)
 旋转并更新当前向量 / Rotate and update the current vector
 
Eigen::Matrix< Scalar, 3, 1 > operator/ (const RotationMatrix< Scalar > &R) const
 旋转矩阵的逆变换 / Inverse transformation using a rotation matrix
 
const Position & operator/= (const Quaternion< Scalar > &q)
 逆四元数旋转并更新当前向量 / Apply inverse quaternion rotation and update the current vector
 
const Position & operator/= (const Eigen::Matrix< Scalar, 3, 3 > &R)
 逆旋转矩阵变换并更新当前向量 / Apply inverse rotation matrix transformation and update the current vector
 
const Position & operator/= (const Eigen::Quaternion< Scalar > &q)
 逆四元数变换并更新当前向量 / Apply inverse quaternion transformation and update the current vector
 
const Position & operator*= (Scalar s)
 按标量缩放当前向量 / Scale the current vector by a scalar
 
const Position & operator/= (Scalar s)
 按标量除法缩放当前向量 / Scale the current vector by dividing with a scalar
 
Eigen::Quaternion< Scalar > operator/ (const Position<> &p)
 计算从另一个 Position 到当前 Position 的旋转四元数 / Compute the quaternion rotation from another Position to the current Position
 

Detailed Description

template<typename Scalar>
class LibXR::Position< Scalar >

三维空间中的位置向量 / 3D position vector

该类基于 Eigen::Matrix<Scalar, 3, 1>,用于表示三维坐标中的位置,并支持基本的 旋转、缩放和转换运算。 This class extends Eigen::Matrix<Scalar, 3, 1> to represent a position in 3D space, supporting basic rotation, scaling, and transformation operations.

Template Parameters
Scalar数值类型(默认使用 DefaultScalar) / Numeric type (default: DefaultScalar)

Definition at line 38 of file transform.hpp.

Constructor & Destructor Documentation

◆ Position() [1/5]

template<typename Scalar >
LibXR::Position< Scalar >::Position ( )
inline

默认构造函数,初始化为 (0,0,0) / Default constructor initializing to (0,0,0)

Definition at line 45 of file transform.hpp.

45: Eigen::Matrix<Scalar, 3, 1>(0, 0, 0) {}

◆ Position() [2/5]

template<typename Scalar >
LibXR::Position< Scalar >::Position ( Scalar x,
Scalar y,
Scalar z )
inline

构造函数,指定 x, y, z 坐标 / Constructor specifying x, y, z coordinates

Parameters
xX 坐标 / X coordinate
yY 坐标 / Y coordinate
zZ 坐标 / Z coordinate

Definition at line 54 of file transform.hpp.

54: Eigen::Matrix<Scalar, 3, 1>(x, y, z) {}

◆ Position() [3/5]

template<typename Scalar >
LibXR::Position< Scalar >::Position ( const Eigen::Matrix< Scalar, 3, 1 > & p)
inline

从 Eigen 3x1 向量构造 / Constructs from an Eigen 3x1 vector

Parameters
pEigen 3x1 向量 / Eigen 3x1 vector

Definition at line 60 of file transform.hpp.

60: Eigen::Matrix<Scalar, 3, 1>(p) {}

◆ Position() [4/5]

template<typename Scalar >
LibXR::Position< Scalar >::Position ( const Position< Scalar > & p)
inline

复制构造函数 / Copy constructor

Parameters
p另一个 Position 实例 / Another Position instance

Definition at line 66 of file transform.hpp.

66: Eigen::Matrix<Scalar, 3, 1>(p) {}

◆ Position() [5/5]

template<typename Scalar >
template<typename T , std::enable_if_t< std::is_same< T, Scalar >::value||std::is_same< T, float >::value||std::is_same< T, double >::value, int > = 0>
LibXR::Position< Scalar >::Position ( const T(&) data[3])
inline

从 3 元素数组构造 / Constructs from a 3-element array

Template Parameters
T元素类型,可为 Scalar、float 或 double / Element type: Scalar, float or double
Parameters
data存储 (x, y, z) 的数组 / Array storing (x, y, z)

Definition at line 78 of file transform.hpp.

78 : Eigen::Matrix<Scalar, 3, 1>(data)
79 {
80 }

Member Function Documentation

◆ operator*()

template<typename Scalar >
template<typename Rotation , std::enable_if_t< std::is_same< Rotation, RotationMatrix< Scalar > >::value||std::is_same< Rotation, Eigen::Matrix< Scalar, 3, 3 > >::value||std::is_same< Rotation, Quaternion< Scalar > >::value||std::is_same< Rotation, Eigen::Quaternion< Scalar > >::value, int > = 0>
Eigen::Matrix< Scalar, 3, 1 > LibXR::Position< Scalar >::operator* ( const Rotation & R) const
inline

返回旋转作用于当前向量的结果 R * p,不修改当前对象 / Returns the rotated vector R * p without modifying this object

Template Parameters
Rotation旋转类型:RotationMatrix、Eigen 3x3 矩阵、Quaternion 或 Eigen 四元数 / Rotation type: RotationMatrix, Eigen 3x3 matrix, Quaternion or Eigen quaternion
Parameters
R旋转 / Rotation
Returns
旋转后的向量 / Rotated vector

Definition at line 129 of file transform.hpp.

130 {
131 return R * (*this);
132 }

◆ operator*=() [1/2]

template<typename Scalar >
template<typename Rotation , std::enable_if_t< std::is_same< Rotation, RotationMatrix< Scalar > >::value||std::is_same< Rotation, Eigen::Matrix< Scalar, 3, 3 > >::value||std::is_same< Rotation, Quaternion< Scalar > >::value||std::is_same< Rotation, Eigen::Quaternion< Scalar > >::value, int > = 0>
const Position & LibXR::Position< Scalar >::operator*= ( const Rotation & R)
inline

旋转并更新当前向量 / Rotate and update the current vector

Template Parameters
Rotation旋转类型,可为旋转矩阵、四元数等 / Rotation type (can be a rotation matrix, quaternion, etc.)
Parameters
R旋转矩阵或四元数 / Rotation matrix or quaternion
Returns
更新后的 Position / Updated Position object

Definition at line 148 of file transform.hpp.

149 {
150 *this = R * (*this);
151 return *this;
152 }

◆ operator*=() [2/2]

template<typename Scalar >
const Position & LibXR::Position< Scalar >::operator*= ( Scalar s)
inline

按标量缩放当前向量 / Scale the current vector by a scalar

Parameters
s缩放因子 / Scaling factor
Returns
更新后的 Position / Updated Position object

Definition at line 205 of file transform.hpp.

206 {
207 *this = s * (*this);
208 return *this;
209 }

◆ operator/() [1/2]

template<typename Scalar >
Eigen::Quaternion< Scalar > LibXR::Position< Scalar >::operator/ ( const Position<> & p)
inline

计算从另一个 Position 到当前 Position 的旋转四元数 / Compute the quaternion rotation from another Position to the current Position

Parameters
p参考 Position / Reference Position
Returns
旋转四元数 / Quaternion rotation

Definition at line 230 of file transform.hpp.

231 {
232 return Eigen::Quaternion<Scalar>::FromTwoVectors(p, *this);
233 }

◆ operator/() [2/2]

template<typename Scalar >
Eigen::Matrix< Scalar, 3, 1 > LibXR::Position< Scalar >::operator/ ( const RotationMatrix< Scalar > & R) const
inline

旋转矩阵的逆变换 / Inverse transformation using a rotation matrix

Parameters
R旋转矩阵 / Rotation matrix
Returns
变换后的向量 / Transformed vector

Definition at line 159 of file transform.hpp.

160 {
161 return (-R) * (*this);
162 }

◆ operator/=() [1/4]

template<typename Scalar >
const Position & LibXR::Position< Scalar >::operator/= ( const Eigen::Matrix< Scalar, 3, 3 > & R)
inline

逆旋转矩阵变换并更新当前向量 / Apply inverse rotation matrix transformation and update the current vector

Parameters
R旋转矩阵 / Rotation matrix
Returns
更新后的 Position / Updated Position object

Definition at line 182 of file transform.hpp.

183 {
184 *this = R.transpose() * Eigen::Map<const Eigen::Matrix<Scalar, 3, 1>>(this->data());
185 return *this;
186 }

◆ operator/=() [2/4]

template<typename Scalar >
const Position & LibXR::Position< Scalar >::operator/= ( const Eigen::Quaternion< Scalar > & q)
inline

逆四元数变换并更新当前向量 / Apply inverse quaternion transformation and update the current vector

Parameters
q四元数 / Quaternion
Returns
更新后的 Position / Updated Position object

Definition at line 194 of file transform.hpp.

195 {
196 *this = q.conjugate() * Eigen::Map<const Eigen::Matrix<Scalar, 3, 1>>(this->data());
197 return *this;
198 }

◆ operator/=() [3/4]

template<typename Scalar >
const Position & LibXR::Position< Scalar >::operator/= ( const Quaternion< Scalar > & q)
inline

逆四元数旋转并更新当前向量 / Apply inverse quaternion rotation and update the current vector

Parameters
q四元数 / Quaternion
Returns
更新后的 Position / Updated Position object

Definition at line 170 of file transform.hpp.

171 {
172 *this = (-q) * (*this);
173 return *this;
174 }

◆ operator/=() [4/4]

template<typename Scalar >
const Position & LibXR::Position< Scalar >::operator/= ( Scalar s)
inline

按标量除法缩放当前向量 / Scale the current vector by dividing with a scalar

Parameters
s缩放因子 / Scaling factor
Returns
更新后的 Position / Updated Position object

Definition at line 216 of file transform.hpp.

217 {
218 (*this)[0] /= s;
219 (*this)[1] /= s;
220 (*this)[2] /= s;
221 return *this;
222 }

◆ operator=() [1/2]

template<typename Scalar >
Position & LibXR::Position< Scalar >::operator= ( const Eigen::Matrix< Scalar, 3, 1 > & p)
inline

赋值运算符,将 Eigen 向量赋值给 Position / Assignment operator to assign an Eigen vector to Position

Parameters
pEigen 3x1 向量 / Eigen 3x1 vector
Returns
赋值后的 Position / Updated Position object

Definition at line 88 of file transform.hpp.

89 {
90 this->data()[0] = p[0];
91 this->data()[1] = p[1];
92 this->data()[2] = p[2];
93 return *this;
94 }

◆ operator=() [2/2]

template<typename Scalar >
Position & LibXR::Position< Scalar >::operator= ( const Position< Scalar > & p)
inline

拷贝赋值运算符 / Copy assignment operator

Parameters
p另一个 Position / Another Position object
Returns
赋值后的 Position / Updated Position object

Definition at line 101 of file transform.hpp.

102 {
103 if (this != &p)
104 {
105 this->data()[0] = p[0];
106 this->data()[1] = p[1];
107 this->data()[2] = p[2];
108 }
109
110 return *this;
111 }

The documentation for this class was generated from the following file: