maspack.geometry
Class Polygon2d

java.lang.Object
  extended by maspack.geometry.Polygon2d
All Implemented Interfaces:
GLRenderable, GLSelectable, HasRenderProps, Renderable
Direct Known Subclasses:
ConvexPolygon2d

public class Polygon2d
extends java.lang.Object
implements Renderable


Field Summary
 
Fields inherited from interface maspack.render.GLRenderable
TRANSLUCENT, TWO_DIMENSIONAL
 
Constructor Summary
Polygon2d()
           
Polygon2d(double[] coords)
           
Polygon2d(Point2d[] pnts)
           
 
Method Summary
 Vertex2d addVertex(double x, double y)
           
 void appendVertex(Vertex2d vtx)
           
 void clear()
           
 RenderProps createRenderProps()
          Factory method to create render properties appropriate to this object.
 boolean epsilonEquals(Polygon2d poly, double eps)
          Returns true if this polygon is equal to another polygon within a prescribed tolerance eps.
 boolean equals(Polygon2d poly)
          Returns true if this polygon is equal to another polygon.
 void getBounds(Point2d minValues, Point2d maxValues)
           
 void getCentroid(Point2d pnt)
           
 Vertex2d getFirstVertex()
           
 Vertex2d getLastVertex()
           
 double getMaxCoordinate()
           
 int getRenderHints()
          Returns a bit code giving rendering hints about this renderable.
 RenderProps getRenderProps()
          Returns the render properities for this object.
 void getSelection(java.util.LinkedList<java.lang.Object> list, int qid)
          Append to list the component (or components) associated with the qid-th selection query issued by this component's render method.
 java.util.ListIterator getVertices()
           
 void inverseTransform(AffineTransform2dBase X)
          Applies an inverse affine transformation to the vertices of this polygon.
 boolean isConsistent()
           
 boolean isEmpty()
           
 boolean isSelectable()
          Returns true if this object is in fact selectable.
 int numSelectionQueriesNeeded()
          If this selectable manages its own selection (by issuing selection queries within its render method), then this method should return the maximum number of selection queries that will be required.
 int numVertices()
           
 void prependVertex(Vertex2d vtx)
           
 void prerender(RenderList list)
          Prepare for rendering, and potentially add itself to a list to be drawn by a GLRenderer.
 void render(GLRenderer renderer, int flags)
          Render this object using Open GL via the JOGL.
 void render(GLRenderer renderer, RenderProps props, int flags)
           
 void scan(ReaderTokenizer rtok)
           
 void set(double[] coords, int numVertices)
           
 void set(Point2d[] pnts, int numVertices)
           
 void set(Polygon2d poly)
           
 void setRenderProps(RenderProps props)
          Assigns a new set of render properties to this object.
 void shiftVertices(int n)
           
 java.lang.String toString()
           
 java.lang.String toString(NumberFormat fmt)
           
 java.lang.String toString(java.lang.String fmtStr)
           
 void transform(AffineTransform2dBase X)
          Applies a affine transformation to the vertices of this polygon.
 void updateBounds(Point2d minValues, Point2d maxValues)
           
 void updateBounds(Point3d pmin, Point3d pmax)
          Update the minimum and maximum points for this object.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Polygon2d

public Polygon2d()

Polygon2d

public Polygon2d(double[] coords)

Polygon2d

public Polygon2d(Point2d[] pnts)
Method Detail

getVertices

public java.util.ListIterator getVertices()

numVertices

public int numVertices()

getMaxCoordinate

public double getMaxCoordinate()

getBounds

public void getBounds(Point2d minValues,
                      Point2d maxValues)

updateBounds

public void updateBounds(Point2d minValues,
                         Point2d maxValues)

addVertex

public Vertex2d addVertex(double x,
                          double y)

appendVertex

public void appendVertex(Vertex2d vtx)

prependVertex

public void prependVertex(Vertex2d vtx)

isEmpty

public boolean isEmpty()

getLastVertex

public Vertex2d getLastVertex()

getFirstVertex

public Vertex2d getFirstVertex()

clear

public void clear()

getCentroid

public void getCentroid(Point2d pnt)

set

public void set(Polygon2d poly)

set

public void set(double[] coords,
                int numVertices)

set

public void set(Point2d[] pnts,
                int numVertices)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toString

public java.lang.String toString(java.lang.String fmtStr)

toString

public java.lang.String toString(NumberFormat fmt)

scan

public void scan(ReaderTokenizer rtok)
          throws java.io.IOException
Throws:
java.io.IOException

epsilonEquals

public boolean epsilonEquals(Polygon2d poly,
                             double eps)
Returns true if this polygon is equal to another polygon within a prescribed tolerance eps. The two polyons are considered to be equal if their vertex lists are equal (within the specified tolerance) except for possibly being shifted with respect to each other.

