JTS Topology Suite version 1.12

com.vividsolutions.jts.util
Class GeometricShapeFactory

java.lang.Object
  extended by com.vividsolutions.jts.util.GeometricShapeFactory
Direct Known Subclasses:
SineStarFactory

public class GeometricShapeFactory
extends java.lang.Object

Computes various kinds of common geometric shapes. Provides various ways of specifying the location and extent and rotations of the generated shapes, as well as number of line segments used to form them.

Example of usage:

  GeometricShapeFactory gsf = new GeometricShapeFactory();
  gsf.setSize(100);
  gsf.setNumPoints(100);
  gsf.setBase(new Coordinate(100, 100));
  gsf.setRotation(0.5);
  Polygon rect = gsf.createRectangle();
 

Version:
1.7

Nested Class Summary
protected  class GeometricShapeFactory.Dimensions
           
 
Field Summary
protected  GeometricShapeFactory.Dimensions dim
           
protected  GeometryFactory geomFact
           
protected  int nPts
           
protected  PrecisionModel precModel
           
protected  double rotationAngle
          Default is no rotation.
 
Constructor Summary
GeometricShapeFactory()
          Create a shape factory which will create shapes using the default GeometryFactory.
GeometricShapeFactory(GeometryFactory geomFact)
          Create a shape factory which will create shapes using the given GeometryFactory.
 
Method Summary
protected  Coordinate coord(double x, double y)
           
protected  Coordinate coordTrans(double x, double y, Coordinate trans)
           
 LineString createArc(double startAng, double angExtent)
          Creates an elliptical arc, as a LineString.
 Polygon createArcPolygon(double startAng, double angExtent)
          Creates an elliptical arc polygon.
 Polygon createCircle()
          Creates a circular or elliptical Polygon.
 Polygon createEllipse()
          Creates an elliptical Polygon.
 Polygon createRectangle()
          Creates a rectangular Polygon.
 Polygon createSquircle()
          Creates a squircular Polygon.
 Polygon createSupercircle(double power)
          Creates a supercircular Polygon of a given positive power.
protected  Geometry rotate(Geometry geom)
           
 void setBase(Coordinate base)
          Sets the location of the shape by specifying the base coordinate (which in most cases is the lower left point of the envelope containing the shape).
 void setCentre(Coordinate centre)
          Sets the location of the shape by specifying the centre of the shape's bounding box
 void setEnvelope(Envelope env)
           
 void setHeight(double height)
          Sets the height of the shape.
 void setNumPoints(int nPts)
          Sets the total number of points in the created Geometry.
 void setRotation(double radians)
          Sets the rotation angle to use for the shape.
 void setSize(double size)
          Sets the size of the extent of the shape in both x and y directions.
 void setWidth(double width)
          Sets the width of the shape.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

geomFact

protected GeometryFactory geomFact

precModel

protected PrecisionModel precModel

dim

protected GeometricShapeFactory.Dimensions dim

nPts

protected int nPts

rotationAngle

protected double rotationAngle
Default is no rotation.

Constructor Detail

GeometricShapeFactory

public GeometricShapeFactory()
Create a shape factory which will create shapes using the default GeometryFactory.


GeometricShapeFactory

public GeometricShapeFactory(GeometryFactory geomFact)
Create a shape factory which will create shapes using the given GeometryFactory.

Parameters:
geomFact - the factory to use
Method Detail

setEnvelope

public void setEnvelope(Envelope env)

setBase

public void setBase(Coordinate base)
Sets the location of the shape by specifying the base coordinate (which in most cases is the lower left point of the envelope containing the shape).

Parameters:
base - the base coordinate of the shape

setCentre

public void setCentre(Coordinate centre)
Sets the location of the shape by specifying the centre of the shape's bounding box

Parameters:
centre - the centre coordinate of the shape

setNumPoints

public void setNumPoints(int nPts)
Sets the total number of points in the created Geometry. The created geometry will have no more than this number of points, unless more are needed to create a valid geometry.


setSize

public void setSize(double size)
Sets the size of the extent of the shape in both x and y directions.

Parameters:
size - the size of the shape's extent

setWidth

public void setWidth(double width)
Sets the width of the shape.

Parameters:
width - the width of the shape

setHeight

public void setHeight(double height)
Sets the height of the shape.

Parameters:
height - the height of the shape

setRotation

public void setRotation(double radians)
Sets the rotation angle to use for the shape. The rotation is applied relative to the centre of the shape.

Parameters:
radians - the rotation angle in radians.

rotate

protected Geometry rotate(Geometry geom)

createRectangle

public Polygon createRectangle()
Creates a rectangular Polygon.

Returns:
a rectangular Polygon

createCircle

public Polygon createCircle()
Creates a circular or elliptical Polygon.

Returns:
a circle or ellipse

createEllipse

public Polygon createEllipse()
Creates an elliptical Polygon. If the supplied envelope is square the result will be a circle.

Returns:
an ellipse or circle

createSquircle

public Polygon createSquircle()
Creates a squircular Polygon.

Returns:
a squircle

createSupercircle

public Polygon createSupercircle(double power)
Creates a supercircular Polygon of a given positive power.

Returns:
a supercircle

createArc

public LineString createArc(double startAng,
                            double angExtent)
Creates an elliptical arc, as a LineString. The arc is always created in a counter-clockwise direction. This can easily be reversed if required by using {#link LineString.reverse()}

Parameters:
startAng - start angle in radians
angExtent - size of angle in radians
Returns:
an elliptical arc

createArcPolygon

public Polygon createArcPolygon(double startAng,
                                double angExtent)
Creates an elliptical arc polygon. The polygon is formed from the specified arc of an ellipse and the two radii connecting the endpoints to the centre of the ellipse.

Parameters:
startAng - start angle in radians
angExtent - size of angle in radians
Returns:
an elliptical arc polygon

coord

protected Coordinate coord(double x,
                           double y)

coordTrans

protected Coordinate coordTrans(double x,
                                double y,
                                Coordinate trans)

JTS Topology Suite version 1.12