ProxyCurve Class

A ProxyCurve is expected to be used as a base class for curve types that use some existing curve (the proxy) for evaluation and display but carry other defining data.

  • The ProxyCurve implements all required CurvePrimitive methods by dispatching to the proxy.
  • These methods presumably require support from the application class and are left abstract:
    • clone
    • curvePrimitiveType
    • isSameCurvePrimitiveType
    • isSameGeometryClass
    • tryTransformInPlace
    • reverseInPlace


Extended by


Name Description
constructor(proxyCurve: CurvePrimitive): ProxyCurve Constructor CAPTURES the proxyCurve pointer  
clone(): ProxyCurve Abstract Return a deep clone.  
clonePartialCurve(fractionA: number, fractionB: number): undefined | CurvePrimitive Implement by proxyCurve.  
cloneTransformed(transform: Transform): undefined | ProxyCurve Return a transformed clone.  
computeStrokeCountForOptions(options?: StrokeOptions): number Implement by proxyCurve  
constructOffsetXY(offsetDistanceOrOptions: number | OffsetOptions): undefined | CurvePrimitive | CurvePrimitive[] Implement by proxyCurve  
dispatchToGeometryHandler(handler: GeometryHandler): any Double Dispatch call pattern.  
emitStrokableParts(dest: IStrokeHandler, options?: StrokeOptions): void Implement by proxyCurve  
emitStrokes(dest: LineString3d, options?: StrokeOptions): void Implement by proxyCurve  
extendRange(rangeToExtend: Range3d, transform?: Transform): void Implement by proxyCurve  
fractionToPoint(fraction: number, result?: Point3d): Point3d Implement by proxyCurve  
fractionToPointAnd2Derivatives(fraction: number, result?: Plane3dByOriginAndVectors): undefined | Plane3dByOriginAndVectors Implement by proxyCurve  
fractionToPointAndDerivative(fraction: number, result?: Ray3d): Ray3d Implement by proxyCurve  
isInPlane(plane: Plane3dByOriginAndUnitNormal): boolean Implement by proxyCurve  
projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): undefined | Range1d Implement by proxyCurve  
quickLength(): number Implement by proxyCurve  
range(transform?: Transform, result?: Range3d): Range3d Implement by proxyCurve  

Inherited methods

