org.geolatte.geom.PositionSequence Maven / Gradle / Ivy
Show all versions of geolatte-geom Show documentation
/*
* This file is part of the GeoLatte project.
*
* GeoLatte is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GeoLatte is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with GeoLatte. If not, see .
*
* Copyright (C) 2010 - 2011 and Ownership of code is shared by:
* Qmino bvba - Romeinsestraat 18 - 3001 Heverlee (http://www.qmino.com)
* Geovise bvba - Generaal Eisenhowerlei 9 - 2140 Antwerpen (http://www.geovise.com)
*/
package org.geolatte.geom;
/**
* A PositionSequence
is an ordered sequence of Position
s.
*
* A PositionSequence
is typically used to store the Position
s (vertices) that define a
* curve (a 1-dimensional geometric primitive), with the subtype of the curve specifying the form of interpolation between
* consecutive Position
s. (E.g.a LineString
uses linear interpolation between Position
s.)
*
* @author Karel Maesen, Geovise BVBA, 2011
*/
public interface PositionSequence extends Iterable
{
PositionSequence
clone();
Class
getPositionClass();
PositionFactory
getPositionFactory();
/**
* Returns true iff this PositionSequence
contains no Position
s
*
* @return true iff this PositionSequence
contains no Position
s
*/
boolean isEmpty();
/**
* Returns the coordinate dimension of this PositionSequence
.
*
* The coordinate dimension is number of measurements or axes needed to describe Position
* in the coordinate system associated with this PositionSequence
.
*
* @return the coordinate dimension of this PositionSequence
*/
int getCoordinateDimension();
/**
* Returns the number of Position
s contained in this PositionSequence
.
*
* @return the number of Position
s contained in this PositionSequence
.
*/
int size();
/**
* Copies the coordinates at position i into the specified array.
* @param position the position index to copy
* @param coordinates the destination array
* @throws IllegalArgumentException if the destination array is smaller than the coordiante dimension.
*/
void getCoordinates(int position, double[] coordinates);
P getPositionN(int index);
/**
* Accepts a PositionVisitor
.
*
* This instance will pass the visitor to all of its Position
s.
*
* @param visitor the visitor for this instance's Position
s
*/
void accept(PositionVisitor visitor);
/**
* Accepts a LLAPositionVisitor
.
*
* @param visitor
*/
void accept(LLAPositionVisitor visitor);
/**
* Creates a new PositionSequence
with positions in reverse order.
*
* @return
*/
PositionSequence
reverse();
}