無知識 | 三無計劃

vtkMath 旋转向量

VTK 中有两个用以旋转向量的方法:

// 根据转轴与角度旋转
static void vtkMath::RotateVectorByWXYZ(const float v[3], const float q[4], float r[3]);
// 根据四元数旋转
static void vtkMath::RotateVectorByNormalizedQuaternion(const float v[3], const float q[4], float r[3]);

其中 v 是原向量,q 为参数向量,r 为旋转后向量。

其中根据转轴与角度旋转时,首先需要知道转轴向量 norm,并归一化。向量方向依据右手定则。然后指定转动角度 angle,构造转动参数 q:

float q[4] = {angle, norm[0], norm[1], norm[2]};

然后调用方法即可:

vtkMath::RotateVectorByWXYZ(v, q, r);