У меня есть этот код:
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().
Любая помощь будет очень признательна. Спасибо! :)
Я думаю, что сохранение степеней в перечислении BlockFace было бы вполне приемлемым. В противном случае вам нужно будет искать массивы, найти соответствующий индекс, а затем умножить на 45 или 90.
BlockFace
значениям, соответствующим каждому BlockFace
означает, что вы можете просто выполнить простую приведение типов, чтобы получить угол. +1