org.deegree_impl.model.resources
Class Geometry

java.lang.Object
  extended byorg.deegree_impl.model.resources.Geometry

public final class Geometry
extends java.lang.Object

Static utilities methods. Those methods operate on geometric shapes from the java.awt.geom package.

Version:
1.0
Author:
Martin Desruisseaux

Field Summary
private static double EPS
          Valeur limite pour détecter si des points sont colinéaires ou si des coordonnées sont identiques.
static int HORIZONTAL
          Constante pour les calculs de paraboles.
static int PARALLEL
          Constante pour les calculs de paraboles.
 
Constructor Summary
private Geometry()
          Interdit la création d'objets de cette classe.
 
Method Summary
static java.awt.geom.Point2D circleCentre(double x1, double y1, double x2, double y2, double x3, double y3)
          Retourne la coordonnée centrale d'un cercle passant pas les trois points spécifiés.
static java.awt.geom.Point2D colinearPoint(double x1, double y1, double x2, double y2, double x, double y, double distance)
          Retourne le point sur le segment de droite (x1,y1)-(x2,y2) qui se trouve à la distance distance spécifiée du point point.
static java.awt.geom.Point2D colinearPoint(java.awt.geom.Line2D line, java.awt.geom.Point2D point, double distance)
          Retourne le point sur le segment de droite line qui se trouve à la distance distance spécifiée du point point.
static java.awt.geom.Ellipse2D fitCircle(java.awt.geom.Point2D P1, java.awt.geom.Point2D P2, java.awt.geom.Point2D P3)
          Retourne un cercle qui passe par chacun des trois points spécifiés.
static java.awt.geom.QuadCurve2D fitParabol(double x0, double y0, double x1, double y1, double x2, double y2, int orientation)
          Retourne une courbe quadratique passant par les trois points spécifiés.
static java.awt.geom.QuadCurve2D fitParabol(java.awt.geom.Point2D P0, java.awt.geom.Point2D P1, java.awt.geom.Point2D P2, int orientation)
          Retourne une courbe quadratique passant par les trois points spécifiés.
static java.awt.geom.Point2D intersectionPoint(double ax1, double ay1, double ax2, double ay2, double bx1, double by1, double bx2, double by2)
          Retourne le point d'intersection de deux segments de droites.
static java.awt.geom.Point2D intersectionPoint(java.awt.geom.Line2D a, java.awt.geom.Line2D b)
          Retourne le point d'intersection de deux segments de droites.
static java.awt.geom.Point2D nearestColinearPoint(double x1, double y1, double x2, double y2, double x, double y)
          Retourne le point sur le segment de droite (x1,y1)-(x2,y2) qui se trouve le plus près du point (x,y) spécifié.
static java.awt.geom.Point2D nearestColinearPoint(java.awt.geom.Line2D segment, java.awt.geom.Point2D point)
          Retourne le point sur le segment de droite line qui se trouve le plus près du point point spécifié.
static java.awt.geom.Point2D parabolicControlPoint(double x0, double y0, double x1, double y1, double x2, double y2, int orientation, java.awt.geom.Point2D dest)
          Retourne le point de contrôle d'une courbe quadratique passant par les trois points spécifiés.
static java.awt.Shape toPrimitive(java.awt.Shape path)
          Tente de remplacer la forme géométrique path par une des formes standards de Java2D.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EPS

private static final double EPS
Valeur limite pour détecter si des points sont colinéaires ou si des coordonnées sont identiques.

See Also:
Constant Field Values

PARALLEL

public static final int PARALLEL
Constante pour les calculs de paraboles. Cette constante indique que l'axe des x de la parabole doit être parallèle à la droite joignant les points P0 et P2.

See Also:
Constant Field Values

HORIZONTAL

public static final int HORIZONTAL
Constante pour les calculs de paraboles. Cette constante indique que l'axe des x de la parabole doit être horizontale, quelle que soit la pente de la droite joignant les points P0 et P2.

See Also:
Constant Field Values
Constructor Detail

Geometry

private Geometry()
Interdit la création d'objets de cette classe.

Method Detail

intersectionPoint

public static java.awt.geom.Point2D intersectionPoint(java.awt.geom.Line2D a,
                                                      java.awt.geom.Line2D b)
Retourne le point d'intersection de deux segments de droites. Cette méthode ne prolonge pas les segments de droites à l'infini. Si les deux segments ne s'interceptent pas (soit par ce qu'ils sont parallèles, ou soit parce qu'ils ne se prolongent pas assez loin pour se toucher), alors cette méthode retourne null.

Parameters:
a - Première ligne.
b - Deuxième ligne.
Returns:
Si une intersection fut trouvée, les coordonnées de cette intersection. Si aucune intersection n'a été trouvée, alors cette méthode retourne null.

intersectionPoint

