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

Extends

Extended by

Methods

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

Properties

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 Inherited ReadOnly undefined | GeometryQuery[] CurvePrimitive Return GeometryQuery children for recursive queries.
* leaf classes do not need to implement.
curvePrimitiveType Abstract Readonly Inherited CurvePrimitiveType CurvePrimitive String name for schema properties
geometryCategory Readonly Inherited "curvePrimitive" CurvePrimitive String name for schema properties
isExtensibleFractionSpace Accessor Inherited 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 Inherited any | undefined CurvePrimitive Data attached by various algorithms (e.g.
strokeData Inherited StrokeCountMap | undefined CurvePrimitive Data attached during stroking for facets.

Defined in

Last Updated: 17 December, 2024