public static Point2d getSegmentCenter(Point2d p1, Point2d p2) { return new Point2d( p1.x+(p2.x-p1.x)/2, p1.y+(p2.y-p1.y)/2 ); }
Tag - java
[Java] Calculer le milieu d'un segment à partir de deux points
mardi 24 février 2009
[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
[Java] Positionner un point sur une droite
lundi 23 février 2009
/** * 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
lundi 23 février 2009
/**
* 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'équation d'une droite à partir de deux points
lundi 23 février 2009
public static double[] lineEquation(Point2d p1, Point2d p2) {
if (p1.x == p2.x) return null;
double a = (p2.y-p1.y) / (p2.x-p1.x);
double b = p1.y - a * p1.x;
return new double[] { a, b };
}
page 3 de 5