public static java.awt.geom.Point2D intersectionPoint(double ax1,
                                                      double ay1,
                                                      double ax2,
                                                      double ay2,
                                                      double bx1,
                                                      double by1,
                                                      double bx2,
                                                      double by2)
Retourne le point d'intersection de deux segments de droites. Cette méthode ne prolonge pas les segments de droites à l'infini. Si les deux segments ne s'interceptent pas (soit par ce qu'ils sont parallèles, ou soit parce qu'ils ne se prolongent pas assez loin pour se toucher), alors cette méthode retourne null.

Returns:
Si une intersection fut trouvée, les coordonnées de cette intersection. Si aucune intersection n'a été trouvée, alors cette méthode retourne null.

nearestColinearPoint

public static java.awt.geom.Point2D nearestColinearPoint(java.awt.geom.Line2D segment,
                                                         java.awt.geom.Point2D point)
Retourne le point sur le segment de droite line qui se trouve le plus près du point point spécifié. Appellons result le point retourné par cette méthode. Il est garanti que result répond aux conditions suivantes (aux erreurs d'arrondissements près):

See Also:
colinearPoint(Line2D, Point2D, double)

nearestColinearPoint

public static java.awt.geom.Point2D nearestColinearPoint(double x1,
                                                         double y1,
                                                         double x2,
                                                         double y2,
                                                         double x,
                                                         double y)
Retourne le point sur le segment de droite (x1,y1)-(x2,y2) qui se trouve le plus près du point (x,y) spécifié. Appellons result le point retourné par cette méthode. Il est garanti que result répond aux conditions suivantes (aux erreurs d'arrondissements près):

See Also:
colinearPoint(double,double , double,double , double,double , double)

colinearPoint

public static java.awt.geom.Point2D colinearPoint(java.awt.geom.Line2D line,
                                                  java.awt.geom.Point2D point,
                                                  double distance)
Retourne le point sur le segment de droite line qui se trouve à la distance distance spécifiée du point point. Appellons result le point retourné par cette méthode. Si result est non-nul, alors il est garanti qu'il répond aux conditions suivantes (aux erreurs d'arrondissements près): Si aucun point ne peut répondre à ces conditions, alors cette méthode retourne null. Si deux points peuvent répondre à ces conditions, alors par convention cette méthode retourne le point le plus près du point line.getP1().

See Also:
nearestColinearPoint(Line2D, Point2D)

colinearPoint

public static java.awt.geom.Point2D colinearPoint(double x1,
                                                  double y1,
                                                  double x2,
                                                  double y2,
                                                  double x,
                                                  double y,
                                                  double distance)
Retourne le point sur le segment de droite (x1,y1)-(x2,y2) qui se trouve à la distance distance spécifiée du point point. Appellons result le point retourné par cette méthode. Si result est non-nul, alors il est garanti qu'il répond aux conditions suivantes (aux erreurs d'arrondissements près): Si aucun point ne peut répondre à ces conditions, alors cette méthode retourne null. Si deux points peuvent répondre à ces conditions, alors par convention cette méthode retourne le point le plus près du point (x1,y1).

See Also:
nearestColinearPoint(double,double , double,double , double,double)

fitParabol

public static java.awt.geom.QuadCurve2D fitParabol(java.awt.geom.Point2D P0,
                                                   java.awt.geom.Point2D P1,
                                                   java.awt.geom.Point2D P2,
                                                   int orientation)
                                            throws java.lang.IllegalArgumentException
Retourne une courbe quadratique passant par les trois points spécifiés. Il peut exister une infinité de courbes quadratiques passant par trois points. On peut voir les choses en disant qu'une courbe quadratique correspond à une parabole produite par une équation de la forme y=ax²+bx+c, mais que l'axe des x de cette équation n'est pas nécessairement horizontal. La direction de cet axe des x dépend du paramètre orientation spécifié à cette méthode. La valeur HORIZONTAL signifie que l'axe des x de la parabole sera toujours horizontal. La courbe quadratique produite ressemblera alors à une parabole classique telle qu'on en voit dans les ouvrages de mathématiques élémentaires. La valeur PARALLEL indique plutôt que l'axe des x de la parabole doit être parallèle à la droite joignant les points P0 et P2. Ce dernier type produira le même résultat que HORIZONTAL si P0.y==P2.y.

Parameters:
P0 - Premier point de la courbe quadratique.
P1 - Point par lequel la courbe quadratique doit passer. Il n'est pas obligatoire que ce point soit situé entre P0 et P1. Toutefois, il ne doit pas être colinéaire avec P0 et P1.
P2 - Dernier point de la courbe quadratique.
orientation - Orientation de l'axe des x de la parabole: PARALLEL ou HORIZONTAL.
Returns:
Une courbe quadratique passant par les trois points spécifiés. La courbe commencera au point P0 et se terminera au point P2. Si deux points ont des coordonnées presque identiques, ou si les trois points sont colinéaires, alors cette méthode retourne null.
Throws:
java.lang.IllegalArgumentException - si l'argument orientation n'est pas une des constantes valides.

