操作员对boost::la中的vec3做了什么?

操作员对boost::la中的vec3做了什么?,boost,Boost,我试图理解这段代码是如何工作的。这里,定义了向量θ,然后用于计算旋转矩阵 我不知道theta | Z语法是如何工作的。我猜它的功能类似于theta.z——但我无法确定boost源代码的哪个部分在做这件事。这是标准的boost语法吗 这方面的推进源如下: 如有任何提示/线索,将不胜感激 #include <boost/la/all.hpp> using namespace boost::la; typedef vec<double, 2> vec2; typedef vec

我试图理解这段代码是如何工作的。这里,定义了向量θ,然后用于计算旋转矩阵

我不知道
theta | Z
语法是如何工作的。我猜它的功能类似于
theta.z
——但我无法确定boost源代码的哪个部分在做这件事。这是标准的boost语法吗

这方面的推进源如下:

如有任何提示/线索,将不胜感激

#include <boost/la/all.hpp>
using namespace boost::la;
typedef vec<double, 2> vec2;
typedef vec<double, 3> vec3;
typedef vec<double, 33> mat33;

// Actual code
vec3 *theta = ...
mat33 R = rotz_matrix<3>(-*theta|Z) * roty_matrix<3>(*theta|X) * rotx_matrix<3>(*theta|Y);
#包括
使用名称空间boost::la;
typedef-vec-vec2;
typedef-vec-vec3;
typedef vec mat33;
//实际代码
向量3*θ=。。。
mat33 R=旋转矩阵(-*θ| Z)*旋转矩阵(*θ| X)*旋转矩阵(*θ| Y);
typedef vec mat33;
vec是在中定义的自定义结构

从那里的代码:

template <class T,int D>
                struct
                vec
                        {
                        T a[D];
模板
结构
vec
{
Tα[D];
因此T=类型的双精度 尺寸D=33

vec表示一个33个双精度的向量。它似乎被称为一个总共有33个元素的矩阵

// Actual code
mat33 R = rotz_matrix<3>(-*theta|Z) * roty_matrix<3>(*theta|X) * rotx_matrix<3>(*theta|Y);
//实际代码
mat33 R=旋转矩阵(-*θ| Z)*旋转矩阵(*θ| X)*旋转矩阵(*θ| Y);

这一点我仍在试图弄清楚。rotz_matrix()在哪里声明?

看起来它甚至不是boost。你至少可以去掉你实际引用的“la”库的名称吗?问题似乎是“对于
vec3
in,
操作符
做什么?”更新了问题标题。
// Actual code
mat33 R = rotz_matrix<3>(-*theta|Z) * roty_matrix<3>(*theta|X) * rotx_matrix<3>(*theta|Y);