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);