我有这段代码:
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()方法。
任何帮助都会非常感激。 谢谢! :)
答案 0 :(得分:3)
我认为将度数存储在BlockFace枚举中是完全可以接受的。否则,您需要搜索数组,找到匹配的索引,然后乘以45或90。