2015-04-05 113 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()在哪裏聲明?