@UML(identifier="GM_Conic", specification=ISO_19107) public interface Conic extends CurveSegment
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 (u, v) 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, (u, v) → (x, y, z) which is defined by:
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.
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'). |
getBoundary, getCurve, getInterpolation, getNumDerivativesAtEnd, getNumDerivativesAtStart, getNumDerivativesInterior, getSamplePoints, reverse
asLineString, forConstructiveParam, forParam, getEndParam, getEndPoint, getParamForPoint, getStartParam, getStartPoint, getTangent, length, length
@UML(identifier="position", obligation=MANDATORY, specification=ISO_19107) AffinePlacement getPosition()
@UML(identifier="shifted", obligation=MANDATORY, specification=ISO_19107) boolean isShifted()
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.@UML(identifier="eccentricity", obligation=MANDATORY, specification=ISO_19107) double getEccentricity()
@UML(identifier="semiLatusRectum", obligation=MANDATORY, specification=ISO_19107) double getSemiLatusRectum()
@UML(identifier="startConstrParam", obligation=MANDATORY, specification=ISO_19107) double getStartConstructiveParam()
forConstructiveParam(getStartConstructiveParam())
.equals(
getStartPoint
() )
getStartConstructiveParam
in interface GenericCurve
GenericCurve.getStartParam()
,
GenericCurve.getEndConstructiveParam()
,
GenericCurve.forConstructiveParam(double)
@UML(identifier="endConstrParam", obligation=MANDATORY, specification=ISO_19107) double getEndConstructiveParam()
forConstructiveParam(getEndConstructiveParam())
.equals(
getEndPoint
() )
getEndConstructiveParam
in interface GenericCurve
GenericCurve.getEndParam()
,
GenericCurve.getStartConstructiveParam()
,
GenericCurve.forConstructiveParam(double)
Copyright © 1996–2019 Geotools. All rights reserved.