VTK笔记——空间几何变换(Transform),平移、旋转和缩放
其中注意,在进行旋转和缩放操作时,都需要先将该polydata整体平移回它的中心位置,然后再进行旋转和缩放操作,最后再将其移回到原来的位置处。
vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
box->GetPolyData(polyData);
Point3D centerPoint(polyData->GetPoints()->GetPoint(14));//最后一个点是中心点,一共15个点;围绕中心轴旋转一个弧度
transform->Translate(centerPoint.x, centerPoint.y, centerPoint.z);//旋转和缩放都是围绕原点进行的,所以旋转需要先把坐标原点设置到物体中心
transform->RotateY(angle);//这个变换第二步:将物体绕Y轴旋转一个角度angle
transform->Translate(-centerPoint.x, -centerPoint.y, -centerPoint.z);//旋转完毕,需要把坐标原点放回原处
box->SetTransform(transform);//立方体空间位置变换