ilog.cpl.graphic.views
Class IlpPolygon

java.lang.Object
  extended by ilog.cpl.graphic.views.IlpPolyPoints
      extended by ilog.cpl.graphic.views.IlpPolygon
All Implemented Interfaces:
IlpPosition, Shape, Cloneable

public class IlpPolygon
extends IlpPolyPoints
implements Shape, IlpPosition, Cloneable

This class defines a closed (circular) polyline with no specific starting or end points, in other words, a polygon.

Since:
JTGO 3.0

Constructor Summary
IlpPolygon()
          Creates a new IlpPolygon instance.
IlpPolygon(IlvPoint[] points)
          Creates a new IlpPolygon instance, connecting given points.
IlpPolygon(IlvPoint[] points, boolean removeRedundant)
          Creates a new IlpPolygon instance, connecting given points.
 
Method Summary
 void applyTransform(IlvTransformer t)
          Applies a transform to the points, thereby destructively modifying the polyline and its segments.
 Object clone()
          Creates a copy of this polyline.
 IlpPolygon computeParallel(float apart, float miterlimit)
          Returns a parallel polygon.
 ilog.cpl.graphic.views.internal.IlpPolyTwoPolylines computeThickLinkShape(float thickness, float miterlimit)
          Returns the two polylines bounding the result of blowing up this polyline to a given thickness.
 boolean contains(double x, double y)
           
 boolean contains(double x, double y, double width, double height)
           
 boolean contains(Point2D p)
           
 boolean contains(Rectangle2D r)
           
 boolean containsInClosure(double x, double y)
          Determines whether a point is contained in this polygon (inside or on the border).
 boolean containsInConvexHull(IlvPoint p)
          Determines whether a point is contained in the convex hull of this polygon.
 boolean containsInInterior(double x, double y)
          Determines whether a point is contained in the inside area of this polygon.
 float getArea()
          Returns the area covered by the polygon.
 IlvPoint getGravity2()
          Returns the gravity center of the area covered by the polygon.
 ilog.cpl.graphic.views.internal.IlpPolyPointAndDirection getMedian()
          Returns the "midpoint" of the polyline, and the direction of the segment containing it.
 int getNumberOfPoints()
          Returns the number of points in the polyline.
 PathIterator getPathIterator(AffineTransform transform)
           
 PathIterator getPathIterator(AffineTransform at, double flatness)
           
 void insertPoint(IlvPoint p)
          Inserts a point into the nearest segment.
 void insertPoint(int index, IlvPoint p)
          Inserts a point into a specific segment.
 boolean intersects(double x, double y, double width, double height)
           
 boolean intersects(Rectangle2D r)
           
 void movePoint(int index, IlvPoint p)
          Moves a specific point to a new location.
 void removePoint(int index)
          Removes a specific point.
 void removeRedundantPoints()
          Removes all redundant points (points which are between their neighbors).
 void reverse()
          Reverses the order of the points, the order of the segments, and the directions of the segments.
 
Methods inherited from class ilog.cpl.graphic.views.IlpPolyPoints
equals, getBounds, getBounds2D, getClosestSegment, getGravity0, getGravity1, getNumberOfSegments, getPoint, getPoints, getPointsCloned, getSegment, getSegments, hashCode, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.Shape
getBounds, getBounds2D
 

Constructor Detail

IlpPolygon

public IlpPolygon()
Creates a new IlpPolygon instance. The segments must be added afterwards.


IlpPolygon

public IlpPolygon(IlvPoint[] points,
                  boolean removeRedundant)
Creates a new IlpPolygon instance, connecting given points.

Parameters:
points - A non-empty array of points.
removeRedundant - Indicates whether redundant points shall be removed.

IlpPolygon

public IlpPolygon(IlvPoint[] points)
Creates a new IlpPolygon instance, connecting given points.

Parameters:
points - A non-empty array of points.
Method Detail

clone

public Object clone()
Creates a copy of this polyline.

Overrides:
clone in class Object

getNumberOfPoints

public int getNumberOfPoints()
Returns the number of points in the polyline.

Specified by:
getNumberOfPoints in class IlpPolyPoints

containsInInterior

public boolean containsInInterior(double x,
                                  double y)
Determines whether a point is contained in the inside area of this polygon.

Parameters:
x - The x coordinate of the point to be tested.
y - The y coordinate of the point to be tested.
Internal method or field: do not use!

containsInClosure

public boolean containsInClosure(double x,
                                 double y)
