[Java] Calculer la valeur de l'angle formé par deux points donnés et l'axe des abscisse (3 oclock)
mardi 24 février 2009
/** * Retourne la valeur de l'angle en degrés formé entre a et b par rapport * à l'axe des abscisse */ public static double getAngleDegTrigo(Point2d origin, Point2d extremite) { if (origin.equals(extremite)) return 0; if (origin.x == extremite.x) { return (origin.y > extremite.y) ? 90 : 270; } else if (origin.y == extremite.y) { return (origin.x > extremite.x) ? 180 : 0; } else { Point p = new Point((int)origin.x+20, (int)origin.y); double alpha = getAngleRad(extremite, origin, p); if (extremite.x > origin.x && extremite.y > origin.y) { return Math.toDegrees(2 * Math.PI - alpha); } else if (extremite.x > origin.x && extremite.y < origin.y) { return Math.toDegrees(alpha); } else if (extremite.x < origin.x && extremite.y < origin.y) { return Math.toDegrees(alpha); } else if (extremite.x < origin.x && extremite.y > origin.y) { return Math.toDegrees(2 * Math.PI - alpha); } return -1; } }
Require: getAngleRad