设置绝对3D旋转是Matlab

时间:2013-12-26 13:45:01

标签: matlab 3d rotation

我正在尝试显示一个盒子的3D模型,该盒子应该根据一些实时读取的加速度计值旋转(向下是重力所在的位置)。

我有框,我可以使用rotate,但是当新值出现时,我只能使用rotate相对于框的当前位置进行旋转。有没有办法将旋转重置为默认值(0,0,0)或在Matlab中设置新的绝对旋转值?

这就是我现在所拥有的: enter image description here

我尝试使用旧值和新值之间的差值,但错误太快了。

1 个答案:

答案 0 :(得分:0)

rotate会更改对象的实际数据,而不仅仅是对象的实际数据。因此,“重置”的唯一方法是保存用于生成对象的原始数据,然后使用

等调用重新设置这些数据
set(oh, 'Xdata', origXData)
set(oh, 'Ydata', origYData)
set(oh, 'Zdata', origZData)

其中oh是对象的句柄。

另一种方法是不使用rotate而是view,它不会修改对象而只会修改视点。但是,对view的调用不会改变相对于当前视点的观点,而只是绝对地。因此,您需要跟踪变量中的当前视点,根据加速度计读数对其进行修改,并设置新值。