org.opengis.geometry.coordinate

## Interface Clothoid

• All Superinterfaces:
CurveSegment, GenericCurve

```@UML(identifier="GM_Clothoid",
specification=ISO_19107)
public interface Clothoid
extends CurveSegment```
The clothoid (or Cornu's spiral), a plane curve whose curvature is a fixed function of its length. In suitably chosen co-ordinates it is given by Fresnel's integrals:

(TODO: paste the equation here)
This geometry is mainly used as a transition curve between curves of type straight line/circular arc or circular arc/circular arc. With this curve type it is possible to achieve a C2-continous transition between the above mentioned curve types. One formula for the clothoid is A2 = R×t where A is a constant, R is the varying radius of curvature along the curve and t is the length along the curve and given in the Fresnel integrals.
Since:
GeoAPI 2.0
Author:
Martin Desruisseaux (IRD)
• ### Method Summary

All Methods
Modifier and Type Method and Description
`double` `getEndConstructiveParam()`
Returns the arc length distance from the inflection point that will be the end point for this curve segment.
`AffinePlacement` `getReferenceLocation()`
Returns an affine mapping that places the curve defined by the Fresnel Integrals into the coordinate reference system of this object.
`double` `getScaleFactor()`
Gives the value for A in the equations above.
`double` `getStartConstructiveParam()`
Returns the arc length distance from the inflection point that will be the start point for this curve segment.
• ### Methods inherited from interface CurveSegment

`getBoundary, getCurve, getInterpolation, getNumDerivativesAtEnd, getNumDerivativesAtStart, getNumDerivativesInterior, getSamplePoints, reverse`
• ### Methods inherited from interface GenericCurve

`asLineString, forConstructiveParam, forParam, getEndParam, getEndPoint, getParamForPoint, getStartParam, getStartPoint, getTangent, length, length`
• ### Method Detail

• #### getReferenceLocation

```@UML(identifier="refLocation",
obligation=MANDATORY,
specification=ISO_19107)
AffinePlacement getReferenceLocation()```
Returns an affine mapping that places the curve defined by the Fresnel Integrals into the coordinate reference system of this object.
• #### getScaleFactor

```@UML(identifier="scaleFactor",
obligation=MANDATORY,
specification=ISO_19107)
double getScaleFactor()```
Gives the value for A in the equations above.
• #### getStartConstructiveParam

```@UML(identifier="startParameter",
obligation=MANDATORY,
specification=ISO_19107)
double getStartConstructiveParam()```
Returns the arc length distance from the inflection point that will be the start point for this curve segment. This shall be lower limit t used in the Fresnel integral and is the value of the constructive parameter of this curve segment at its start point. The start parameter can be either positive or negative. The parameter t acts as a constructive parameter.

NOTE: If 0 lies between the start constructive parameter and end constructive parameter of the clothoid, then the curve goes through the clothoid's inflection point, and the direction of its radius of curvature, given by the second derivative vector, changes sides with respect to the tangent vector. The term "length" for the parameter `t` is applicable only in the parameter space, and its relation to arc length after use of the placement, and with respect to the coordinate reference system of the curve is not deterministic.

Specified by:
`getStartConstructiveParam` in interface `GenericCurve`
Returns:
The parameter used in the constructive paramerization for the start point.
`GenericCurve.getStartParam()`, `GenericCurve.getEndConstructiveParam()`, `GenericCurve.forConstructiveParam(double)`
• #### getEndConstructiveParam

```@UML(identifier="endParameter",
obligation=MANDATORY,
specification=ISO_19107)
double getEndConstructiveParam()```
Returns the arc length distance from the inflection point that will be the end point for this curve segment. This shall be upper limit t used in the Fresnel integral and is the constructive parameter of this curve segment at its end point. The end constructive param can be either positive or negative.
Specified by:
`getEndConstructiveParam` in interface `GenericCurve`
Returns:
The parameter used in the constructive paramerization for the end point.
`GenericCurve.getEndParam()`, `GenericCurve.getStartConstructiveParam()`, `GenericCurve.forConstructiveParam(double)`