我试图了解这段代码是如何工作的。这里,正在定义向量theta
,然后用它来计算旋转矩阵。
我无法弄清楚theta|Z
语法的工作原理。我的猜测是它像theta.z
那样 - 但我无法确定升压源的哪一部分正在做这件事。这是标准的增强语法吗?
此处的提升源位于: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 :(得分: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()声明在哪里?