/*$************************************************************************************************
**
** $Id: Curve.java 831 2006-05-01 00:27:23Z Desruisseaux $
**
** $URL: http://svn.code.sf.net/p/geoapi/code/branches/2.0.x/geoapi/src/main/java/org/opengis/spatialschema/geometry/primitive/Curve.java $
**
** Copyright (C) 2003-2005 Open GIS Consortium, Inc.
** All Rights Reserved. http://www.opengis.org/legal/
**
*************************************************************************************************/
package org.opengis.spatialschema.geometry.primitive;
// J2SE direct dependencies
import java.util.List;
// OpenGIS direct dependencies
import org.opengis.spatialschema.geometry.geometry.GenericCurve;
// Annotations
import org.opengis.annotation.UML;
import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
/**
* Curve with a positive orientation. {@code Curve} is
* a descendent subtype of {@link Primitive} through {@link OrientablePrimitive}. It is the basis
* for 1-dimensional geometry. A curve is a continuous image of an open interval and so could be
* written as a parameterized function such as
*
* c(t):(a, b) → En
*
* where "t" is a real parameter and En is Euclidean space of dimension n
* (usually 2 or 3, as determined by the coordinate reference system). Any other parameterization
* that results in the same image curve, traced in the same direction, such as any linear shifts
* and positive scales such as
*
* e(t) = c(a + t(b-a)):(0,1) → En,
*
* is an equivalent representation of the same curve. For the sake of simplicity, {@code Curve}s
* should be parameterized by arc length, so that the parameterization operation inherited from
* {@link GenericCurve} will be valid for parameters between 0 and the length of the curve.
*
* Curves are continuous, connected, and have a measurable length in terms of the coordinate system.
* The orientation of the curve is determined by this parameterization, and is consistent with the
* tangent function, which approximates the derivative function of the parameterization and shall
* always point in the "forward" direction. The parameterization of the reversal of the curve defined
* by
*
* c(t):(a, b) → En
*
* would be defined by a function of the form
*
* s(t) = c(a + b - t):(a, b) → En.
*
*
* A curve is composed of one or more curve segments. Each curve segment within a curve may be
* defined using a different interpolation method. The curve segments are connected to one another,
* with the end point of each segment except the last being the start point of the next segment in
* the segment list.
*
* @version Abstract specification 5
* @author Martin Desruisseaux (IRD)
* @since GeoAPI 1.0
*
* @see PrimitiveFactory#createCurve
*/
@UML(identifier="GM_Curve", specification=ISO_19107)
public interface Curve extends OrientableCurve, GenericCurve {
/**
* Lists the components {@linkplain CurveSegment curve segments} of {@code Curve}, each
* of which defines the direct position of points along a portion of the curve. The order of
* the {@linkplain CurveSegment curve segments} is the order in which they are used to trace
* this {@code Curve}. For a particular parameter interval, the {@code Curve} and
* {@link CurveSegment} agree.
*
* @return The list of curve segments. Should never be {@code null} neither empty.
*
* @see CurveSegment#getCurve
*/
@UML(identifier="segment", obligation=MANDATORY, specification=ISO_19107)
public List getSegments();
}
Ads help maintain this website.