因此,假设您在3D空间中有一个带有6个面的简单骰子。 骰子由标准HTML元素制成,并转换为3D对象。起始位置始终相同,朝上1,左边2,朝着您3(视口)。
现在,您可以使用transform旋转骰子了:rotateX,rotateY,rotateZ。出于显而易见的原因,您只能将骰子每个方向旋转90度(以及负数)。现在,我必须使用哪种公式来计算最终结果。
小例子可以说:X = 3(270度),Y = 1(90度),Z = 2(180度)将导致掷3。
您是否看到其中涉及的任何逻辑,因为我似乎不太了解它。
答案 0 :(得分:0)
让我们将所有这些数字表示为一个对象:
const faces = { top: 1, left: 2, front: 3, bottom: 4, right: 5, back: 6 };
现在,例如,如果将其向右旋转,则可以交换涉及的面孔:
const rotateToLeft = prev => ({
top: prev.top,
left: prev.front,
front: prev.right,
bottom: prev.bottom,
right: prev.back,
back: prev.left
});
现在,您可以对每个方向进行操作,然后只要需要获得结果就旋转骰子即可:
let result = faces;
for(let turn = 0; turn < 4 + Math.floor((X % 360) / 90); turn++)
result = rotateToLeft(result);
// repeat for y and z