使用QQuaternion对Qt Data Visualization中模型进行旋转

在Data Visualization中,三维显示的OBJ需要旋转时使用rotation属性,但是该属性传入的值是一个四元数QQuaternion,直接赋值四元数很复杂,因此使用转化的方式获得该旋转四元数。

Data Visualization中横坐标为X(经度),纵坐标为Z(纬度),竖坐标为Y(高度),如图:

QQuaternion中提供了由欧拉坐标转为四元数的方法:

[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)

其中pitch,yaw,roll传入值为度(0-360)该值表示模型相对于对应坐标轴的旋转角度,旋转顺序为:

Z->X->Y。

但使用欧拉坐标系时,不同的旋转轴会引起不同的效果,例如先转X轴90°再转Z轴90°的效果和先转Z轴90°再转X轴90°的效果是不一样的。该方法个人认为较为适用于界面交互时操纵模型旋转角度。

 

QQuaternion中提供了由空间矢量转为四元数的方法:

[static] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)

该函数计算一个原点发出的矢量到另一个原点发出的矢量的最小旋转四元数,计算的坐标系为标准正交坐标系,而Data Visualization中显示的不一定是标准间隔的,这里需要注意。

其中要注意的是,Data Visualization中Z轴方向与QQuaternion传入点的Z轴方向相反,需要取反操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵叫的猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值