Class TLcdRoundedPolyline
- All Implemented Interfaces:
ILcdBounded
,ILcdCompositeCurve
,ILcdCurve
,ILcdShape
,ILcdCache
,ILcdCloneable
,ILcdInvalidateable
,Serializable
,Cloneable
This class represents a closed, 2D composite curve
, whose shape is determined by a roundness value and a set of points.
These points are referred to as control points. Typically, only the first and last points will be on the curve. The rest of the curve will be inside the convex hull formed by the control points.
This class is typically used to create a rounded version of a ILcdPolyline
.
- Since:
- 2021.1
- See Also:
-
Field Summary
Fields inherited from interface com.luciad.shape.ILcdCurve
INTERPOLATION_CIRCLE_BY_3POINTS, INTERPOLATION_CIRCLE_BY_CENTERPOINT, INTERPOLATION_CIRCULARARC_BY_3POINTS, INTERPOLATION_CIRCULARARC_BY_BULGE, INTERPOLATION_CIRCULARARC_BY_CENTERPOINT, INTERPOLATION_ELLIPTICAL, INTERPOLATION_GEODESIC, INTERPOLATION_LINEAR, INTERPOLATION_MIXED, INTERPOLATION_RHUMB
-
Constructor Summary
ConstructorDescriptionTLcdRoundedPolyline
(ILcdModelReference aModelReference, ILcdPointList aControlPoints, double aRoundness) Creates a newTLcdRoundedPolyline
using the points contained in the givenILcdPointList
as control points.TLcdRoundedPolyline
(ILcdPointList aControlPoints, double aRoundness) Creates a newTLcdRoundedPolyline
using the points contained in the givenILcdPointList
as control points and aTLcdGeodeticReference
as model reference. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Clears the cache.clone()
MakesObject.clone()
public.void
computePointSFCT
(double aParam, ILcd3DEditablePoint aPointSFCT) Computes a point of the curve, defined by the given parameter.boolean
contains2D
(double aX, double aY) Checks whether thisILcdShape
contains the given point in the 2D space.boolean
contains2D
(ILcdPoint aPoint) Checks whether thisILcdShape
contains the givenILcdPoint
in the 2D space.boolean
contains3D
(double aX, double aY, double aZ) Checks whether thisILcdShape
contains the given point in the 3D space.boolean
contains3D
(ILcdPoint aPoint) Checks whether thisILcdShape
contains the givenILcdPoint
in the 3D space.boolean
Returns theILcdBounds
by which the geometry of thisILcdBounded
object is bounded.getCachedObject
(Object aKey) Looks up and returns the cached Object corresponding to the given key.Returns the list of control points that define thisILcdCompositeCurve
.Returns a list with the curve's elements.Retrieves the end point of the curve.double
Returns the angle of the curve's tangent at the end point, in degrees counterclockwise from the direction at 3 o'clock.Returns the focus point of thisILcdShape
.Returns the interpolation method used by this curve, which isILcdCurve.INTERPOLATION_MIXED
.double
getLength2D
(double aParam1, double aParam2) Returns the length between two points of the curve, defined by the given parameters.int
Returns the number of intersections between this curve and a line segment defined by the two specified points.The model reference of the model that this shape will be added to.double
This value indicates the roundness of thisTLcdRoundedPolyline
.Retrieves the start point of the curve.double
Returns the angle of the curve's tangent at the start point, in degrees counterclockwise from the direction at 3 o'clock.double
getTangent2D
(double aParam) Returns the angle of the curve's tangent in the point defined by the given parameter, in degrees counterclockwise from the direction at 3 o'clock.int
hashCode()
void
insertIntoCache
(Object aKey, Object aObject) Inserts a cache Object corresponding to the given key Object.void
Invalidates all cached values of this object.removeCachedObject
(Object aKey) Looks up and removes the cached Object corresponding to the given key.
-
Constructor Details
-
TLcdRoundedPolyline
Creates a new
TLcdRoundedPolyline
using the points contained in the givenILcdPointList
as control points and aTLcdGeodeticReference
as model reference. You can use this constructor to create an open curve, that roughly follows the shape formed by the given control points. Typically, only the first and last points will be on the curve. The rest of the curve will be inside the convex hull formed by the control points.- Parameters:
aControlPoints
- AILcdPointList
whose points will be used as control points for the resultingTLcdRoundedPolyline
. Modifying theILcdPointList
will modifyTLcdRoundedPolyline
after callinginvalidateObject()
. This point list must not benull
.aRoundness
- A number in the range [0.0, 1.0] indicating the roundness of the resulting curve.
A value of 0.0 indicates no roundness, in which case the resulting curve will use straight lines.
A value of 1.0 indicates maximum roundness.
-
TLcdRoundedPolyline
public TLcdRoundedPolyline(ILcdModelReference aModelReference, ILcdPointList aControlPoints, double aRoundness) Creates a new
TLcdRoundedPolyline
using the points contained in the givenILcdPointList
as control points. You can use this constructor to create an open curve, that roughly follows the shape formed by the given control points. Typically, only the first and last points will be on the curve. The rest of the curve will be inside the convex hull formed by the control points.- Parameters:
aModelReference
- The model reference of the model that the resultingTLcdRoundedPolyline
will be added to. This model reference must not benull
.aControlPoints
- AILcdPointList
whose points will be used as control points for the resultingTLcdRoundedPolyline
. Modifying theILcdPointList
will modifyTLcdRoundedPolyline
after callinginvalidateObject()
. This point list must not benull
.aRoundness
- A number in the range [0.0, 1.0] indicating the roundness of the resulting curve.
A value of 0.0 indicates no roundness, in which case the resulting curve will use straight lines.
A value of 1.0 indicates maximum roundness.
-
-
Method Details
-
getRoundness
public double getRoundness()This value indicates the roundness of this
TLcdRoundedPolyline
.- Returns:
- A number in the range [0.0, 1.0] indicating the roundness of the resulting curve.
A value of 0.0 indicates no roundness, in which case the resulting curve will use straight lines.
A value of 1.0 indicates maximum roundness.
-
getControlPoints
Returns the list of control points that define this
ILcdCompositeCurve
.- Returns:
- A
ILcdPointList
containing the control points that define thisILcdCompositeCurve
.
-
getModelReference
The model reference of the model that this shape will be added to.- Returns:
- the model reference to use for the shape
-
getBounds
Description copied from interface:ILcdBounded
Returns theILcdBounds
by which the geometry of thisILcdBounded
object is bounded.If the geometry does not allow retrieving valid bounds (for example a polyline with 0 points) the return value is unspecified. It is highly recommended to return an
undefined
bounds. You can create undefined bounds using the default constructors ofTLcdLonLatBounds
orTLcdXYBounds
.- Specified by:
getBounds
in interfaceILcdBounded
- Returns:
- the
ILcdBounds
by which the geometry of thisILcdBounded
object is bounded.
-
getStartPoint
Description copied from interface:ILcdCompositeCurve
Retrieves the start point of the curve. This is equivalent with callingILcdCurve.computePointSFCT(double, com.luciad.shape.shape3D.ILcd3DEditablePoint)
with parameter value 0.In case of an empty composite curve,
null
is returned.- Specified by:
getStartPoint
in interfaceILcdCompositeCurve
- Specified by:
getStartPoint
in interfaceILcdCurve
- Returns:
- the start point of the curve
-
getEndPoint
Description copied from interface:ILcdCompositeCurve
Retrieves the end point of the curve. This is equivalent with callingILcdCurve.computePointSFCT(double, com.luciad.shape.shape3D.ILcd3DEditablePoint)
with parameter value 1.In case of an empty composite curve,
null
is returned.- Specified by:
getEndPoint
in interfaceILcdCompositeCurve
- Specified by:
getEndPoint
in interfaceILcdCurve
- Returns:
- the end point of the curve
-
getCurves
Description copied from interface:ILcdCompositeCurve
Returns a list with the curve's elements. Each sub-curve's end point, except for the last sub-curve, must coincide with the next sub-curve's start point.The returned list is not guaranteed to be editable. See
ILcdEditableCompositeCurve
for an editable variant of this interface.Note that this adding curves to the result of calling this method may throw a
ClassCastException
orIllegalArgumentException
in case the class of the curve(s) to add is not compatible with the implementation of the composite curve. Implementations should specify in their documentation all restrictions that apply in this context.- Specified by:
getCurves
in interfaceILcdCompositeCurve
- Returns:
- a list with the curve's elements
-
getInterpolation
Description copied from interface:ILcdCompositeCurve
Returns the interpolation method used by this curve, which isILcdCurve.INTERPOLATION_MIXED
.- Specified by:
getInterpolation
in interfaceILcdCompositeCurve
- Specified by:
getInterpolation
in interfaceILcdCurve
- Returns:
- the interpolation method used by this curve,
which is
INTERPOLATION_MIXED
.
-
getStartTangent2D
public double getStartTangent2D()Description copied from interface:ILcdCurve
Returns the angle of the curve's tangent at the start point, in degrees counterclockwise from the direction at 3 o'clock.The tangent orientation is from the start point towards the rest of the shape.
This is the same as
getTangent2D(0)
.- Specified by:
getStartTangent2D
in interfaceILcdCurve
- Returns:
- the curve's angle in the start point
-
getEndTangent2D
public double getEndTangent2D()Description copied from interface:ILcdCurve
Returns the angle of the curve's tangent at the end point, in degrees counterclockwise from the direction at 3 o'clock.The tangent orientation is from the end point, away from the curve before it.
This is the same as
getTangent2D(1)
.- Specified by:
getEndTangent2D
in interfaceILcdCurve
- Returns:
- the curve's angle in the end point
-
getTangent2D
public double getTangent2D(double aParam) Description copied from interface:ILcdCurve
Returns the angle of the curve's tangent in the point defined by the given parameter, in degrees counterclockwise from the direction at 3 o'clock.The tangent orientation is from the point at parameter
aParam
towards the rest of the shape.- The tangent at parameter 0 is the same as
ILcdCurve.getStartTangent2D()
. - The tangent at parameter 1 is the same as
ILcdCurve.getEndTangent2D()
.
- Specified by:
getTangent2D
in interfaceILcdCurve
- Parameters:
aParam
- a value of the closed interval [0,1]- Returns:
- the curve's angle in the point defined by the given parameter
- The tangent at parameter 0 is the same as
-
getLength2D
public double getLength2D(double aParam1, double aParam2) Description copied from interface:ILcdCurve
Returns the length between two points of the curve, defined by the given parameters.- When
aParam1 == aParam2
, the length is 0. - When
aParam1 == 0 and aParam2 == 1
, the length is the whole length of the curve. - When
aParam1 > aParam2
, the length is (aParam1 to 1
) + (0 to aParam2
).
- Specified by:
getLength2D
in interfaceILcdCurve
- Parameters:
aParam1
- a value of the closed interval [0,1]aParam2
- a value of the closed interval [0,1]- Returns:
- the length of the curve.
- When
-
computePointSFCT
Description copied from interface:ILcdCurve
Computes a point of the curve, defined by the given parameter.- At parameter 0, the point is the same as
ILcdCurve.getStartPoint()
. - At parameter 1, the point is the same as
ILcdCurve.getEndPoint()
.
- Specified by:
computePointSFCT
in interfaceILcdCurve
- Parameters:
aParam
- a value of the closed interval [0,1]aPointSFCT
- the point to store the computed curve point in
- At parameter 0, the point is the same as
-
getLineSegmentIntersectionCount
Description copied from interface:ILcdCurve
Returns the number of intersections between this curve and a line segment defined by the two specified points.This information can be used to perform containment calculations, if this curve is closed or if this curve is part of a composite closed curve. By determining the number of intersections between this curve and a line segment starting from a given point in a fixed direction, one can determine whether a point is located within the closed curve by using the even-odd rule.
- Specified by:
getLineSegmentIntersectionCount
in interfaceILcdCurve
- Parameters:
aP1
- the first point of the line segmentaP2
- the second point of the line segment- Returns:
- the number of intersections between the curve and the line segment
-
getFocusPoint
Description copied from interface:ILcdShape
Returns the focus point of thisILcdShape
.- Specified by:
getFocusPoint
in interfaceILcdShape
- Returns:
- the focus point of this
ILcdShape
.
-
contains2D
Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the givenILcdPoint
in the 2D space. Only the first two dimensions of theILcdShape
and theILcdPoint
are considered.- Specified by:
contains2D
in interfaceILcdShape
- Parameters:
aPoint
- theILcdPoint
to test.- Returns:
- the boolean result of the containment test.
- See Also:
-
contains2D
public boolean contains2D(double aX, double aY) Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the given point in the 2D space. Only the first two dimensions of theILcdShape
are considered.- Specified by:
contains2D
in interfaceILcdShape
- Parameters:
aX
- the x coordinate of the point.aY
- the y coordinate of the point.- Returns:
- the boolean result of the containment test.
-
contains3D
Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the givenILcdPoint
in the 3D space.- Specified by:
contains3D
in interfaceILcdShape
- Parameters:
aPoint
- theILcdPoint
to test.- Returns:
- the boolean result of the containment test.
- See Also:
-
contains3D
public boolean contains3D(double aX, double aY, double aZ) Description copied from interface:ILcdShape
Checks whether thisILcdShape
contains the given point in the 3D space.- Specified by:
contains3D
in interfaceILcdShape
- Parameters:
aX
- the x coordinate of the point.aY
- the y coordinate of the point.aZ
- the z coordinate of the point.- Returns:
- the boolean result of the containment test.
-
insertIntoCache
Description copied from interface:ILcdCache
Inserts a cache Object corresponding to the given key Object.- Specified by:
insertIntoCache
in interfaceILcdCache
- Parameters:
aKey
- the key Object that will be used to identify the Object. The key must therefore be a unique identifier, typically the caller itself:insertIntoCache(this, ...)
.aObject
- the Object to be cached.
-
getCachedObject
Description copied from interface:ILcdCache
Looks up and returns the cached Object corresponding to the given key.- Specified by:
getCachedObject
in interfaceILcdCache
- Parameters:
aKey
- the key Object that was used for storing the cache Object.- Returns:
- the cached Object, or null if there is no Object corresponding to the given key.
-
removeCachedObject
Description copied from interface:ILcdCache
Looks up and removes the cached Object corresponding to the given key.- Specified by:
removeCachedObject
in interfaceILcdCache
- Parameters:
aKey
- the key Object that was used for storing the cache Object.- Returns:
- the cached Object, or null if there was no Object corresponding to the given key.
-
clearCache
public void clearCache()Description copied from interface:ILcdCache
Clears the cache.- Specified by:
clearCache
in interfaceILcdCache
-
invalidateObject
public void invalidateObject()Description copied from interface:ILcdInvalidateable
Invalidates all cached values of this object. Call this method whenever one or more of this object's compositing values has been changed, to notify this object it needs to recompute its cached values.- Specified by:
invalidateObject
in interfaceILcdInvalidateable
-
clone
Description copied from interface:ILcdCloneable
Makes
When for example extending fromObject.clone()
public.java.lang.Object
, it can be implemented like this:public Object clone() { try { return super.clone(); } catch ( CloneNotSupportedException e ) { // Cannot happen: extends from Object and implements Cloneable (see also Object.clone) throw new RuntimeException( e ); } }
- Specified by:
clone
in interfaceILcdCloneable
- Overrides:
clone
in classObject
- See Also:
-
equals
-
hashCode
public int hashCode()
-