## IntegratedSpiral3d Class

An IntegratedSpiral3d is a curve defined by integrating its curvature.

• The first integral of curvature (with respect to distance along the curve) is the bearing angle (in radians)
• Integrating (cos(theta), sin(theta)) gives displacement from the start point, and thus the actual curve position.
• The curvature functions of interest are all symmetric snap functions in the NormalizedTransition class.
• TransitionConditionalProperties implements the computations of the interrelationship of radii, bearing, and length.

### Methods

Name Description
clone(): Deep clone of this spiral
computeStrokeCountForOptions(options?: StrokeOptions): number return the stroke count required for given options.
curveLength(): number Return length of the spiral.
curveLengthBetweenFractions(fraction0: number, fraction1: number): number Return (unsigned) length of the spiral between fractions.
dispatchToGeometryHandler(handler: GeometryHandler): any Second step of double dispatch: call handler.handleTransitionSpiral(this)
emitStrokableParts(dest: IStrokeHandler, options?: StrokeOptions): void emit stroke fragments to dest handler.
emitStrokes(dest: LineString3d, options?: StrokeOptions): void Add strokes from this spiral to dest.
endPoint(): return the spiral end point.
fractionToBearingRadians(activeFraction: number): number Return the bearing at given fraction of the active interval ....
fractionToCurvature(activeFraction: number): undefined | number Return the curvature at given fraction of the active interval ...
fractionToFrenetFrame(activeFraction: number, result?: Transform): Return the frenet frame at fractional position.
fractionToPoint(activeFraction: number, result?: Point3d): Evaluate curve point with respect to fraction.
fractionToPointAnd2Derivatives(activeFraction: number, result?: Plane3dByOriginAndVectors): undefined | Plane3dByOriginAndVectors Return a plane with
fractionToPointAndDerivative(activeFraction: number, result?: Ray3d): Evaluate curve point and derivative with respect to fraction.
globalFractionToBearingRadians(fraction: number): number use the integrated function to return an angle at fractional position.
globalFractionToCurvature(fraction: number): number use the integrated function to return an angle at fractional position.
isAlmostEqual(other?: GeometryQuery): boolean compare various coordinate quantities
isInPlane(): boolean test if the local to world transform places the spiral xy plane into plane
isSameGeometryClass(other: any): boolean Test if other is an instance of TransitionSpiral3d
quickLength(): number Return length of the spiral.
refreshComputedProperties(): void Recompute strokes
reverseInPlace(): void Reverse the active interval and active strokes.
setFrom(other: IntegratedSpiral3d): Copy all defining data from another spiral.
startPoint(): Return the spiral start point.
tryTransformInPlace(transformA: Transform): boolean apply transform to this spiral's local to world transform.
createFrom4OutOf5(spiralType: undefined | string, radius0: undefined | number, radius1: undefined | number, bearing0: undefined | Angle, bearing1: undefined | Angle, arcLength: undefined | number, fractionInterval: undefined | Segment1d, localToWorld: Transform): undefined | IntegratedSpiral3d Static Create a transition spiral.
createRadiusRadiusBearingBearing(radius01: Segment1d, bearing01: AngleSweep, activeFractionInterval: Segment1d, localToWorld: Transform, typeName?: string): undefined | IntegratedSpiral3d Static Create a transition spiral with radius and bearing conditions.
initWorkSpace(): void Static Initialize class level work arrays.

### Inherited methods

