org.opengis.geometry.coordinate

## Interface Conic

• All Superinterfaces:
CurveSegment, GenericCurve

```@UML(identifier="GM_Conic",
specification=ISO_19107)
public interface Conic
extends CurveSegment```
Any general conic curve. Any of the conic section curves can be canonically represented in polar co-ordinates (ρ, φ) as: where "P" is semi-latus rectum and "e" is the eccentricity. This gives a conic with focus at the pole (origin), and the vertex on the conic nearest this focus in the direction of the polar axis, φ=0.

For e=0, this is a circle. For 0 < e < 1, this is an ellipse. For e=1, this is a parabola. For e>1, this is one branch of a hyperbola.

These generic conics can be viewed in a two-dimensional Cartesian parameter space (uv) given by the usual coordinate conversions u=ρcos(φ) and v=ρsin(φ). We can then convert this to a 3D coordinate reference system by using an affine transformation, (uv) → (xyz) which is defined by:

(TODO: paste the matrix here, same as AffinePlacement)

This gives us φ as the constructive parameter. The direct position given by (x0, y0, z0) is the image of the origin in the local coordinate space (u, v) Alternatively, the origin may be shifted to the vertex of the conic as

u' = ρcos(φ) - P/(1 + e)   and   v' = ρsin(φ)

and v can be used as the constructive parameter. In general, conics with small eccentricity and small P, use the first or "central" representation. Those with large eccentricity or large P tend to use the second or "linear" representation.

Since:
GeoAPI 1.0
Author:
Martin Desruisseaux (IRD)
• ### Method Summary

All Methods
Modifier and Type Method and Description
`double` `getEccentricity()`
Returns the value of the eccentricity parameter "e" used in the defining equation above.
`double` `getEndConstructiveParam()`
Return the end point parameter used in the constructive paramerization.
`AffinePlacement` `getPosition()`
Returns an affine transformation object that maps the conic from parameter space into the coordinate space of the target coordinate reference system of the conic corresponding to the coordinate reference system of the Geometry.
`double` `getSemiLatusRectum()`
Returns the value of the parameter "P" used in the defining equation above.
`double` `getStartConstructiveParam()`
Return the start point parameter used in the constructive paramerization.
`boolean` `isShifted()`
Returns `false` if the affine transformation is used on the unshifted (u, v) and `true` if the affine transformation is applied to the shifted parameters (u', v').
• ### 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

• #### getPosition

```@UML(identifier="position",
obligation=MANDATORY,
specification=ISO_19107)
AffinePlacement getPosition()```
Returns an affine transformation object that maps the conic from parameter space into the coordinate space of the target coordinate reference system of the conic corresponding to the coordinate reference system of the Geometry. This affine transformation is given by the formulae in the class description.
• #### isShifted

```@UML(identifier="shifted",
obligation=MANDATORY,
specification=ISO_19107)
boolean isShifted()```
Returns `false` if the affine transformation is used on the unshifted (u, v) and `true` if the affine transformation is applied to the shifted parameters (u', v'). This controls whether the focus or the vertex of the conic is at the origin in parameter space.
• #### getEccentricity

```@UML(identifier="eccentricity",
obligation=MANDATORY,
specification=ISO_19107)
double getEccentricity()```
Returns the value of the eccentricity parameter "e" used in the defining equation above. It controls the general shape of the curve, determining whether the curve is a circle, ellipse, parabola, or hyperbola.
• #### getSemiLatusRectum

```@UML(identifier="semiLatusRectum",
obligation=MANDATORY,
specification=ISO_19107)
double getSemiLatusRectum()```
Returns the value of the parameter "P" used in the defining equation above. It controls how broad the conic is at each of its foci.
• #### getStartConstructiveParam

```@UML(identifier="startConstrParam",
obligation=MANDATORY,
specification=ISO_19107)
double getStartConstructiveParam()```
Return the start point parameter used in the constructive paramerization. The following relation must be hold:

```forConstructiveParam(getStartConstructiveParam()) .equals( getStartPoint() )```

``` There is no assumption that the start constructive parameter is less than the end constructive parameter, but the parameterization must be strictly monotonic (strictly increasing, or strictly decreasing).```
``` Specified by: getStartConstructiveParam in interface GenericCurve Returns: The parameter used in the constructive paramerization for the start point. See Also: GenericCurve.getStartParam(), GenericCurve.getEndConstructiveParam(), GenericCurve.forConstructiveParam(double) ```
• ``` ```
``` getEndConstructiveParam @UML(identifier="endConstrParam", obligation=MANDATORY, specification=ISO_19107) double getEndConstructiveParam() Return the end point parameter used in the constructive paramerization. The following relation must be hold: forConstructiveParam(getEndConstructiveParam()) .equals( getEndPoint() ) There is no assumption that the start constructive parameter is less than the end constructive parameter, but the parameterization must be strictly monotonic (strictly increasing, or strictly decreasing). Specified by: getEndConstructiveParam in interface GenericCurve Returns: The parameter used in the constructive paramerization for the end point. See Also: GenericCurve.getEndParam(), GenericCurve.getStartConstructiveParam(), GenericCurve.forConstructiveParam(double) ```
• ``` ```
``` ```
• ``` ```
``` ```
``` ```
``` Skip navigation links Overview Package Class Use Tree Deprecated Index Help Prev Class Next Class Frames No Frames All Classes <!-- allClassesLink = document.getElementById("allclasses_navbar_bottom"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> Summary:  Nested |  Field |  Constr |  Method Detail:  Field |  Constr |  Method Copyright © 1996–2020 Geotools. All rights reserved. ```