Interface ILcdCurve

All Superinterfaces:
Cloneable, ILcdBounded, ILcdCloneable, ILcdShape, Serializable
All Known Subinterfaces:
ILcd2DEditableCircleBy3Points, ILcd2DEditableCircularArcBy3Points, ILcd2DEditableCircularArcByBulge, ILcd2DEditableCircularArcByCenterPoint, ILcdAirspace, ILcdAirspaceCorridor, ILcdCircleBy3Points, ILcdCircularArc, ILcdCircularArcBy3Points, ILcdCircularArcByBulge, ILcdCircularArcByCenterPoint, ILcdCompositeCurve, ILcdEditableAirspace, ILcdEditableAirspaceCorridor, ILcdEditableCompositeCurve, ILcdEditableHelipad, ILcdEditableParachuteJumpArea, ILcdEditableRefuelingAirspace, ILcdHelipad, ILcdParachuteJumpArea, ILcdRefuelingAirspace, ILcdRing
All Known Implementing Classes:
ALcdDiscretizedGeoPath, TLcdAirspace, TLcdAirspaceCorridor, TLcdAISPolygon, TLcdAISPolyline, TLcdAIXM51Curve, TLcdAIXM51ElevatedCurve, TLcdAreaMinimumAltitude, TLcdASTERIXTrajectory, TLcdCGMArc, TLcdCGMCircle, TLcdCGMEllipse, TLcdCGMPolygon, TLcdCGMPolyline, TLcdCompositeCurve, TLcdDGNArc2D, TLcdDGNCurve2D, TLcdDGNDimension, TLcdDGNEllipse2D, TLcdDGNFloatCurve2D, TLcdDGNFloatCurve3D, TLcdDGNFloatLine2D, TLcdDGNFloatLine3D, TLcdDGNFloatLineString2D, TLcdDGNFloatLineString3D, TLcdDGNFloatShape2D, TLcdDGNFloatShape3D, TLcdDGNLine2D, TLcdDGNLineString2D, TLcdDGNShape2D, TLcdDiscretizedLonLatGeoPath, TLcdDWGArc, TLcdDWGCircle, TLcdDWGCompositeCurve, TLcdDWGCompositeRing, TLcdDWGEllipse, TLcdDWGFace3D, TLcdDWGLine, TLcdDWGPolyline2D, TLcdDWGSolid, TLcdEditableAPP6AObject, TLcdEditableMS2525bObject, TLcdFeaturedAirspace, TLcdFeaturedAirspaceCorridor, TLcdFeaturedAreaMinimumAltitude, TLcdFeaturedFinalApproachPath, TLcdFeaturedGeoborder, TLcdFeaturedHelipad, TLcdFeaturedOrtca, TLcdFeaturedParachuteJumpArea, TLcdFeaturedRefuelingAirspace, TLcdFeaturedRefuelingTrack, TLcdFeaturedRunway, TLcdFeaturedVFROffsetRoute, TLcdFeaturedVFRRoute, TLcdFinalApproachPath, TLcdGeoborder, TLcdGML2LinearRing, TLcdGML2LineString, TLcdGML31AbstractCurve, TLcdGML31AbstractCurveSegment, TLcdGML31AbstractRing, TLcdGML31Arc, TLcdGML31ArcByBulge, TLcdGML31ArcByCenterPoint, TLcdGML31ArcString, TLcdGML31ArcStringByBulge, TLcdGML31Bezier, TLcdGML31BSpline, TLcdGML31Circle, TLcdGML31CircleByCenterPoint, TLcdGML31Clothoid, TLcdGML31CompositeCurve, TLcdGML31CubicSpline, TLcdGML31Curve, TLcdGML31Geodesic, TLcdGML31GeodesicString, TLcdGML31LinearRing, TLcdGML31LineString, TLcdGML31LineStringSegment, TLcdGML31OffsetCurve, TLcdGML31OrientableCurve, TLcdGML31Ring, TLcdGML31Triangle, TLcdGML32AbstractCurve, TLcdGML32AbstractCurveSegment, TLcdGML32AbstractRing, TLcdGML32Arc, TLcdGML32ArcByBulge, TLcdGML32ArcByCenterPoint, TLcdGML32ArcString, TLcdGML32ArcStringByBulge, TLcdGML32Bezier, TLcdGML32BSpline, TLcdGML32Circle, TLcdGML32CircleByCenterPoint, TLcdGML32Clothoid, TLcdGML32CompositeCurve, TLcdGML32CubicSpline, TLcdGML32Curve, TLcdGML32Geodesic, TLcdGML32GeodesicString, TLcdGML32LinearRing, TLcdGML32LineString, TLcdGML32LineStringSegment, TLcdGML32OffsetCurve, TLcdGML32OrientableCurve, TLcdGML32Ring, TLcdGML32Triangle, TLcdHelipad, TLcdKML22LinearRing, TLcdKML22LineString, TLcdLonLatArc, TLcdLonLatCircle, TLcdLonLatCircleBy3Points, TLcdLonLatCircularArcBy3Points, TLcdLonLatCircularArcByBulge, TLcdLonLatCircularArcByCenterPoint, TLcdLonLatCompositeRing, TLcdLonLatEllipse, TLcdLonLatFloatPolygon, TLcdLonLatFloatPolygonCache, TLcdLonLatFloatPolyline, TLcdLonLatFloatPolylineCache, TLcdLonLatHeightLine, TLcdLonLatHeightMPolygon, TLcdLonLatHeightMPolyline, TLcdLonLatHeightPolygon, TLcdLonLatHeightPolyline, TLcdLonLatLine, TLcdLonLatMPolygon, TLcdLonLatMPolyline, TLcdLonLatPolygon, TLcdLonLatPolyline, TLcdLonLatRhumbPolygon, TLcdLonLatRhumbPolyline, TLcdMeasureXYPolygon, TLcdMeasureXYPolyline, TLcdMeasureXYZPolygon, TLcdMeasureXYZPolyline, TLcdNVG15Arc, TLcdNVG15ArcBand, TLcdNVG15Arrow, TLcdNVG15Circle, TLcdNVG15Corridor, TLcdNVG15Ellipse, TLcdNVG15Polygon, TLcdNVG15Polyline, TLcdNVG20Arc, TLcdNVG20ArcBandRing, TLcdNVG20CircularRing, TLcdNVG20EllipticRing, TLcdNVG20LinearRing, TLcdNVG20Polyline, TLcdNVG20RectangularRing, TLcdOrtca, TLcdParachuteJumpArea, TLcdProcedureTrajectory, TLcdRefuelingAirspace, TLcdRefuelingTrack, TLcdRoundedPolygon, TLcdRoundedPolyline, TLcdRunway, TLcdS57Edge, TLcdS57Face, TLcdS57Line, TLcdSHPPolygonZ, TLcdSHPPolylineZ, TLcdVFROffsetRoute, TLcdVFRRoute, TLcdXYArc, TLcdXYCircle, TLcdXYCircleBy3Points, TLcdXYCircularArcBy3Points, TLcdXYCircularArcByBulge, TLcdXYCircularArcByCenterPoint, TLcdXYCompositeRing, TLcdXYEllipse, TLcdXYFloatLine, TLcdXYFloatPolygon, TLcdXYFloatPolygonCache, TLcdXYFloatPolyline, TLcdXYFloatPolylineCache, TLcdXYLine, TLcdXYMPolygon, TLcdXYMPolyline, TLcdXYPolygon, TLcdXYPolyline, TLcdXYZFloatLine, TLcdXYZFloatPolygon, TLcdXYZFloatPolyline, TLcdXYZLine, TLcdXYZMPolygon, TLcdXYZMPolyline, TLcdXYZPolygon, TLcdXYZPolyline

