Articles

[Java] Positionner un point sur une droite

/**
 * Permet de recuperer un point sur une droite (origin;extremite)
 * à distance length du point origin.
 */
public static Point2d getPointOnLine(Point2d origin, Point2d extremite, double length) {
	Vector2d vec = vector(origin, extremite);
	vec.normalize();
	vec.scale(length);
	vec.add(origin);
	return new Point((int)vec.x, (int)vec.y);
}

public static Vector2d vector(Point2d a, Point2d b) {
	return new Vector2d(
			b.x-a.x,
			b.y-a.y
	);
}

[Java] Calculer les coordonnées d'un point sur un cercle en fonction du centre du cercle, du rayon et de la valeur de l'angle

/**
* Retourne les coordonnées d'un point sur un cercle.
* L'angle est exprimé en sens horaire.
*
* @param center Le centre du cercle
* @param angleDeg L'angle (en degres)
* @param radius Le rayon (en pixel)
* @return Le point après le calcule de projection.
*/
public static Point2d getCircleIntersection(Point2d center, double angleDeg, double radius) {
radius = Math.abs(radius);
double angleRad = Math.toRadians(angleDeg);

double x = (center.getX() + radius * Math.cos(angleRad));
double y = (center.getY() + radius * Math.sin(angleRad));

return new Point2d(x, y);
}

[Java] Calculer l'angle formé par trois points

	/**
* Retourne la valeur de l'angle formé par les points [a,origine,c]
* Cette methode retourne une valeur entre [0;PI], donc il s'agit toujours
* du plus petit angle formé par ces trois points.
*/
public static double getAngleRad(Point2d a, Point2d origine, Point2d c) {

Vector2d v1 = vector(a, origine);
Vector2d v2 = vector(c, origine);

double cosA = v1.dot(v2) / v1.length() / v2.length();

double aRad = Math.acos(cosA);

return aRad;
}

public static Vector2d vector(Point2d a, Point2d b) {
return new Vector2d(
b.x-a.x,
b.y-a.y
);
}

[Java] Dessiner un cercle

/**
* Dessiner un cercle dans le graphique g, dont le centre est placé à xCenter,yCenter et
* de rayon r.
*
* @param g Le graphique où dessiner
* @param xCenter Coordonnées en abscisse du centre du cercle
* @param yCenter Coordonnées en abscisse du centre du cercle
* @param r Le rayon du cercle (en pixel)
*/
public static void drawCircle(Graphics g, int xCenter, int yCenter, int r) {
g.drawOval(xCenter-r, yCenter-r, 2*r, 2*r);
}

page 17 de 22