vtk 矩阵管理系统

 vtkTransform* form = vtkTransform::New();
  form->Identity();//单位化
 
  form->RotateZ(45);
  
  sphere1->AddPosition(3.0, 0.0, 0.0);

  form->RotateZ(45);

  sphere1->SetUserTransform(form);

 

 

以上代码连续旋转两次45度,每次旋转都是沿着模型坐标系下,同时调整位置的函数都是最后生效。

究其原因,rotatez(45)生成一个沿着z轴旋转45度的矩阵,此矩阵表示原点为中心,(0, 0, 1)为轴的矩阵

同时addposition()生成的平移矩阵并不影响旋转矩阵,因此addposition()函数放的位置与最终结果无关。

即,以上代码等同于以下

 vtkTransform* form = vtkTransform::New();
  form->Identity();//单位化
 
  form->RotateZ(45);
  
 

  form->RotateZ(45);
 sphere1->AddPosition(3.0, 0.0, 0.0);
  sphere1->SetUserTransform(form);

 

 

 

原文地址:https://www.cnblogs.com/lizhengjin/p/1427604.html