public interface ILcdCurve extends ILcdShape
A curve is a continuous, one-dimensional shape whose points can be retrieved using a single parameter.

Examples of curves are lines, arcs, or any connected combination thereof.

Note that this interface does not enforce continuity. Rather, this is the responsibility of the instance (e.g. ILcdGXYEditor) that creates or manipulates the curves.

You can retrieve points along the curve using computePointSFCT(double, com.luciad.shape.shape3D.ILcd3DEditablePoint), for a parameter between 0 and 1, where 0 is the start of the curve and 1 is the end.

You can retrieve the tangent at points along the curve using getTangent2D(double) using the same parameter.

A curve should have the following invariants:

Since:
9.0
See Also:
  • Field Details

    • INTERPOLATION_LINEAR

      static final String INTERPOLATION_LINEAR
      Curve interpolation type: linear.
      See Also:
    • INTERPOLATION_GEODESIC

      static final String INTERPOLATION_GEODESIC
      Curve interpolation type: geodesic.
      See Also:
    • INTERPOLATION_RHUMB

      static final String INTERPOLATION_RHUMB
      Curve interpolation type: rhumb.
      See Also:
    • INTERPOLATION_CIRCULARARC_BY_3POINTS

      static final String INTERPOLATION_CIRCULARARC_BY_3POINTS
      Curve interpolation type: circular arc by 3 points.
      See Also:
    • INTERPOLATION_CIRCULARARC_BY_BULGE

      static final String INTERPOLATION_CIRCULARARC_BY_BULGE
      Curve interpolation type: circular arc by 2 points and bulge.
      See Also:
    • INTERPOLATION_CIRCULARARC_BY_CENTERPOINT

      static final String INTERPOLATION_CIRCULARARC_BY_CENTERPOINT
      Curve interpolation type: circular arc by center point and radius.
      See Also:
    • INTERPOLATION_CIRCLE_BY_3POINTS

      static final String INTERPOLATION_CIRCLE_BY_3POINTS
      Curve interpolation type: circle by 3 points.
      See Also:
    • INTERPOLATION_CIRCLE_BY_CENTERPOINT

      static final String INTERPOLATION_CIRCLE_BY_CENTERPOINT
      Curve interpolation type: circle by center point and radius.
      See Also:
    • INTERPOLATION_ELLIPTICAL

      static final String INTERPOLATION_ELLIPTICAL
      Curve interpolation type: elliptical.
      See Also:
    • INTERPOLATION_MIXED

      static final String INTERPOLATION_MIXED
      Curve interpolation type: mixed.
      See Also:
  • Method Details

    • getStartPoint

      ILcdPoint getStartPoint()
      Retrieves the start point of the curve.

      This is equivalent to computePointSFCT(0).

      Returns:
      the start point of the curve
    • getEndPoint

      ILcdPoint getEndPoint()
      Retrieves the end point of the curve.

      This is equivalent to computePointSFCT(1).

      Returns:
      the end point of the curve
    • getStartTangent2D

      double getStartTangent2D()
      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).

      Returns:
      the curve's angle in the start point
    • getEndTangent2D

      double getEndTangent2D()
      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).

      Returns:
      the curve's angle in the end point
    • getTangent2D

      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.

      The tangent orientation is from the point at parameter aParam towards the rest of the shape.

      Parameters:
      aParam - a value of the closed interval [0,1]
      Returns:
      the curve's angle in the point defined by the given parameter
    • getLength2D

      double getLength2D(double aParam1, double aParam2)
      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).
      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.
    • computePointSFCT

      void computePointSFCT(double aParam, ILcd3DEditablePoint aPointSFCT)
      Computes a point of the curve, defined by the given parameter.
      Parameters:
      aParam - a value of the closed interval [0,1]
      aPointSFCT - the point to store the computed curve point in
    • getInterpolation

      String getInterpolation()
      Returns the interpolation method used by this curve.

      A set of predefined constants are defined in this interface, which are used by the default ILcdCurve implementations provided by LuciadLightspeed.

      Custom implementations can define their own constants, and use them to interpret the interpolation of the curve.

      Returns:
      the interpolation method used by this curve.
    • getLineSegmentIntersectionCount

      int getLineSegmentIntersectionCount(ILcdPoint aP1, ILcdPoint aP2)
      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.

      Parameters:
      aP1 - the first point of the line segment
      aP2 - the second point of the line segment
      Returns:
      the number of intersections between the curve and the line segment