## org.opengis.geometry.primitive
Interface CurveSegment

All Superinterfaces:
  GenericCurve

All Known Subinterfaces:
  Arc, ArcByBulge, ArcString, ArcStringByBulge, Bezier, BSplineCurve, Circle, Clothoid, Conic, CubicSpline, Geodesic, GeodesicString, LineSegment, LineString, OffsetCurve, PolynomialSpline, SplineCurve

    @UML(identifier="GM_CurveSegment",
         specification=ISO_19107)
    public interface CurveSegment

extends GenericCurve

Defines a homogeneous segment of a curve. Each `CurveSegment` shall be in, at most, one curve.

Since:
  GeoAPI 1.0
Version:
  ISO 19107

Method Summary
`CurveBoundary` `getBoundary()` Returns an ordered pair of points, which are the start point and end point of the curve.
`Curve` `getCurve()` Returns the curve which own this curve segment.
`CurveInterpolation` `getInterpolation()` Specifies the curve interpolation mechanism used for this segment.
`int` `getNumDerivativesAtEnd()` Specifies the type of continuity between this curve segment and its immediate neighbors.
`int` `getNumDerivativesAtStart()` Specifies the type of continuity between this curve segment and its immediate neighbors.
`int` `getNumDerivativesInterior()` Specifies the type of continuity that is guaranteed interior to the curve.
`PointArray` `getSamplePoints()` Returns an ordered array of point values that lie on the curve segment.
`CurveSegment` `reverse()` Reverses the orientation of the parameterizations of the segment.

Methods inherited from interface GenericCurve
`asLineString, forConstructiveParam, forParam, getEndConstructiveParam, getEndParam, getEndPoint, getParamForPoint, getStartConstructiveParam, getStartParam, getStartPoint, getTangent, length, length`

Method Detail

### getCurve

    @Association(value="Segmentation")
    @UML(identifier="curve",
         obligation=OPTIONAL,
         specification=ISO_19107)
    Curve getCurve()

  Returns the curve which own this curve segment. This method is optional since the association in ISO 19107 is navigable only from `Curve` to `CurveSegment`, not the other way.

  > NOTE: In the specification, curve segments do not appear except in the context of a curve, and therefore this method should never returns `null` which would preclude the use of curve segments except in this manner. While this would not affect the specification, allowing `null` owner allows other standards based on ISO 19107 one to use curve segments in a more open-ended manner.

  Returns:
    The owner of this curve segment, or `null` if the association is not available or not implemented that way.
  See Also:
    `Curve.getSegments()`, `SurfacePatch.getSurface()`

### getInterpolation

    @UML(identifier="interpolation",
         obligation=MANDATORY,
         specification=ISO_19107)
    CurveInterpolation getInterpolation()

  Specifies the curve interpolation mechanism used for this segment. This mechanism uses the control points and control parameters to determine the position of this `CurveSegment`.

  Returns:
    The interpolation mechanism used for this segment.

### getNumDerivativesAtStart

    @UML(identifier="numDerivativesAtStart",
         obligation=MANDATORY,
         specification=ISO_19107)
    int getNumDerivativesAtStart()

  Specifies the type of continuity between this curve segment and its immediate neighbors. If this is the first curve segment in the curve, this value is ignored.

  > NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line strings and segments cannot support continuity above C0, since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C1 or higher continuity.

  Returns:
    The type of continuity between this curve semgent and its immediate neighbors.
  See Also:
    `getNumDerivativesInterior()`, `getNumDerivativesAtEnd()`

### getNumDerivativesInterior

    @UML(identifier="numDerivativesInterior",
         obligation=MANDATORY,
         specification=ISO_19107)
    int getNumDerivativesInterior()

  Specifies the type of continuity that is guaranteed interior to the curve. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C0" in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C1" continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "Cn" continuity.

  Returns:
    The type of continuity that is guaranteed interior to the curve.
  See Also:
    `getNumDerivativesAtStart()`, `getNumDerivativesAtEnd()`

### getNumDerivativesAtEnd

    @UML(identifier="numDerivativesAtEnd",
         obligation=MANDATORY,
         specification=ISO_19107)
    int getNumDerivativesAtEnd()

  Specifies the type of continuity between this curve segment and its immediate neighbors. If this is the last curve segment in the curve, this value is ignored.

  > NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line strings and segments cannot support continuity above C0, since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C1 or higher continuity.

  Returns:
    The type of continuity between this curve semgent and its immediate neighbors.
  See Also:
    `getNumDerivativesAtStart()`, `getNumDerivativesInterior()`

### getSamplePoints

    @UML(identifier="samplePoint",
         obligation=MANDATORY,
         specification=ISO_19107)
    PointArray getSamplePoints()

  Returns an ordered array of point values that lie on the curve segment. In most cases, these will be related to control points used in the construction of the segment. The control points of a curve segment are use to control its shape, and are not always on the curve segment itself. For example in a spline curve, the curve segment is given as a weighted vector sum of the control points. Each weight function will have a maximum within the constructive parameter interval, which will roughly correspond to the point on the curve where it passes closest that the corresponding control point. These points, the values of the curve at the maxima of the weight functions, will be the sample points for the curve segment.

  Returns:
    The control points.

### getBoundary

    @UML(identifier="boundary",
         obligation=MANDATORY,
         specification=ISO_19107)
    CurveBoundary getBoundary()

  Returns an ordered pair of points, which are the start point and end point of the curve. This method operates with the same semantics as that on curve except that the end points of a `CurveSegment` are not necessarily existing points and thus the boundary may contain transient points.

  > NOTE: The above curve boundary will almost always be two distinct positions, but, like curves, `CurveSegment`s can be cycles in themselves. The most likely scenario is that all of the points used will be transients (constructed to support the return value), except for the start point and end point of the aggregated curve. These two positions, in the case where the curve is involved in a complex, will be represented as points in the same complex.

  Returns:
    The sets of positions on the boundary.

### reverse

    @UML(identifier="reverse",
         obligation=MANDATORY,
         specification=ISO_19107)
    CurveSegment reverse()

  Reverses the orientation of the parameterizations of the segment.

  Returns:
    The reverse of this curve segment.

Copyright © 1994-2008 Open Geospatial Consortium. All Rights Reserved.