fitParabol

public static java.awt.geom.QuadCurve2D fitParabol(double x0,
                                                   double y0,
                                                   double x1,
                                                   double y1,
                                                   double x2,
                                                   double y2,
                                                   int orientation)
                                            throws java.lang.IllegalArgumentException
Retourne une courbe quadratique passant par les trois points spécifiés. Il peut exister une infinité de courbes quadratiques passant par trois points. On peut voir les choses en disant qu'une courbe quadratique correspond à une parabole produite par une équation de la forme y=ax²+bx+c, mais que l'axe des x de cette équation n'est pas nécessairement horizontal. La direction de cet axe des x dépend du paramètre orientation spécifié à cette méthode. La valeur HORIZONTAL signifie que l'axe des x de la parabole sera toujours horizontal. La courbe quadratique produite ressemblera alors à une parabole classique telle qu'on en voit dans les ouvrages de mathématiques élémentaires. La valeur PARALLEL indique plutôt que l'axe des x de la parabole doit être parallèle à la droite joignant les points (x0,y0) et (x2,y2). Ce dernier type produira le même résultat que HORIZONTAL si y0==y2.

Parameters:
orientation - Orientation de l'axe des x de la parabole: PARALLEL ou HORIZONTAL.
Returns:
Une courbe quadratique passant par les trois points spécifiés. La courbe commencera au point (x0,y0) et se terminera au point (x2,y2). Si deux points ont des coordonnées presque identiques, ou si les trois points sont colinéaires, alors cette méthode retourne null.
Throws:
java.lang.IllegalArgumentException - si l'argument orientation n'est pas une des constantes valides.

parabolicControlPoint

public static java.awt.geom.Point2D parabolicControlPoint(double x0,
                                                          double y0,
                                                          double x1,
                                                          double y1,
                                                          double x2,
                                                          double y2,
                                                          int orientation,
                                                          java.awt.geom.Point2D dest)
                                                   throws java.lang.IllegalArgumentException
Retourne le point de contrôle d'une courbe quadratique passant par les trois points spécifiés. Il peut exister une infinité de courbes quadratiques passant par trois points. On peut voir les choses en disant qu'une courbe quadratique correspond à une parabole produite par une équation de la forme y=ax²+bx+c, mais que l'axe des x de cette équation n'est pas nécessairement horizontal. La direction de cet axe des x dépend du paramètre orientation spécifié à cette méthode. La valeur HORIZONTAL signifie que l'axe des x de la parabole sera toujours horizontal. La courbe quadratique produite ressemblera alors à une parabole classique telle qu'on en voit dans les ouvrages de mathématiques élémentaires. La valeur PARALLEL indique plutôt que l'axe des x de la parabole doit être parallèle à la droite joignant les points (x0,y0) et (x2,y2). Ce dernier type produira le même résultat que HORIZONTAL si y0==y2.

Parameters:
orientation - Orientation de l'axe des x de la parabole: PARALLEL ou HORIZONTAL.
Returns:
Le point de contrôle d'une courbe quadratique passant par les trois points spécifiés. La courbe commencera au point (x0,y0) et se terminera au point (x2,y2). Si deux points ont des coordonnées presque identiques, ou si les trois points sont colinéaires, alors cette méthode retourne null.
Throws:
java.lang.IllegalArgumentException - si l'argument orientation n'est pas une des constantes valides.

fitCircle

public static java.awt.geom.Ellipse2D fitCircle(java.awt.geom.Point2D P1,
                                                java.awt.geom.Point2D P2,
                                                java.awt.geom.Point2D P3)
Retourne un cercle qui passe par chacun des trois points spécifiés.


circleCentre

public static java.awt.geom.Point2D circleCentre(double x1,
                                                 double y1,
                                                 double x2,
                                                 double y2,
                                                 double x3,
                                                 double y3)
Retourne la coordonnée centrale d'un cercle passant pas les trois points spécifiés. La distance entre le point retourné et n'importe quel des points (x1,y1), (x2,y2), (x3,y3) sera constante; ce sera le rayon d'un cercle centré au point retourné et passant par les trois points spécifiés.


toPrimitive

public static java.awt.Shape toPrimitive(java.awt.Shape path)
Tente de remplacer la forme géométrique path par une des formes standards de Java2D. Par exemple, si path ne contient qu'un simple segment de droite ou une courbe quadratique, alors cette méthode retournera un objet Line2D ou QuadCurve2D respectivement.

Parameters:
path - Forme géométrique à simplifier (généralement un objet GeneralPath).
Returns:
Forme géométrique standard, ou path si aucun remplacement n'est proposé.