Name Inherited from Description
addMappedStrokesToLineString3D(map: StrokeCountMap, linestring: LineString3d): number TransitionSpiral3d * evaluate strokes at fractions indicated in a StrokeCountMap.
announceClipIntervals(_clipper: Clipper, _announce?: AnnounceNumberNumberCurvePrimitive): boolean TransitionSpiral3d Find intervals of this curvePrimitive that are interior to a clipper
appendPlaneIntersectionPoints(plane: PlaneAltitudeEvaluator, result: CurveLocationDetail[]): number TransitionSpiral3d Compute intersections with a plane.
applyRigidPartOfTransform(transformA: Transform): undefined | { rigidAxes: Matrix3d, scale: number } Protected TransitionSpiral3d * If transformA is rigid with uniform scale, apply the rigid part of transformA to the localToWorld transform and return the scale and rigid separation.
clonePartialCurve(fractionA: number, fractionB: number): TransitionSpiral3d Return (if possible) a spiral which is a portion of this curve.
cloneTransformed(transform: Transform): TransitionSpiral3d Clone with a transform applied
closestPoint(spacePoint: Point3d, extend: VariantCurveExtendParameter): undefined | CurveLocationDetail TransitionSpiral3d Search for the curve point that is closest to the spacePoint.
collectCurvePrimitives(collectorArray?: CurvePrimitive[], smallestPossiblePrimitives: boolean = false, explodeLinestrings: boolean = false): TransitionSpiral3d Return an array containing only the curve primitives.
collectCurvePrimitivesGo(collectorArray: CurvePrimitive[], _smallestPossiblePrimitives: boolean, _explodeLinestrings: boolean = false): void TransitionSpiral3d Return an array containing only the curve primitives.
computeAndAttachRecursiveStrokeCounts(options?: StrokeOptions, parentMap?: StrokeCountMap): void TransitionSpiral3d attach StrokeCountMap structure to this primitive (and recursively to any children)
constructOffsetXY(offsetDistanceOrOptions: number | OffsetOptions): undefined | CurvePrimitive | CurvePrimitive[] TransitionSpiral3d Construct an offset of the instance curve as viewed in the xy-plane (ignoring z).
curveLengthWithFixedIntervalCountQuadrature(fraction0: number, fraction1: number, numInterval: number, numGauss: number = 5): number TransitionSpiral3d * Run an integration (with a default gaussian quadrature) with a fixed fractional step
extendRange(rangeToExtend: Range3d, transform?: Transform): void TransitionSpiral3d extend the range by the strokes of the spiral
fractionAndDistanceToPointOnTangent(fraction: number, distance: number): TransitionSpiral3d Construct a point extrapolated along tangent at fraction.
fractionToPointAndUnitTangent(fraction: number, result?: Ray3d): TransitionSpiral3d Returns a ray whose origin is the curve point and direction is the unit tangent.
fractionToSignedXYRadiusOfCurvature(fraction: number): number TransitionSpiral3d Construct signed distance from a point on the curve to its center of curvature (in xy only).
getFractionToDistanceScale(): undefined | number TransitionSpiral3d * If the curve primitive has distance-along-curve strictly proportional to curve fraction, return the scale factor.
moveSignedDistanceFromFraction(startFraction: number, signedDistance: number, allowExtension: boolean, result?: CurveLocationDetail): TransitionSpiral3d * (Attempt to) find a position on the curve at a signed distance from start fraction.
moveSignedDistanceFromFractionGeneric(startFraction: number, signedDistance: number, allowExtension: boolean, result?: CurveLocationDetail): Protected TransitionSpiral3d Generic algorithm to search for point at signed distance from a fractional startPoint.
projectedParameterRange(ray: Vector3d | Ray3d, lowHigh?: Range1d): undefined | Range1d TransitionSpiral3d Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.
range(transform?: Transform, result?: Range3d): TransitionSpiral3d return the range of the entire (tree) GeometryQuery
rangeBetweenFractions(fractionA: number, fractionB: number, transform?: Transform): TransitionSpiral3d return the range of spiral between fractions of the activeStrokes.
rangeBetweenFractionsByClone(fraction0: number, fraction1: number, transform?: Transform): TransitionSpiral3d Returns a (high accuracy) range of the curve between fractional positions
rangeBetweenFractionsByCount(fraction0: number, fraction1: number, count: number, transform?: Transform, extrapolationFactor: number = 0.0): TransitionSpiral3d Returns an approximate range based on a fixed number of evaluations
tryTranslateInPlace(dx: number, dy: number = 0.0, dz: number = 0.0): boolean TransitionSpiral3d try to move the geometry by dx,dy,dz
areAlmostEqual(a: undefined | GeometryQuery, b: undefined | GeometryQuery): boolean Static TransitionSpiral3d apply instance method isAlmostEqual if both are defined.
averageCurvature(radiusLimits: Segment1d): number Static TransitionSpiral3d Return the average of the start and end curvatures.
averageCurvatureR0R1(r0: number, r1: number): number Static TransitionSpiral3d Given two radii (or zeros for 0 curvature) return the average curvature
curvatureToRadius(curvature: number): number Static TransitionSpiral3d Return 1/k with convention that if near-zero is given as curvature, its infinite radius is returned as 0
installStrokeCountMap(curve: CurvePrimitive, curveMap: StrokeCountMap, parentMap?: StrokeCountMap): void Static TransitionSpiral3d final install step to save curveMap in curve.
interpolateCurvatureR0R1(r0: number, fraction: number, r1: number): number Static TransitionSpiral3d Given two radii (or zeros for 0 curvature) return the average curvature
radiusToCurvature(radius: number): number Static TransitionSpiral3d Return 1/r with convention that if true zero is given as radius it represents infinite radius (0 curvature, straight line)

### Properties

Name Type Description
activeStrokes Accessor ReadOnly Return the internal stroked form of the (possibly partial) spiral
bearing01 AngleSweep start and end bearings as an AngleSweep
curvePrimitiveType Readonly "transitionSpiral" String name for schema properties
defaultSpiralType StaticReadonly "clothoid" default spiral type name.

### Inherited properties

Name Type Inherited from Description
_activeFractionInterval Protected Segment1d TransitionSpiral3d Fractional interval for the "active" part of a containing spiral.
_designProperties Protected undefined | TransitionConditionalProperties TransitionSpiral3d Original defining properties.
_localToWorld Protected Transform TransitionSpiral3d Placement transform
_spiralType Protected string TransitionSpiral3d string name of spiral type
activeFractionInterval Accessor ReadOnly TransitionSpiral3d Return (reference to) the active portion of the reference spiral.
children Accessor ReadOnly undefined | GeometryQuery[] TransitionSpiral3d return GeometryQuery children for recursive queries.

* leaf classes do not need to implement.
designProperties Accessor ReadOnly undefined | TransitionConditionalProperties TransitionSpiral3d Return the original defining properties (if any) saved by the constructor.
geometryCategory Readonly "curvePrimitive" TransitionSpiral3d String name for schema properties
isExtensibleFractionSpace Accessor ReadOnly boolean TransitionSpiral3d * Returns true if the curve's fraction queries extend beyond 0..1.
* Base class default implementation returns false.
* These class (and perhaps others in the future) will return true:
* LineSegment3d
* LineString3d
* Arc3d
localToWorld Accessor ReadOnly TransitionSpiral3d (reference to) placement transform.
parent undefined | any TransitionSpiral3d data attached by various algorithms (e.g.