Parameters:
poly - polygon to be compared with
eps - tolerance value
Returns:
true if the polygons are equal
See Also:
epsilonEquals(maspack.geometry.Polygon2d, double)

equals

public boolean equals(Polygon2d poly)
Returns true if this polygon is equal to another polygon. The two polyons are considered to be equal if their vertex lists are equal except for possibly being shifted with respect to each other.

Parameters:
poly - polygon to be compared with
Returns:
true if the polygons are equal
See Also:
epsilonEquals(maspack.geometry.Polygon2d, double)

shiftVertices

public void shiftVertices(int n)

isConsistent

public boolean isConsistent()

transform

public void transform(AffineTransform2dBase X)
Applies a affine transformation to the vertices of this polygon.

Parameters:
X - affine transformation

inverseTransform

public void inverseTransform(AffineTransform2dBase X)
Applies an inverse affine transformation to the vertices of this polygon.

Parameters:
X - affine transformation

prerender

public void prerender(RenderList list)
Description copied from interface: GLRenderable
Prepare for rendering, and potentially add itself to a list to be drawn by a GLRenderer.

Specified by:
prerender in interface GLRenderable

updateBounds

public void updateBounds(Point3d pmin,
                         Point3d pmax)
Description copied from interface: GLRenderable
Update the minimum and maximum points for this object. In an x-y-z coordinate system with x directed to the right and y directed upwards, the minimum and maximum points can be thought of as defining the left-lower-far and right-upper-near corners of a bounding cube. This method should only reduce the elements of the minimum point and increase the elements of the maximum point, since it may be used as part of an iteration to determine the bounding cube for several different objects.

Specified by:
updateBounds in interface GLRenderable
Parameters:
pmin - minimum point
pmax - maximum point

render

public void render(GLRenderer renderer,
                   int flags)
Description copied from interface: GLRenderable
Render this object using Open GL via the JOGL.

Specified by:
render in interface GLRenderable
Parameters:
renderer - renderer object which is used to perform the rendering. Provides pointers to GL and GLU, along with helper functions.
flags - supplies flags that may be used to control different aspects of the rendering. Flags are defined in GLRenderer and currently include GLRenderer.SELECTED, GLRenderer.VERTEX_COLORING, GLRenderer.HSV_COLOR_INTERPOLATION, GLRenderer.SORT_FACES, and GLRenderer.CLEAR_MESH_DISPLAY_LISTS.

render

public void render(GLRenderer renderer,
                   RenderProps props,
                   int flags)

getRenderHints

public int getRenderHints()
Description copied from interface: GLRenderable
Returns a bit code giving rendering hints about this renderable. Current bit codes include TRANSLUCENT.

Specified by:
getRenderHints in interface GLRenderable
Returns:
bit code of rendering hints.

createRenderProps

public RenderProps createRenderProps()
Description copied from interface: HasRenderProps
Factory method to create render properties appropriate to this object.

Specified by:
createRenderProps in interface HasRenderProps
Returns:
new render properties for this object

setRenderProps

public void setRenderProps(RenderProps props)
Description copied from interface: HasRenderProps
Assigns a new set of render properties to this object. An argument of null will remove render properties from this object.

Specified by:
setRenderProps in interface HasRenderProps
Parameters:
props - new render properties for this object

getRenderProps

public RenderProps getRenderProps()
Description copied from interface: HasRenderProps
Returns the render properities for this object. If no render properties are assigned, this routines returns null.

Specified by:
getRenderProps in interface HasRenderProps
Returns:
current render properties for this object

isSelectable

public boolean isSelectable()
Description copied from interface: GLSelectable
Returns true if this object is in fact selectable.

Specified by:
isSelectable in interface GLSelectable
Returns:
true if this object is selectable

numSelectionQueriesNeeded

public int numSelectionQueriesNeeded()
Description copied from interface: GLSelectable
If this selectable manages its own selection (by issuing selection queries within its render method), then this method should return the maximum number of selection queries that will be required. Otherwise, this method should return -1.

Specified by:
numSelectionQueriesNeeded in interface GLSelectable
Returns:
maximum number of selection queries needed by this component, or -1 if this component does not manage its own selection.

getSelection

public void getSelection(java.util.LinkedList<java.lang.Object> list,
                         int qid)
Description copied from interface: GLSelectable
Append to list the component (or components) associated with the qid-th selection query issued by this component's render method. This will only be called if this component manages its own selection (i.e., the number nums returned by GLSelectable.numSelectionQueriesNeeded() is positive), and qid will in turn be a number between 0 and nums-1.

Specified by:
getSelection in interface GLSelectable
Parameters:
list - selected objects are appended to the end of this list
qid - index of the selection query