# Package com.mapinfo.midev.geometry

The Geometry package consists of a series of interfaces, classes and enumerations that allow users to work with geometry objects.

See: Description

Interface Summary
ICurve: An `ICurve` is an ordered, connected, sequence of `ICurveSegment`.
ICurveSegment: A `ICurveSegment` is an ordered sequence of control points and the rule for interpolating a curve along the control points from the first to the last.
IDirectPositionIterator: An iterator that returns copies of `IDirectPosition`s.
IDirectPositionList: A representation of an ordered container of `DirectPositions`.
IDirectPositionMutator: Interface for implementing any arbitrary logic to change the values of a DirectPosition.
IFeatureGeometry: These are the first-class geometric objects that we expect most users of the geometry component to deal in.
IGeometry: Z and M values
ILineString: An `ILineString` is an `ICurveSegment` where the control points are connected with straight lines (i.e., linear interpolation between the control points).
IMultiCurve: An unordered container of zero or more `ICurve`s.
IMultiFeatureGeometry: An unordered collection of the `IFeatureGeometry` types `IPoint`, `IMultiPoint`, `IMultiCurve` and `IMultiPolygon`.
IMultiPoint: An `IFeatureGeometry` that is a collection of `IPoint`s all in the same coordinate system.
IMultiPolygon: An `IFeatureGeometry` that is a collection of `IPolygon`s all in the same coordinate system.
IPoint: An `IFeatureGeometry` that represents a single point on the earth.
IPolygon: An `IPolygon` is an `IGeometry` that consists of a single exterior `IRing` and zero or more interior `IRing`s that represent holes in the exterior ring.
IPolygonBuilder: A builder for new polygon instances.
IRectangle: An `IFeatureGeometry` that is an axis aligned rectangle defined by two points (lower left and upper right).
IRing: An `IRing` is a list of consecutively connected `ICurveSegment`s where the last position is exactly equal to the first position.

Class Summary
AffineTransform: Represents a 2D affine transform that performs a linear mapping from 2D coordinates to other 2D coordinates that preserves the "straightness" and "parallelness" of lines.
CurveBuilder: A builder for creating new `ICurve` instances.
CurveInterpolationType: Identification of the different ways the control points of a curve segment can be connected.
DirectPosition: Holds the values that define or can be associated with a single point.
Envelope: Represents the x and y extents of a geometry.
GeometryFactory: A factory class to create a variety of geometry types through a convenient API.
GeometryType: Enumeration of all possible supported geometries.
MultiCurveBuilder: A builder for creating new `IMultiCurve` instances.
MultiPointBuilder: A builder to create new `IMultiPoint` instances.
MultiPolygonBuilder: A builder for creating new `IMultiPolygon` instances.
MValue: An `MValue` is an attribute associated with a direct position.
PolygonRingBuilder: A builder to create outer and inner rings for polygons.
SpatialInfo: All spatial metadata for a geometry.

Exception Summary
InvalidComputationTypeException: Thrown when a required type of calculation cannot be attempted on a geometry.
InvalidGeometryConversionException: Thrown when a geometry cannot be converted from one geometry type to another geometry type.
InvalidGeometryException: Thrown when a geometry is not valid.
InvalidGeometryOperationException: Thrown when given parameters are not valid to the required operation.
InvalidGeometryTypeException: Thrown when a geometry type is not valid.
UnsupportedGeometryOperationException: Thrown when an unsupported operation is attempted on a geometry.

## Package com.mapinfo.midev.geometry Description

The Geometry package consists of a series of interfaces, classes and enumerations that allow users to work with geometry objects.

The interfaces within the Geometry package define the composition aspects for all geometry object types. Provided are interfaces that describe `points`, `lines`, `polygons`, `curves`, etc. Concrete classes are provided as helper-utility classes for working with geometry objects and enumerations are supplied that define the different "type listings" associated with geometry objects.

The primary interface within this package is interface `IGeometry`. `IGeometry` defines the basic behavior of all geometry classes. For example, it defines functionality for returning a geometry object's type, its coordinate system information, and envelope (minimum bounding rectangle).

`IGeometry` is related to `IFeature` in the following way. `IFeature` can return an `IFeatureGeometry` object. `IFeatureGeometry` extends `IGeometry`. At runtime, the `IFeatureGeometry` object of an `IFeature` object can be rendered into a map image to visually represent that feature in the map.

See Also:
  `IFeature`