我正在尝试显示一个盒子的3D模型,该盒子应该根据一些实时读取的加速度计值旋转(向下是重力所在的位置)。
我有框,我可以使用rotate
,但是当新值出现时,我只能使用rotate
相对于框的当前位置进行旋转。有没有办法将旋转重置为默认值(0,0,0)或在Matlab中设置新的绝对旋转值?
这就是我现在所拥有的:
我尝试使用旧值和新值之间的差值,但错误太快了。
答案 0 :(得分:0)
rotate
会更改对象的实际数据,而不仅仅是对象的实际数据。因此,“重置”的唯一方法是保存用于生成对象的原始数据,然后使用
set(oh, 'Xdata', origXData)
set(oh, 'Ydata', origYData)
set(oh, 'Zdata', origZData)
其中oh
是对象的句柄。
另一种方法是不使用rotate
而是view
,它不会修改对象而只会修改视点。但是,对view
的调用不会改变相对于当前视点的观点,而只是绝对地。因此,您需要跟踪变量中的当前视点,根据加速度计读数对其进行修改,并设置新值。