本文主要是介绍【VTK】vtk actor空间变换后的点映射与向量映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在三维空间中,人们通常需要对平面等形体进行旋转,拖拽等操作。比如下面的过程:
- 将平面绕平面的Y轴旋转一定角度
- 将其绕平面自身的X轴旋转一定角度
- 将平面向向量方向(1, 2, 3)移动一段距离。
这样复杂的操作通常需要我们使用vtkActor提供的操作函数:
void vtkProp3D::RotateY (double angle)
void vtkProp3D::RotateX (double angle)
void vtkProp3D::AddPosition (double deltaX,double deltaY,double deltaZ)
控制运动的接口我们找到了,但是传入的参数还需要认真思考如何计算。
通常,我们是在事件中计算位置移动向量,或者旋转角度,这里就需要用到vtkRenderWindowInteractor提供的GetEventPosition和GetLastEventPosition函数。他们帮助我们计算Display坐标系的光标坐标值。
平移向量是向量 GetEventPosition => GetLastEventPosition 在平面法向量上的投影。
旋转角度则是 planeOrigin => GetLastEventPosition 与 planeOrigin => GetEventPosition的向量夹角。
如此可知,每一次运动,都需要知道平面中心点或者平面的法向量。同时,在一次运动结束之后,平面中心点或者平面法向量都应该更新。
在文章
这篇关于【VTK】vtk actor空间变换后的点映射与向量映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!