Determines whether a point is contained in this polygon (inside or on the border).

Parameters:
x - The x coordinate of the point to be tested.
y - The y coordinate of the point to be tested.
Internal method or field: do not use!

contains

public boolean contains(double x,
                        double y)
Specified by:
contains in interface Shape
Internal method or field: do not use!

contains

public boolean contains(Point2D p)
Specified by:
contains in interface Shape
Internal method or field: do not use!

intersects

public boolean intersects(double x,
                          double y,
                          double width,
                          double height)
Specified by:
intersects in interface Shape
Internal method or field: do not use!

intersects

public boolean intersects(Rectangle2D r)
Specified by:
intersects in interface Shape
Internal method or field: do not use!

contains

public boolean contains(double x,
                        double y,
                        double width,
                        double height)
Specified by:
contains in interface Shape
Internal method or field: do not use!

contains

public boolean contains(Rectangle2D r)
Specified by:
contains in interface Shape
Internal method or field: do not use!

getPathIterator

public PathIterator getPathIterator(AffineTransform transform)
Specified by:
getPathIterator in interface Shape
Internal method or field: do not use!

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
Specified by:
getPathIterator in interface Shape
Internal method or field: do not use!

containsInConvexHull

public boolean containsInConvexHull(IlvPoint p)
Determines whether a point is contained in the convex hull of this polygon.

Parameters:
p - the point to be tested

getArea

public float getArea()
Returns the area covered by the polygon. This is positive if the polygon turns right, negative if it turns left, and may even be zero if the polygon crosses itself.

Internal method or field: do not use!

getGravity2

public IlvPoint getGravity2()
Returns the gravity center of the area covered by the polygon.

Internal method or field: do not use!

getMedian

public ilog.cpl.graphic.views.internal.IlpPolyPointAndDirection getMedian()
Returns the "midpoint" of the polyline, and the direction of the segment containing it. For closed polylines, this is the gravity center.

Specified by:
getMedian in class IlpPolyPoints
Internal method or field: do not use!

computeParallel

public IlpPolygon computeParallel(float apart,
                                  float miterlimit)
Returns a parallel polygon.

Parameters:
apart - distance (positive for a parallel to the right of the polygon, negative for a parallel to the left of the polygon)
miterlimit - see comments in class IltGraphicUtil
Internal method or field: do not use!

computeThickLinkShape

public ilog.cpl.graphic.views.internal.IlpPolyTwoPolylines computeThickLinkShape(float thickness,
                                                                                 float miterlimit)
Returns the two polylines bounding the result of blowing up this polyline to a given thickness.

This is the same as: new IlpPolyTwoPolylines(computeParallel(-0.5f*thickness,miterlimit), computeParallel(0.5f*thickness,miterlimit))

Specified by:
computeThickLinkShape in class IlpPolyPoints
Parameters:
miterlimit - see comments in class IltGraphicUtil
Internal method or field: do not use!

applyTransform

public void applyTransform(IlvTransformer t)
Applies a transform to the points, thereby destructively modifying the polyline and its segments.

Specified by:
applyTransform in class IlpPolyPoints

reverse

public void reverse()
Reverses the order of the points, the order of the segments, and the directions of the segments. This destructively modifies the polygon and its segments.

Specified by:
reverse in class IlpPolyPoints
Internal method or field: do not use!

insertPoint

public void insertPoint(int index,
                        IlvPoint p)
Inserts a point into a specific segment.

Specified by:
insertPoint in class IlpPolyPoints
Parameters:
index - Satisfies 0 <= index < getNumberOfSegments().
p - The point to be inserted.

insertPoint

public void insertPoint(IlvPoint p)
Inserts a point into the nearest segment.

Specified by:
insertPoint in class IlpPolyPoints

movePoint

public void movePoint(int index,
                      IlvPoint p)
Moves a specific point to a new location.

Specified by:
movePoint in class IlpPolyPoints
Parameters:
index - Satisfies 0 <= index < getNumberOfPoints().
p - The point to be inserted.

removePoint

public void removePoint(int index)
Removes a specific point.

Specified by:
removePoint in class IlpPolyPoints
Parameters:
index - Satisfies 0 <= index < getNumberOfPoints().

removeRedundantPoints

public void removeRedundantPoints()
Removes all redundant points (points which are between their neighbors).

Specified by:
removeRedundantPoints in class IlpPolyPoints


Copyright © 1996-2007 ILOG S.A. All rights reserved.   Documentation homepage.   . All Rights Reserved.