com.seisw.util.geom
Interface Poly

All Known Implementing Classes:
PolyDefault, PolySimple

public interface Poly

Poly is an interface to a complex polygon. Poly polygons can consist of multiple "inner" polygons that can be disjoint and can be considered holes.

Currently, this interface supports two concepts:

Refactoring. This would be a good place for some refactoring to create a ComplexPoly and an InnerPoly or something so that these two concepts are broken out. One might also consider changing from an interface to an abstract class, so the methods isContributing() and setContributing() could have an access of package only. Or, the Clip algorithm could not store this information in the Poly.

Assumptions. The methods that access the polygon as though it were a set of points assume it is accessing the first polygon in the list of inner polygons. It is also assumed that inner polygons do not have more inner polygons.

Author:
Dan Bridenbecker, Solution Engineering, Inc.

Method Summary
 void add(double x, double y)
          Add a point to the first inner polygon.
 void add(java.awt.geom.Point2D p)
          Add a point to the first inner polygon.
 void add(Poly p)
          Add an inner polygon to this polygon - assumes that adding polygon does not have any inner polygons.
 void clear()
          Remove all of the points.
 double getArea()
          Return the area of the polygon in square units.
 java.awt.geom.Rectangle2D getBounds()
          Returns the bounding rectangle of this polygon.
 Poly getInnerPoly(int polyIndex)
          Returns the polygon at this index.
 int getNumInnerPoly()
          Returns the number of inner polygons - inner polygons are assumed to return one here.
 int getNumPoints()
          Return the number points of the first inner polygon
 double getX(int index)
          Return the X value of the point at the index in the first inner polygon
 double getY(int index)
          Return the Y value of the point at the index in the first inner polygon
 Poly intersection(Poly p)
          Return a Poly that is the intersection of this polygon with the given polygon.
 boolean isContributing(int polyIndex)
          Return true if the given inner polygon is contributing to the set operation.
 boolean isEmpty()
          Return true if the polygon is empty
 boolean isHole()
          Return true if this polygon is a hole.
 void setContributing(int polyIndex, boolean contributes)
          Set whether or not this inner polygon is constributing to the set operation.
 void setIsHole(boolean isHole)
          Set whether or not this polygon is a hole.
 Poly union(Poly p)
          Return a Poly that is the union of this polygon with the given polygon.
 Poly xor(Poly p)
          Return a Poly that is the exclusive-or of this polygon with the given polygon.
 

Method Detail

clear

public void clear()
Remove all of the points. Creates an empty polygon.


add

public void add(double x,
                double y)
Add a point to the first inner polygon.


add

public void add(java.awt.geom.Point2D p)
Add a point to the first inner polygon.


add

public void add(Poly p)
Add an inner polygon to this polygon - assumes that adding polygon does not have any inner polygons.


isEmpty

public boolean isEmpty()
Return true if the polygon is empty


getBounds

public java.awt.geom.Rectangle2D getBounds()
Returns the bounding rectangle of this polygon.


getInnerPoly

public Poly getInnerPoly(int polyIndex)
Returns the polygon at this index.


getNumInnerPoly

public int getNumInnerPoly()
Returns the number of inner polygons - inner polygons are assumed to return one here.


getNumPoints

public int getNumPoints()
Return the number points of the first inner polygon


getX

public double getX(int index)
Return the X value of the point at the index in the first inner polygon


getY

public double getY(int index)
Return the Y value of the point at the index in the first inner polygon


isHole

public boolean isHole()
Return true if this polygon is a hole. Holes are assumed to be inner polygons of a more complex polygon.

Throws:
java.lang.IllegalStateException - if called on a complex polygon.

setIsHole

public void setIsHole(boolean isHole)
Set whether or not this polygon is a hole. Cannot be called on a complex polygon.

Throws:
java.lang.IllegalStateException - if called on a complex polygon.

isContributing

public boolean isContributing(int polyIndex)
Return true if the given inner polygon is contributing to the set operation. This method should NOT be used outside the Clip algorithm.


setContributing

public void setContributing(int polyIndex,
                            boolean contributes)
Set whether or not this inner polygon is constributing to the set operation. This method should NOT be used outside the Clip algorithm.


intersection

public Poly intersection(Poly p)
Return a Poly that is the intersection of this polygon with the given polygon. The returned polygon could be complex.


union

public Poly union(Poly p)
Return a Poly that is the union of this polygon with the given polygon. The returned polygon could be complex.


xor

public Poly xor(Poly p)
Return a Poly that is the exclusive-or of this polygon with the given polygon. The returned polygon could be complex.


getArea

public double getArea()
Return the area of the polygon in square units.



Copyright © 2004 Solution Engineering, Inc. All Rights Reserved.