/*$************************************************************************************************
 **
 ** $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.