2015-04-05 64 views
-1

我想了解这段代码如何工作。这里,矢量theta正在被定义,然后被用来计算旋转矩阵。运算符|是什么?对boost :: la中的vec3做些什么?

我无法弄清楚theta|Z语法是如何工作的。我的猜测是这样的,就像theta.z - 但我无法确定助推源的哪一部分正在做这件事。这是标准的boost语法吗?

该升压源是在这里:http://ci.boost.org/svn-trac/browser/sandbox/la/boost/la

任何提示/这个线索,将不胜感激。

#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); 
+0

看起来它甚至没有提升。你能否至少放下你实际指的“la”库的_name_?这个问题似乎是“操作符'在<库名称>中为'vec3'做了什么?” – sehe 2015-04-05 13:14:53

+0

更新了问题标题。 – 2015-05-14 10:29:52

回答

1
typedef vec<double, 33> mat33; 

VEC是http://ci.boost.org/svn-trac/browser/sandbox/la/boost/la/vec.hpp

定义从代码中有一个自定义的结构:

template <class T,int D> 
       struct 
       vec 
         { 
         T a[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); 

这个我还在试图弄清楚。 rotz_matrix()在哪里声明?