public class TLcd2DEditablePointList extends Object implements ILcd2DEditablePointList, ILcdCloneable, ILcdPointList,ILcdPointList2
ILcd2DEditablePointList
.
This implementation uses an array of the right size to store the list of
points, which is memory efficient, but inefficient for adding and
removing points.
This class is thread-safe for concurrent read-only access of its contents. For read-write access, external locking must be used. Such locking is typically done at the model level.
Note that the default implementation of the create2DEditablePoint(double, double)
method creates
cartesian points (TLcdXYPoint), which are not suitable for use in geodetic shapes
(TLcdLonLatPolypoint, TLcdLonLatPolyline, etc).
Constructor and Description |
---|
TLcd2DEditablePointList()
Constructs a new empty
TLcd2DEditablePointList . |
TLcd2DEditablePointList(ILcd2DEditablePoint[] a2DEditablePoints,
boolean aDeepCopy)
Constructs a new
TLcd2DEditablePointList that contains the given array of points. |
TLcd2DEditablePointList(ILcd2DEditablePointList aPointList,
boolean aDeepCopy)
Constructs a new
TLcd2DEditablePointList that is a copy of the given ILcd2DEditablePointList . |
Modifier and Type | Method and Description |
---|---|
Object |
clone()
Creates and returns a copy of this object.
|
protected ILcd2DEditablePoint |
create2DEditablePoint(double aX,
double aY)
Creates an
ILcd2DEditablePoint with coordinates ( aX, aY ). |
boolean |
equals(Object obj) |
ILcdPoint |
getPoint(int aIndex)
Returns the
ILcdPoint at a given index. |
int |
getPointCount()
Returns the number of
ILcdPoint objects in the list. |
void |
getPointSFCT(int aIndex,
ILcd3DEditablePoint aPointSFCT)
Stores the coordinates of the point at
aIndex in the given point. |
double |
getX(int aIndex)
Returns the X coordinate of the point at
aIndex . |
double |
getY(int aIndex)
Returns the Y coordinate of the point at
aIndex . |
double |
getZ(int aIndex)
Returns the Z coordinate of the point at
aIndex . |
void |
insert2DPoint(int aIndex,
double aX,
double aY)
Uses create2DEditablePoint to create a new ILcd2DEditablePoint from ( aX, aY ) .
|
void |
insert2DPoint(int aIndex,
ILcd2DEditablePoint a2DEditablePoint) |
void |
move2DPoint(int aIndex,
double aX,
double aY)
Moves the specified point of this
ILcd2DEditablePointList to the given point in the 2D space. |
void |
removePointAt(int aIndex)
Removes the point at the given index from this
ILcd2DEditablePointList . |
void |
translate2D(double aDeltaX,
double aDeltaY)
Translates all the points of this
ILcd2DEditablePointList from their current positions
over the given translation vector in the 2D space. |
void |
translate2DPoint(int aIndex,
double aX,
double aY)
Translates the specified point of this
ILcd2DEditablePointList from its current position
over the given translation vector in the 2D space. |
finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
append2DPoint
public TLcd2DEditablePointList()
TLcd2DEditablePointList
.public TLcd2DEditablePointList(ILcd2DEditablePointList aPointList, boolean aDeepCopy)
TLcd2DEditablePointList
that is a copy of the given ILcd2DEditablePointList
.aPointList
- the ILcd2DEditablePointList
to copy.aDeepCopy
- a boolean indicating whether the individual points in
the list should be cloned or just referenced.public TLcd2DEditablePointList(ILcd2DEditablePoint[] a2DEditablePoints, boolean aDeepCopy)
TLcd2DEditablePointList
that contains the given array of points.a2DEditablePoints
- the array of points to copy.aDeepCopy
- a boolean indicating whether the array and the individual points in
the list should be cloned or not.public final int getPointCount()
ILcdPointList
ILcdPoint
objects in the list.getPointCount
in interface ILcdPointList
ILcdPoint
objects in the list.public final ILcdPoint getPoint(int aIndex)
ILcdPointList
ILcdPoint
at a given index.getPoint
in interface ILcdPointList
aIndex
- a valid index in the list of ILcdPoint
objects.ILcdPoint
at the given index.public void translate2D(double aDeltaX, double aDeltaY)
ILcd2DEditablePointList
ILcd2DEditablePointList
from their current positions
over the given translation vector in the 2D space. Only the first two
dimensions of the points are considered. The third dimension is left unchanged.translate2D
in interface ILcd2DEditablePointList
aDeltaX
- the x coordinate of the translation vector.aDeltaY
- the y coordinate of the translation vector.public void move2DPoint(int aIndex, double aX, double aY)
ILcd2DEditablePointList
ILcd2DEditablePointList
to the given point in the 2D space. Only the first
two dimensions of the ILcdShape
are considered.
The third dimension is left unchanged.move2DPoint
in interface ILcd2DEditablePointList
aIndex
- a valid index in the list of points.aX
- the x coordinate of the point.aY
- the y coordinate of the point.public void translate2DPoint(int aIndex, double aX, double aY)
ILcd2DEditablePointList
ILcd2DEditablePointList
from its current position
over the given translation vector in the 2D space. Only the first two
dimensions of the points are considered. The third dimension is left unchanged.translate2DPoint
in interface ILcd2DEditablePointList
aX
- the x coordinate of the translation vector.aY
- the y coordinate of the translation vector.public void insert2DPoint(int aIndex, ILcd2DEditablePoint a2DEditablePoint)
public void insert2DPoint(int aIndex, double aX, double aY)
insert2DPoint
in interface ILcd2DEditablePointList
aIndex
- a valid new index in the list of points.aX
- the x coordinate of the new point.aY
- the y coordinate of the new point.ILcd2DEditablePointList
public void removePointAt(int aIndex)
ILcd2DEditablePointList
ILcd2DEditablePointList
.removePointAt
in interface ILcd2DEditablePointList
aIndex
- a valid index in the list of ILcdPoint
objects.public Object clone()
clone
in interface ILcdCloneable
clone
in class Object
Object.clone()
protected ILcd2DEditablePoint create2DEditablePoint(double aX, double aY)
ILcd2DEditablePoint
with coordinates ( aX, aY ).
By default this method creates a TLcdXYPoint. To use the point list with a geodetic shape
(TLcdLonLatPolypoint, TLcdLonLatPolyline, etc) you should override this method to create
geodetic points (see TLcdLonLatPoint
).aX
- The x-co-ordinate of the point to be created.aY
- The y-co-ordinate of the point to be created.TLcdXYPoint
with coordinates ( aX, aY ).public double getX(int aIndex)
ILcdPointList
aIndex
.getX
in interface ILcdPointList
aIndex
- the index of the point for which to return the X coordinate.aIndex
.public double getY(int aIndex)
ILcdPointList
aIndex
.getY
in interface ILcdPointList
aIndex
- the index of the point for which to return the Y coordinate.aIndex
.public double getZ(int aIndex)
ILcdPointList
aIndex
.getZ
in interface ILcdPointList
aIndex
- the index of the point for which to return the Z coordinate.aIndex
.public void getPointSFCT(int aIndex, ILcd3DEditablePoint aPointSFCT)
ILcdPointList
aIndex
in the given point.getPointSFCT
in interface ILcdPointList
aIndex
- the index of the point for which to retrieve the coordinates.aPointSFCT
- the side-effect parameter in which to store the coordinates of the requested
point.