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

124 {
125 return R * (*this);
126 }

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

143 {
144 *this = R * (*this);
145 return *this;
146 }

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

200 {
201 *this = s * (*this);
202 return *this;
203 }

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

225 {
226 return Eigen::Quaternion<Scalar>::FromTwoVectors(p, *this);
227 }

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

154 {
155 return (-R) * (*this);
156 }

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

177 {
178 *this = R.transpose() * Eigen::Map<const Eigen::Matrix<Scalar, 3, 1>>(this->data_);
179 return *this;
180 }

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

189 {
190 *this = q.conjugate() * Eigen::Map<const Eigen::Matrix<Scalar, 3, 1>>(this->data_);
191 return *this;
192 }

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

165 {
166 *this = (-q) * (*this);
167 return *this;
168 }

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

211 {
212 (*this)[0] /= s;
213 (*this)[1] /= s;
214 (*this)[2] /= s;
215 return *this;
216 }

◆ 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 memcpy(this->data(), p.data(), 3 * sizeof(Scalar));
91 return *this;
92 }

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

101 {
102 if (this != &p)
103 {
104 memcpy(this->data(), p.data(), 3 * sizeof(Scalar));
105 }
106
107 return *this;
108 }

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