Name Inherited from Description
addMappedStrokesToLineString3D(map: StrokeCountMap, linestring: LineString3d): number CurvePrimitive Evaluate strokes at fractions indicated in a StrokeCountMap.
announceClipIntervals(_clipper: Clipper, _announce?: AnnounceNumberNumberCurvePrimitive): boolean CurvePrimitive Find intervals of this curvePrimitive that are interior to a clipper
appendPlaneIntersectionPoints(plane: PlaneAltitudeEvaluator, result: CurveLocationDetail[]): number CurvePrimitive Compute intersections of the curve with a plane.
closestPoint(spacePoint: Point3d, extend: VariantCurveExtendParameter, result?: CurveLocationDetail): undefined | CurveLocationDetail CurvePrimitive Search for a point on the curve that is closest to the spacePoint.
collectCurvePrimitives(collectorArray?: CurvePrimitive[], smallestPossiblePrimitives: booleanfalse, explodeLinestrings: booleanfalse): CurvePrimitive[] CurvePrimitive Return an array containing only the curve primitives.
collectCurvePrimitivesGo(collectorArray: CurvePrimitive[], _smallestPossiblePrimitives: boolean, _explodeLinestrings: booleanfalse): void CurvePrimitive Return an array containing only the curve primitives.
computeAndAttachRecursiveStrokeCounts(options?: StrokeOptions, parentMap?: StrokeCountMap): void CurvePrimitive Attach StrokeCountMap structure to this primitive (and recursively to any children)
curveLength(): number CurvePrimitive Return the length of the curve.
curveLengthBetweenFractions(fraction0: number, fraction1: number): number CurvePrimitive Returns a (high accuracy) length of the curve between fractional positions.
curveLengthWithFixedIntervalCountQuadrature(fraction0: number, fraction1: number, numInterval: number, numGauss: number5): number CurvePrimitive Run an integration (with a default Gaussian quadrature) with a fixed fractional step
endPoint(result?: Point3d): Point3d CurvePrimitive Return the end point of the primitive.
fractionAndDistanceToPointOnTangent(fraction: number, distance: number): Point3d CurvePrimitive Construct a point extrapolated along tangent at fraction.
fractionToCurvature(fraction: number): undefined | number CurvePrimitive Returns the (absolute) curvature magnitude.
fractionToFrenetFrame(fraction: number, result?: Transform): undefined | Transform CurvePrimitive Construct a frenet frame:
fractionToPointAndUnitTangent(fraction: number, result?: Ray3d): Ray3d CurvePrimitive Returns a ray whose origin is the curve point and direction is the unit tangent.
fractionToSignedXYRadiusOfCurvature(fraction: number): number CurvePrimitive Construct signed distance from a point on the planar curve to its center of curvature (in xy only).
getFractionToDistanceScale(): undefined | number CurvePrimitive If the curve primitive has distance-along-curve strictly proportional to curve fraction, return the scale factor.
isAlmostEqual(other: GeometryQuery): boolean CurvePrimitive Test for exact structure and nearly identical geometry.
isSameGeometryClass(other: GeometryQuery): boolean Abstract CurvePrimitive Test if (other instanceof this.Type).
moveSignedDistanceFromFraction(startFraction: number, signedDistance: number, allowExtension: boolean, result?: CurveLocationDetail): CurveLocationDetail CurvePrimitive (Attempt to) find a position on the curve at a signed distance from start fraction.
moveSignedDistanceFromFractionGeneric(startFraction: number, signedDistance: number, allowExtension: boolean, result?: CurveLocationDetail): CurveLocationDetail Protected CurvePrimitive Generic algorithm to search for point at signed distance from a fractional startPoint.
rangeBetweenFractions(fraction0: number, fraction1: number, transform?: Transform): Range3d CurvePrimitive Returns a (high accuracy) range of the curve between fractional positions
rangeBetweenFractionsByClone(fraction0: number, fraction1: number, transform?: Transform): Range3d CurvePrimitive Returns a (high accuracy) range of the curve between fractional positions
rangeBetweenFractionsByCount(fraction0: number, fraction1: number, count: number, transform?: Transform, extrapolationFactor: number0.0): Range3d CurvePrimitive Returns an approximate range based on a fixed number of evaluations
reverseInPlace(): void Abstract CurvePrimitive Reverse the curve's data so that its fractional stroking moves in the opposite direction.
startPoint(result?: Point3d): Point3d CurvePrimitive Return the startPoint of the primitive.
tryTransformInPlace(transform: Transform): boolean Abstract CurvePrimitive Attempt to transform in place.
tryTranslateInPlace(dx: number, dy: number0.0, dz: number0.0): boolean CurvePrimitive Try to move the geometry by dx,dy,dz.
areAlmostEqual(a: GeometryQuery, b: GeometryQuery): boolean Static CurvePrimitive Apply instance method isAlmostEqual if both are defined.
installStrokeCountMap(curve: CurvePrimitive, curveMap: StrokeCountMap, parentMap?: StrokeCountMap): void Static CurvePrimitive Final install step to save curveMap in curve.


Name Type Description
_proxyCurve Protected CurvePrimitive    
proxyCurve Accessor ReadOnly CurvePrimitive Return the (pointer to) the proxy curve.  

Inherited properties

Name Type Inherited from Description
children Accessor ReadOnly undefined | GeometryQuery[] CurvePrimitive Return GeometryQuery children for recursive queries.
* leaf classes do not need to implement.
curvePrimitiveType Abstract Readonly CurvePrimitiveType CurvePrimitive String name for schema properties
geometryCategory Readonly "curvePrimitive" CurvePrimitive String name for schema properties
isExtensibleFractionSpace Accessor ReadOnly boolean CurvePrimitive * Returns true if the curve can be easily extended past its start/end point (i.e., beyond the usual
fraction space [0,1]). Otherwise, returns false.
* Base class default implementation returns false.
* These classes (and perhaps others in the future) will return true:
* LineSegment3d
* LineString3d
* Arc3d
parent any | undefined CurvePrimitive Data attached by various algorithms (e.g.
strokeData StrokeCountMap | undefined CurvePrimitive Data attached during stroking for facets.

Defined in

Last Updated: 13 June, 2024