libxr  1.0
Want to be the best embedded framework
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)
 复制构造函数 / Copy constructor
 
 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])
 乘以旋转矩阵 / Multiply by a rotation matrix
 
Positionoperator= (const Eigen::Matrix< Scalar, 3, 1 > &p)
 赋值运算符,将 Eigen 向量赋值给 Position / Assignment operator to assign an Eigen vector to Position
 
Positionoperator= (const Position &p)
 赋值运算符,将 Eigen 向量赋值给 Position / Assignment operator to assign an Eigen vector to Position
 
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
 赋值运算符,将另一个 Position 赋值给当前对象 / Assignment operator to assign another Position to 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 Positionoperator*= (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 Positionoperator/= (const Quaternion< Scalar > &q)
 逆四元数旋转并更新当前向量 / Apply inverse quaternion rotation and update the current vector
 
const Positionoperator/= (const Eigen::Matrix< Scalar, 3, 3 > &R)
 逆旋转矩阵变换并更新当前向量 / Apply inverse rotation matrix transformation and update the current vector
 
const Positionoperator/= (const Eigen::Quaternion< Scalar > &q)
 逆四元数变换并更新当前向量 / Apply inverse quaternion transformation and update the current vector
 
const Positionoperator*= (Scalar s)
 按标量缩放当前向量 / Scale the current vector by a scalar
 
const Positionoperator/= (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

复制构造函数 / Copy constructor

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

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

乘以旋转矩阵 / Multiply by a rotation matrix

Template Parameters
Rotation旋转矩阵类型 / Rotation matrix type
Parameters
R旋转矩阵 / Rotation matrix
Returns
旋转后的 Position / Rotated Position

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

赋值运算符,将另一个 Position 赋值给当前对象 / Assignment operator to assign another Position to this object

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

Definition at line 127 of file transform.hpp.

128 {
129 return R * (*this);
130 }

◆ 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 146 of file transform.hpp.

147 {
148 *this = R * (*this);
149 return *this;
150 }

◆ 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 203 of file transform.hpp.

204 {
205 *this = s * (*this);
206 return *this;
207 }

◆ 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 228 of file transform.hpp.

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

◆ 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 157 of file transform.hpp.

158 {
159 return (-R) * (*this);
160 }

◆ 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 180 of file transform.hpp.

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

◆ 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 192 of file transform.hpp.

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

◆ 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 168 of file transform.hpp.

169 {
170 *this = (-q) * (*this);
171 return *this;
172 }

◆ 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 214 of file transform.hpp.

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

◆ 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

赋值运算符,将 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 102 of file transform.hpp.

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

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