[Java] Calculer la valeur de l'angle formé par deux points donnés et l'axe des abscisse (3 oclock)

/**
 * 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


About the Author

Ted Marklor est un web designer, un web developer et un génie de la nature. Transcendant le web depuis bientôt 15 ans, Ted est une source d’inspiration et de conseil pour toute une génération de jeunes programmeurs. Le Web 2.0, c’est lui. Dans la vie, il aime aussi faire des avions en papier, s’inventer des pseudonymes et une vie de winner, et surtout parler de lui à la troisième personne. Ça se fait en ce moment sur les blogs…


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.