我在Three.js制作了一个魔方。一个小问题是由于累积的四舍五入错误,碎片逐渐漂移到位。因此,在每次完成90°转弯后,我想将它移动到完全它应该在哪里。
这个地方定义明确。所有坐标应舍入为整数,所有方向应指向X,Y或Z轴。但我不确定如何正确/安全地做到这一点。
如果obj.position
为(0.99999,0,0.00002),则很容易将其移动到(1,0,0)。但是后来有obj.matrix
,obj.matrixWorld
,obj.quaternion
,obj.rotation
以及其他几个,我不知道所有这些是如何相互作用以及可以做什么安全的。
有没有通用的方法来做到这一点?
答案 0 :(得分:1)
Math.floor()
可以帮助您进行四舍五入。
可能使事情变得更简单的一种方法是不要定位碎片并仅旋转它们(相对于立方体的中心)。您需要先将几何体定位到位,但不要改变旋转中心,最简单的方法可能是:
geometry.applyMatrix( new THREE.Matrix4().makeTranslation(x, y, z) );