public class OTSLine3D extends Object implements nl.tudelft.simulation.dsol.animation.Locatable, Serializable
Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
$LastChangedDate: 2015-07-16 10:20:53 +0200 (Thu, 16 Jul 2015) $, @version $Revision: 1124 $, by $Author: pknoppers $,
initial version Jul 22, 2015
| Modifier and Type | Class and Description |
|---|---|
static class |
OTSLine3D.OffsetMethod
Which offsetLine method to use...
|
| Modifier and Type | Field and Description |
|---|---|
static OTSLine3D.OffsetMethod |
OFFSETMETHOD
Which offset line method to use...
|
| Constructor and Description |
|---|
OTSLine3D(com.vividsolutions.jts.geom.Coordinate[] coordinates)
Construct a new OTSLine3D from an array of Coordinate.
|
OTSLine3D(com.vividsolutions.jts.geom.Geometry geometry)
Construct a new OTSLine3D from a Geometry.
|
OTSLine3D(com.vividsolutions.jts.geom.LineString lineString)
Construct a new OTSLine3D from a LineString.
|
OTSLine3D(List<OTSPoint3D> pointList)
Construct a new OTSLine3D from a List<OTSPoint3D>.
|
OTSLine3D(OTSPoint3D... points)
Construct a new OTSLine3D.
|
OTSLine3D(Path2D path)
Construct a new OTSShape (closed shape) from a Path2D.
|
| Modifier and Type | Method and Description |
|---|---|
static OTSLine3D |
concatenate(double toleranceSI,
OTSLine3D... lines)
Concatenate several OTSLine3D instances.
|
static OTSLine3D |
concatenate(OTSLine3D... lines)
Concatenate several OTSLine3D instances.
|
static OTSLine3D |
createAndCleanOTSLine3D(List<OTSPoint3D> pointList)
Create an OTSLine3D, while cleaning repeating successive points.
|
static OTSLine3D |
createAndCleanOTSLine3D(OTSPoint3D... points)
Create an OTSLine3D, while cleaning repeating successive points.
|
boolean |
equals(Object obj) |
OTSLine3D |
extract(double start,
double end)
Create a new OTSLine3D that covers a sub-section of this OTSLine3D.
|
OTSLine3D |
extract(org.djunits.value.vdouble.scalar.Length start,
org.djunits.value.vdouble.scalar.Length end)
Create a new OTSLine3D that covers a sub-section of this OTSLine3D.
|
OTSLine3D |
extractFractional(double start,
double end)
Construct a new OTSLine3D covering the indicated fraction of this OTSLine3D.
|
OTSPoint3D |
get(int i)
Return one point of this OTSLine3D.
|
javax.media.j3d.Bounds |
getBounds() |
OTSPoint3D |
getCentroid()
Retrieve the centroid of this OTSLine3D.
|
com.vividsolutions.jts.geom.Coordinate[] |
getCoordinates()
Construct a Coordinate array and fill it with the points of this OTSLine3D.
|
com.vividsolutions.jts.geom.Envelope |
getEnvelope()
Get the bounding rectangle of this OTSLine3D.
|
OTSPoint3D |
getFirst()
Return the first point of this OTSLine3D.
|
OTSPoint3D |
getLast()
Return the last point of this OTSLine3D.
|
org.djunits.value.vdouble.scalar.Length |
getLength()
Return the length of this OTSLine3D in meters.
|
double |
getLengthSI()
Return the length of this OTSLine3D as a double value in SI units.
|
com.vividsolutions.jts.geom.LineString |
getLineString()
Construct a LineString from this OTSLine3D.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocation() |
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocation(org.djunits.value.vdouble.scalar.Length position)
Get the location at a position on the line, with its direction.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocationExtended(org.djunits.value.vdouble.scalar.Length position)
Get the location at a position on the line, with its direction.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocationExtendedSI(double positionSI)
Get the location at a position on the line, with its direction.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocationFraction(double fraction)
Get the location at a fraction of the line, with its direction.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocationFraction(double fraction,
double tolerance)
Get the location at a fraction of the line, with its direction.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocationFractionExtended(double fraction)
Get the location at a fraction of the line (or outside the line), with its direction.
|
nl.tudelft.simulation.language.d3.DirectedPoint |
getLocationSI(double positionSI)
Get the location at a position on the line, with its direction.
|
OTSPoint3D[] |
getPoints()
Return an array of OTSPoint3D that represents this OTSLine3D.
|
int |
hashCode() |
static void |
main(String[] args) |
OTSLine3D |
noiseFilteredLine(double noiseLevel)
Construct a line that is equal to this line except for segments that are shorter than the noiseLevel.
|
OTSLine3D |
noiseFilterRamerDouglasPeuker(double epsilon,
boolean useHorizontalDistance)
Clean up a list of points that describe a polyLine by removing points that lie within epsilon distance of a more
straightened version of the line.
|
OTSLine3D |
offsetLine(double offset)
Construct parallel line.
TODO Let the Z-component of the result follow the Z-values of the reference line. |
OTSLine3D |
offsetLine(double[] relativeFractions,
double[] offsets)
Create a line at linearly varying offset from this line.
|
OTSLine3D |
offsetLine(double offsetAtStart,
double offsetAtEnd)
Create a line at linearly varying offset from this line.
|
double |
projectFractional(org.djunits.value.vdouble.scalar.Direction start,
org.djunits.value.vdouble.scalar.Direction end,
double x,
double y)
Returns the fractional projection of a point to a line.
|
double |
projectOrthogonal(double x,
double y)
Returns the fractional position along this line of the orthogonal projection of point (x, y) on this line.
|
OTSLine3D |
reverse()
Construct a new OTSLine3D with all points of this OTSLine3D in reverse order.
|
int |
size()
Return the number of points in this OTSLine3D.
|
String |
toExcel() |
String |
toString() |
OTSLine3D |
truncate(double lengthSI)
Truncate a line at the given length (less than the length of the line, and larger than zero) and return a new line.
|
public static final OTSLine3D.OffsetMethod OFFSETMETHOD
public OTSLine3D(OTSPoint3D... points) throws OTSGeometryException
points - the array of points to construct this OTSLine3D from.OTSGeometryException - when the provided points do not constitute a valid line (too few points or identical
adjacent points)public OTSLine3D(com.vividsolutions.jts.geom.Coordinate[] coordinates)
throws OTSGeometryException
coordinates - the array of coordinates to construct this OTSLine3D fromOTSGeometryException - when the provided points do not constitute a valid line (too few points or identical
adjacent points)public OTSLine3D(com.vividsolutions.jts.geom.LineString lineString)
throws OTSGeometryException
lineString - the lineString to construct this OTSLine3D from.OTSGeometryException - when the provided LineString does not constitute a valid line (too few points or identical
adjacent points)public OTSLine3D(com.vividsolutions.jts.geom.Geometry geometry)
throws OTSGeometryException
geometry - the geometry to construct this OTSLine3D fromOTSGeometryException - when the provided Geometry do not constitute a valid line (too few points or identical
adjacent points)public OTSLine3D(List<OTSPoint3D> pointList) throws OTSGeometryException
pointList - the list of points to construct this OTSLine3D from.OTSGeometryException - when the provided points do not constitute a valid line (too few points or identical
adjacent points)public OTSLine3D(Path2D path) throws OTSGeometryException
path - the Path2D to construct this OTSLine3D from.OTSGeometryException - when the provided points do not constitute a valid line (too few points or identical
adjacent points)public final OTSLine3D offsetLine(double offset)
offset - double; offset distance from the reference line; positive is LEFT, negative is RIGHTpublic final OTSLine3D noiseFilteredLine(double noiseLevel)
noiseLevel - double; the minimum segment length that is not removedpublic final OTSLine3D noiseFilterRamerDouglasPeuker(double epsilon, boolean useHorizontalDistance)
epsilon - double; maximal deviationuseHorizontalDistance - boolean; if true; the horizontal distance is used; if false; the 3D distance is usedpublic final OTSLine3D offsetLine(double offsetAtStart, double offsetAtEnd) throws OTSGeometryException
offsetAtStart - double; offset at the start of the reference line (positive value is Left, negative value is Right)offsetAtEnd - double; offset at the end of the reference line (positive value is Left, negative value is Right)OTSGeometryException - when this method fails to create the offset linepublic final OTSLine3D offsetLine(double[] relativeFractions, double[] offsets) throws OTSGeometryException
relativeFractions - double[]; positional fractions for which the offsets have to be generatedoffsets - double[]; offsets at the relative positions (positive value is Left, negative value is Right)OTSGeometryException - when this method fails to create the offset linepublic static OTSLine3D concatenate(OTSLine3D... lines) throws OTSGeometryException
lines - OTSLine3D... one or more OTSLine3D. The last point of the first must match the first of the
second, etc.OTSGeometryException - if zero lines are given, or when there is a gap between consecutive linespublic static OTSLine3D concatenate(double toleranceSI, OTSLine3D... lines) throws OTSGeometryException
toleranceSI - the tolerance between the end point of a line and the first point of the next linelines - OTSLine3D... one or more OTSLine3D. The last point of the first must match the first of the
second, etc.OTSGeometryException - if zero lines are given, or when there is a gap between consecutive linespublic final OTSLine3D reverse()
public final OTSLine3D extractFractional(double start, double end) throws OTSGeometryException
start - double; starting point, valid range [0..end)end - double; ending point, valid range (start..1]OTSGeometryException - when start >= end, or start < 0, or end > 1public final OTSLine3D extract(org.djunits.value.vdouble.scalar.Length start, org.djunits.value.vdouble.scalar.Length end) throws OTSGeometryException
start - Length; the length along this OTSLine3D where the sub-section starts, valid range [0..end)end - Length; length along this OTSLine3D where the sub-section ends, valid range
(start..length (length is the length of this OTSLine3D)OTSGeometryException - when start >= end, or start < 0, or end > lengthpublic final OTSLine3D extract(double start, double end) throws OTSGeometryException
start - double; length along this OTSLine3D where the sub-section starts, valid range [0..end)end - double; length along this OTSLine3D where the sub-section ends, valid range
(start..length (length is the length of this OTSLine3D)OTSGeometryException - when start >= end, or start < 0, or end > lengthpublic static OTSLine3D createAndCleanOTSLine3D(OTSPoint3D... points) throws OTSGeometryException
points - the coordinates of the line as OTSPoint3DOTSGeometryException - when number of points < 2public static OTSLine3D createAndCleanOTSLine3D(List<OTSPoint3D> pointList) throws OTSGeometryException
pointList - List<OTSPoint3D>; list of the coordinates of the line as OTSPoint3D; any duplicate points in this
list are removed (this method may modify the provided list)OTSGeometryException - when number of non-equal points < 2public final com.vividsolutions.jts.geom.Coordinate[] getCoordinates()
public final com.vividsolutions.jts.geom.LineString getLineString()
public final int size()
public final OTSPoint3D getFirst()
public final OTSPoint3D getLast()
public final OTSPoint3D get(int i) throws OTSGeometryException
i - int; the index of the point to retrieveOTSGeometryException - when i < 0 or i > the number of pointspublic final double getLengthSI()
public final org.djunits.value.vdouble.scalar.Length getLength()
public final OTSPoint3D[] getPoints()
public final nl.tudelft.simulation.language.d3.DirectedPoint getLocationExtended(org.djunits.value.vdouble.scalar.Length position)
position - the position on the line for which to calculate the point on, before, of after the linepublic final nl.tudelft.simulation.language.d3.DirectedPoint getLocationExtendedSI(double positionSI)
positionSI - the position on the line for which to calculate the point on, before, of after the line, in SI unitspublic final nl.tudelft.simulation.language.d3.DirectedPoint getLocationFraction(double fraction)
throws OTSGeometryException
fraction - the fraction for which to calculate the point on the lineOTSGeometryException - when fraction less than 0.0 or more than 1.0.public final nl.tudelft.simulation.language.d3.DirectedPoint getLocationFraction(double fraction,
double tolerance)
throws OTSGeometryException
fraction - the fraction for which to calculate the point on the linetolerance - the delta from 0.0 and 1.0 that will be forgivenOTSGeometryException - when fraction less than 0.0 or more than 1.0.public final nl.tudelft.simulation.language.d3.DirectedPoint getLocationFractionExtended(double fraction)
fraction - the fraction for which to calculate the point on the linepublic final nl.tudelft.simulation.language.d3.DirectedPoint getLocation(org.djunits.value.vdouble.scalar.Length position)
throws OTSGeometryException
position - the position on the line for which to calculate the point on the lineOTSGeometryException - when position less than 0.0 or more than line length.public final nl.tudelft.simulation.language.d3.DirectedPoint getLocationSI(double positionSI)
throws OTSGeometryException
positionSI - the position on the line for which to calculate the point on the lineOTSGeometryException - when position less than 0.0 or more than line length.public final OTSLine3D truncate(double lengthSI) throws OTSGeometryException
lengthSI - the location where to truncate the lineOTSGeometryException - when position less than 0.0 or more than line length.public final double projectOrthogonal(double x,
double y)
x - x-coordinate of point to projecty - y-coordinate of point to projectpublic final double projectFractional(org.djunits.value.vdouble.scalar.Direction start,
org.djunits.value.vdouble.scalar.Direction end,
double x,
double y)
____________________________ G .
. | | . .
. | . . . . helper lines | . .
. | _.._.._ projection line | I. .
. |____________________________| _.'._ . L
F. _.' . '-. .
.. B _.' . '-.
. . _.\ . . D
. . _.' : . .
J . . _.' \ . .
.. . _.' : . M
. . ..-' \ .
. . /H. A .
. . / . .
C _________/ . .
. . . .
K . . . .
. . . .
. . . . N
. . . .
. . . .
. . . .
. . . .
. .E
. .
. .
. .
Fractional projection may fail in three cases.
start - direction in first pointend - direction in last pointx - x-coordinate of point to projecty - y-coordinate of point to projectpublic final OTSPoint3D getCentroid()
public final com.vividsolutions.jts.geom.Envelope getEnvelope()
public nl.tudelft.simulation.language.d3.DirectedPoint getLocation()
getLocation in interface nl.tudelft.simulation.dsol.animation.Locatablepublic javax.media.j3d.Bounds getBounds()
getBounds in interface nl.tudelft.simulation.dsol.animation.Locatablepublic final String toExcel()
public static void main(String[] args) throws OTSGeometryException
args - String[]; the command line arguments (not used)OTSGeometryException - in case of errorCopyright © 2014–2016 Delft University of Technology. All rights reserved.