我该怎么扭转这个?

时间:2014-07-30 18:15:43

标签: java reverse

我有这段代码:

public static final BlockFace[] axis = {BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST};
public static final BlockFace[] radial = {BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST};

public static BlockFace yawToFace(float yaw, boolean useSubCardinalDirections) {
    if (useSubCardinalDirections) {
        return radial[Math.round(yaw / 45f) & 0x7];
    } else {
        return axis[Math.round(yaw / 90f) & 0x3];
    }
}

我如何才能在有效的事情上扭转这种局面?我可以想到一些蛮力的方式,但它们似乎非常低效。

所以,我所拥有的是yawToFace()方法,我想创建一个faceToYaw()方法。

任何帮助都会非常感激。 谢谢! :)

1 个答案:

答案 0 :(得分:3)

我认为将度数存储在BlockFace枚举中是完全可以接受的。否则,您需要搜索数组,找到匹配的索引,然后乘以45或90。