Нормализация угла в заданном диапазоне – это приведение угла, выходящего за границы диапазона, к углу в указанном диапазоне. При это угол должен оставаться «визуально» таким же.
Для диапазона от 0 до 360 градусов код будет следующим:
public static double normalize360(double angle) { angle = angle % 360; if (angle < 0) { angle = angle + 360; } return angle; }
А для нормализации угла в диапазоне от -180 до 180 градусов можно использовать следующий код:
public static double normalize180(double angle) { if (angle == 180) { return angle; } angle = (angle + 180) % 360; if (angle < 0) { angle = angle + 360; } return angle - 180; }
Исходный код
public class NormalizeAngle { public static void main(String[] args) { System.out.println(normalize360(360)); // 0 System.out.println(normalize360(380)); // 20 System.out.println(normalize360(-20)); // 340 System.out.println(); System.out.println(normalize180(180)); // 180 System.out.println(normalize180(380)); // 20 System.out.println(normalize180(-200)); // 20 } public static double normalize360(double angle) { angle = angle % 360; if (angle < 0) { angle = angle + 360; } return angle; } public static double normalize180(double angle) { if (angle == 180) { return angle; } angle = (angle + 180) % 360; if (angle < 0) { angle = angle + 360; } return angle - 180; } }
Нормализация угла в диапазоне 0-360 градусов