com.partnersoft.geometry.xy
Class XyQuadrilateral

java.lang.Object
  extended by com.partnersoft.geometry.xy.XyQuadrilateral
All Implemented Interfaces:
Immutable, XyArea<XyQuadrilateral>, XyShape<XyQuadrilateral>, java.lang.Iterable<XyPoint>

public class XyQuadrilateral
extends java.lang.Object
implements XyArea<XyQuadrilateral>

A four-sided and four-cornered figured. Currently the implementation assumes it is simple (lines do not cross).

Copyright 2008 Partner Software, Inc.

Version:
$Id$
Author:
Paul Reavis

Constructor Summary
XyQuadrilateral(XyPoint corner1, XyPoint corner2, XyPoint corner3, XyPoint corner4)
           
 
Method Summary
 boolean contains(XyPoint point)
          Tests if a point is inside this area.
 double getArea()
          Returns the 2-dimensional area covered by this...
 XyBounds getBounds()
          Returns an XyBounds object representing the rectangular extents of this shape.
 XyPoint getCentroid()
           
 XyPoint getCorner1()
           
 XyPoint getCorner2()
           
 XyPoint getCorner3()
           
 XyPoint getCorner4()
           
 double getPerimeter()
          Returns the total length of the lines and/or curves bounding the area.
 java.util.Iterator<XyPoint> iterator()
           
 XyQuadrilateral scaledBy(double factor)
          Return a scaled version of the shape by multiplying all coordinates by the given factor in both dimensions.
 XyPolygon toPolygon()
          Same as XyArea.toPolygon(XyAngle) with a default angle granularity of 1/60 circle (1 degree, pi/30 radians).
 XyPolygon toPolygon(XyAngle granularity)
          Converts this area to a polygon which approximates it in some fashion.
 XyShape transformedBy(XyTransform transform)
          Transform the shape using the given transform.
 XyQuadrilateral translatedBy(double offsetX, double offsetY)
          Translate the shape by adding all coordinates to the given x and y offsets.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XyQuadrilateral

public XyQuadrilateral(XyPoint corner1,
                       XyPoint corner2,
                       XyPoint corner3,
                       XyPoint corner4)
Method Detail

contains

public boolean contains(XyPoint point)
Description copied from interface: XyArea
Tests if a point is inside this area.

Specified by:
contains in interface XyArea<XyQuadrilateral>
Parameters:
point - point to test for containment

getArea

public double getArea()
Description copied from interface: XyArea
Returns the 2-dimensional area covered by this... area.

Specified by:
getArea in interface XyArea<XyQuadrilateral>
Returns:
geometric area of this shape

getPerimeter

public double getPerimeter()
Description copied from interface: XyArea
Returns the total length of the lines and/or curves bounding the area.

Specified by:
getPerimeter in interface XyArea<XyQuadrilateral>
Returns:
geometric perimeter of this shape

toPolygon

public XyPolygon toPolygon(XyAngle granularity)
Description copied from interface: XyArea
Converts this area to a polygon which approximates it in some fashion. For example, a circle can be converted to a polygon with enough sides to roughly approximate its shape. Areas consisting of linked line segments can be represented exactly.

The angle parameter allows a certain level of control of the output. Essentially it dictates the minimum angular granularity used to approximate curved paths. For example, a circle would be turned into a polygon by placing points around the circle, separated by the given angle.

Specified by:
toPolygon in interface XyArea<XyQuadrilateral>

toPolygon

public XyPolygon toPolygon()
Description copied from interface: XyArea
Same as XyArea.toPolygon(XyAngle) with a default angle granularity of 1/60 circle (1 degree, pi/30 radians).

Specified by:
toPolygon in interface XyArea<XyQuadrilateral>

getBounds

public XyBounds getBounds()
Description copied from interface: XyShape
Returns an XyBounds object representing the rectangular extents of this shape.

Specified by:
getBounds in interface XyShape<XyQuadrilateral>

scaledBy

public XyQuadrilateral scaledBy(double factor)
Description copied from interface: XyShape
Return a scaled version of the shape by multiplying all coordinates by the given factor in both dimensions. This resulting shape must be of the same class as the original.

Specified by:
scaledBy in interface XyShape<XyQuadrilateral>
Parameters:
factor - scaling factor
Returns:
scaled result

transformedBy

public XyShape transformedBy(XyTransform transform)
Description copied from interface: XyShape
Transform the shape using the given transform. Due to potential distortion the result may be a different type of shape than this one.

Specified by:
transformedBy in interface XyShape<XyQuadrilateral>
Parameters:
transform - affine transform to apply.
Returns:
transformed result

translatedBy

public XyQuadrilateral translatedBy(double offsetX,
                                    double offsetY)
Description copied from interface: XyShape
Translate the shape by adding all coordinates to the given x and y offsets. The resulting shape must be of the same class as the original.

Specified by:
translatedBy in interface XyShape<XyQuadrilateral>
Parameters:
offsetX - offset for the x dimension
offsetY - offset for the y dimension
Returns:
offset result

iterator

public java.util.Iterator<XyPoint> iterator()
Specified by:
iterator in interface java.lang.Iterable<XyPoint>

getCentroid

public XyPoint getCentroid()

getCorner1

public XyPoint getCorner1()

getCorner2

public XyPoint getCorner2()

getCorner3

public XyPoint getCorner3()

getCorner4

public XyPoint getCorner4()