【VTK】vtk actor空间变换后的点映射与向量映射

本文介绍了在VTK中如何进行3D空间的复杂操作,如绕Y轴和自身X轴旋转平面,并沿特定向量移动。通过vtkActor的变换函数,结合vtkRenderWindowInteractor获取的光标坐标来计算平移向量和旋转角度。强调了在计算平面原点和法向量时避免使用同一vtkTransform对象,以防结果错误。
摘要由CSDN通过智能技术生成

在三维空间中,人们通常需要对平面等形体进行旋转,拖拽等操作。比如下面的过程:

  1. 将平面绕平面的Y轴旋转一定角度
  2. 将其绕平面自身的X轴旋转一定角度
  3. 将平面向向量方向(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的向量夹角。
如此可知,每一次运动,都需要知道平面中心点或者平面的法向量。同时,在一次运动结束之后,平面中心点或者平面法向量都应该更新。
在文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值