Package org.geotools.geometry.util
Class ShapeUtilities
- Object
-
- ShapeUtilities
-
public final class ShapeUtilities extends Object
Static utilities methods. Those methods operate on geometric shapes from thejava.awt.geom
package.- Since:
- 2.0
- Author:
- Martin Desruisseaux (IRD)
-
-
Field Summary
Fields Modifier and Type Field Description static int
HORIZONTAL
Constante pour les calculs de paraboles.static int
PARALLEL
Constante pour les calculs de paraboles.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static 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 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 distancedistance
spécifiée du pointpoint
.static Point2D
colinearPoint(Line2D line, Point2D point, double distance)
Retourne le point sur le segment de droiteline
qui se trouve à la distancedistance
spécifiée du pointpoint
.static Ellipse2D
fitCircle(Point2D P1, Point2D P2, Point2D P3)
Retourne un cercle qui passe par chacun des trois points spécifiés.static 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 QuadCurve2D
fitParabol(Point2D P0, Point2D P1, Point2D P2, int orientation)
Retourne une courbe quadratique passant par les trois points spécifiés.static double
getFlatness(Shape shape)
Returns a suggested value for theflatness
argument inShape.getPathIterator(AffineTransform,double)
for the specified shape.static 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 Point2D
intersectionPoint(Line2D a, Line2D b)
Retourne le point d'intersection de deux segments de droites.static 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 Point2D
nearestColinearPoint(Line2D segment, Point2D point)
Retourne le point sur le segment de droiteline
qui se trouve le plus près du pointpoint
spécifié.static Point2D
parabolicControlPoint(double x0, double y0, double x1, double y1, double x2, double y2, int orientation, Point2D dest)
Retourne le point de contrôle d'une courbe quadratique passant par les trois points spécifiés.static Shape
toPrimitive(Shape path)
Tente de remplacer la forme géométriquepath
par une des formes standards de Java2D.
-
-
-
Field Detail
-
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
-
-
Method Detail
-
intersectionPoint
public static Point2D intersectionPoint(Line2D a, 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 retournenull
.- 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 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 retournenull
.- Parameters:
ax1
- x value of the first point on the first line.ay1
- y value of the first point on the first line.ax2
- x value of the last point on the first line.ay2
- y value of the last point on the first line.bx1
- x value of the first point on the second line.by1
- y value of the first point on the second line.bx2
- x value of the last point on the second line.by2
- y value of the last point on the second line.- 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 Point2D nearestColinearPoint(Line2D segment, Point2D point)
Retourne le point sur le segment de droiteline
qui se trouve le plus près du pointpoint
spécifié. Appellonsresult
le point retourné par cette méthode. Il est garanti queresult
répond aux conditions suivantes (aux erreurs d'arrondissements près):result
est un point du segment de droiteline
. Il ne trouve pas au delà des points extrêmes P1 et P2 de ce segment.- La distance entre les points
result
etpoint
est la plus courte distance possible pour les points qui respectent la condition précédente. Cette distance peut être calculée parpoint.distance(result)
.
- Parameters:
segment
- The line on which to search for a point.point
- A point close to the given line.- Returns:
- The nearest point on the given line.
- See Also:
colinearPoint(Line2D, Point2D, double)
-
nearestColinearPoint
public static 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é. Appellonsresult
le point retourné par cette méthode. Il est garanti queresult
répond aux conditions suivantes (aux erreurs d'arrondissements près):result
est un point du segment de droite(x1,y1)-(x2,y2)
. Il ne trouve pas au delà des points extrêmes(x1,y1)
et(x2,y2)
de ce segment.- La distance entre les points
result
et(x,y)
est la plus courte distance possible pour les points qui respectent la condition précédente. Cette distance peut être calculée parnew Point2D.Double(x,y).distance(result)
.
- Parameters:
x1
- x value of the first point on the line.y1
- y value of the first point on the line.x2
- x value of the last point on the line.y2
- y value of the last point on the line.x
- x value of a point close to the given line.y
- y value of a point close to the given line.- Returns:
- The nearest point on the given line.
- See Also:
colinearPoint(double,double , double,double , double,double , double)
-
colinearPoint
public static Point2D colinearPoint(Line2D line, Point2D point, double distance)
Retourne le point sur le segment de droiteline
qui se trouve à la distancedistance
spécifiée du pointpoint
. Appellonsresult
le point retourné par cette méthode. Siresult
est non-nul, alors il est garanti qu'il répond aux conditions suivantes (aux erreurs d'arrondissements près):result
est un point du segment de droiteline
. Il ne trouve pas au delà des points extrêmes P1 et P2 de ce segment.- La distance entre les points
result
etpoint
est exactementdistance
(aux erreurs d'arrondissements près). Cette distance peut être calculée parpoint.distance(result)
.
null
. Si deux points peuvent répondre à ces conditions, alors par convention cette méthode retourne le point le plus près du pointline.getP1()
.- Parameters:
line
- The line on which to searh for a point.point
- A point close to the given line.distance
- The distance between the given point and the point to be returned.- Returns:
- A point on the given line located at the given distance from the given point.
- See Also:
nearestColinearPoint(Line2D, Point2D)
-
colinearPoint
public static 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 distancedistance
spécifiée du pointpoint
. Appellonsresult
le point retourné par cette méthode. Siresult
est non-nul, alors il est garantit qu'il répond aux conditions suivantes (aux erreurs d'arrondissements près):result
est un point du segment de droite(x1,y1)-(x2,y2)
. Il ne trouve pas au delà des points extrêmes(x1,y1)
et(x2,y2)
de ce segment.- La distance entre les points
result
etpoint
est exactementdistance
(aux erreurs d'arrondissements près). Cette distance peut être calculée parpoint.distance(result)
.
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)
.- Parameters:
x1
- x value of the first point on the line.y1
- y value of the first point on the line.x2
- x value of the last point on the line.y2
- y value of the last point on the line.x
- x value of a point close to the given line.y
- y value of a point close to the given line.distance
- The distance between the given point and the point to be returned.- Returns:
- A point on the given line located at the given distance from the given point.
- See Also:
nearestColinearPoint(double,double , double,double , double,double)
-
fitParabol
public static QuadCurve2D fitParabol(Point2D P0, Point2D P1, Point2D P2, int orientation) throws 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 formey=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ètreorientation
spécifié à cette méthode. La valeurHORIZONTAL
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 valeurPARALLEL
indique plutôt que l'axe des x de la parabole doit être parallèle à la droite joignant les pointsP0
etP2
. Ce dernier type produira le même résultat queHORIZONTAL
siP0.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é entreP0
etP1
. Toutefois, il ne doit pas être colinéaire avecP0
etP1
.P2
- Dernier point de la courbe quadratique.orientation
- Orientation de l'axe des x de la parabole:PARALLEL
ouHORIZONTAL
.- Returns:
- Une courbe quadratique passant par les trois points spécifiés. La courbe commencera
au point
P0
et se terminera au pointP2
. Si deux points ont des coordonnées presque identiques, ou si les trois points sont colinéaires, alors cette méthode retournenull
. - Throws:
IllegalArgumentException
- si l'argumentorientation
n'est pas une des constantes valides.
-
fitParabol
public static QuadCurve2D fitParabol(double x0, double y0, double x1, double y1, double x2, double y2, int orientation) throws 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 formey=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ètreorientation
spécifié à cette méthode. La valeurHORIZONTAL
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 valeurPARALLEL
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 queHORIZONTAL
siy0==y2
.- Parameters:
x0
- x value of the first point.y0
- y value of the first point.x1
- x value of the second point.y1
- y value of the second point.x2
- x value of the third point.y2
- y value of the third point.orientation
- Orientation de l'axe des x de la parabole:PARALLEL
ouHORIZONTAL
.- 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 retournenull
. - Throws:
IllegalArgumentException
- si l'argumentorientation
n'est pas une des constantes valides.
-
parabolicControlPoint
public static Point2D parabolicControlPoint(double x0, double y0, double x1, double y1, double x2, double y2, int orientation, Point2D dest) throws 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 formey=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ètreorientation
spécifié à cette méthode. La valeurHORIZONTAL
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 valeurPARALLEL
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 queHORIZONTAL
siy0==y2
.- Parameters:
x0
- x value of the first point.y0
- y value of the first point.x1
- x value of the second point.y1
- y value of the second point.x2
- x value of the third point.y2
- y value of the third point.orientation
- Orientation de l'axe des x de la parabole:PARALLEL
ouHORIZONTAL
.dest
- Where to store the control point.- 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 retournenull
. - Throws:
IllegalArgumentException
- si l'argumentorientation
n'est pas une des constantes valides.
-
fitCircle
public static Ellipse2D fitCircle(Point2D P1, Point2D P2, Point2D P3)
Retourne un cercle qui passe par chacun des trois points spécifiés.- Parameters:
P1
- The first point.P2
- The second point.P3
- The third point.- Returns:
- A circle passing by the given points.
-
circleCentre
public static 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.- Parameters:
x1
- x value of the first point.y1
- y value of the first point.x2
- x value of the second point.y2
- y value of the second point.x3
- x value of the third point.y3
- y value of the third point.- Returns:
- A circle passing by the given points.
-
toPrimitive
public static Shape toPrimitive(Shape path)
Tente de remplacer la forme géométriquepath
par une des formes standards de Java2D. Par exemple, sipath
ne contient qu'un simple segment de droite ou une courbe quadratique, alors cette méthode retournera un objetLine2D
ouQuadCurve2D
respectivement.- Parameters:
path
- Forme géométrique à simplifier (généralement un objetGeneralPath
).- Returns:
- Forme géométrique standard, ou
path
si aucun remplacement n'est proposé.
-
getFlatness
public static double getFlatness(Shape shape)
Returns a suggested value for theflatness
argument inShape.getPathIterator(AffineTransform,double)
for the specified shape.- Parameters:
shape
- The shape for which to compute a flatness factor.- Returns:
- The suggested flatness factor.
-
-