三维切面(水平面、冠状面、矢状面)的几种操作

1.切面旋转
原理:围绕轴做角度变化。
eg:vtkResliceCursorLineRepresentation类,参考RotateAxis接口实现原理。

double vtkResliceCursorLineRepresentation::RotateAxis( double e[2], int axis )

2.中心移动
原理:指定方向做平移变化(切面焦点中心变化)。

newCenter[i] = this->StartCenterPosition[i] + intersectionPos[i] - this->StartPickPosition[i];

3.切面平移
原理:指定方向坐标变化。

//世界坐标系变化
if(i == 2)//做Z坐标改变
{				 
	newCenter[i] = this->StartCenterPosition[i] + intersectionPos[i] - this->StartPickPosition[i];
}
else
{
	newCenter[i] = this->StartCenterPosition[i];	
}
if(i == 1)//做Y坐标改变
{				 
	newCenter[i] = this->StartCenterPosition[i] + intersectionPos[i] - this->StartPickPosition[i];
}
else
{
	newCenter[i] = this->StartCenterPosition[i];	
}
if(i == 0)//做X坐标改变
{				 
	newCenter[i] = this->StartCenterPosition[i] + intersectionPos[i] - this->StartPickPosition[i];
}
else
{
	newCenter[i] = this->StartCenterPosition[i];	
}

4.滑动指定render区域,实现当前切面视图变化
原理:将变化方向坐标差值作用到视图切面坐标上。

iLen = intersectionPos[1] - this->StartPickPosition[1];//Y轴坐标变化差值
iLen = iLen > 0 ? iLen : (0 - iLen);//取变化量,不要负值
if(i == 2)//作用到Z轴上
{				 
	newCenter[i] = iLen;
}

一个关于三维切面的test demo效果图

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值