TorusPipe Class

A torus pipe is a partial torus (donut).

  • In its local coordinate system, the z-axis passes through the donut hole.
  • The "major hoop" circular arc is defined for theta in the angular sweep. Its formula in local coordinates:
    • vectorTheta0 = (radiusA, 0, 0)
    • vectorTheta90 = (0, radiusA, 0)
    • M(theta) = vectorTheta0 * cos(theta) + vectorTheta90 * sin(theta)
  • The "minor hoop" circular arc is defined for phi in [0,2pi]. Its formula, centered at the origin:
    • vectorPhi0 = (radiusB * cos(theta), radiusB * sin(theta), 0)
    • vectorPhi90 = (0, 0, radiusB)
    • m(phi) = vectorPhi0 * cos(phi) + vectorPhi90 * sin(phi)
  • Thus the torus pipe in local coordinates has the formula:
    • T(theta, phi) = M(theta) + m(phi)
  • The stored form of the torus pipe is oriented for positive volume:
    • Both radii are positive, with radiusA >= radiusB > 0
    • The sweep is positive
    • The coordinate system has positive determinant.
  • For uv parameterization,
    • u is around the minor hoop, with u in [0,1] mapping to phi in [0, 2pi]
    • v is along the major hoop, with v in [0,1] mapping to theta in the angular sweep
    • a constant v section is a full circle
    • a constant u section is an arc with the same angular sweep as the torusPipe

Extends

Implements

Methods

Name Description
constructor(map: Transform, radiusA: number, radiusB: number, sweep: Angle, capped: boolean): TorusPipe Protected    
clone(): TorusPipe return a copy of the TorusPipe  
cloneCenter(): Point3d Return the center of the torus pipe (inside the donut hole)  
cloneLocalToWorld(): Transform Return a (clone of) the TorusPipe's local to world transformation.  
cloneTransformed(transform: Transform): TorusPipe | undefined Clone this TorusPipe and transform the clone.  
cloneVectorX(): Vector3d return unit vector along the x axis (in the major hoop plane)  
cloneVectorY(): Vector3d return unit vector along the y axis (in the major hoop plane)  
cloneVectorZ(): Vector3d return unit vector along the z axis  
constantUSection(uFraction: number): Path Return an arc at constant u, and arc sweep matching this TorusPipe sweep.  
constantVSection(v: number): Loop Return the Arc3d section at vFraction.  
dispatchToGeometryHandler(handler: GeometryHandler): any Second step of double dispatch: call handler.handleTorusPipe(this)  
extendRange(rangeToExtend: Range3d, transform?: Transform): void extend rangeToExtend to include this TorusPipe  
getConstructiveFrame(): Transform | undefined Return a coordinate frame (right handed, unit axes)  
getIsReversed(): boolean Ask if this TorusPipe is labeled as reversed  
getMajorRadius(): number get the major hoop radius (radiusA) in world coordinates  
getMinorRadius(): number get the minor hoop radius (radiusB) in world coordinates  
getSweepAngle(): Angle get the sweep angle along the major circle.  
getThetaFraction(): number Return the sweep angle as a fraction of full 360 degrees (2PI radians)  
isAlmostEqual(other: GeometryQuery): boolean test if this and other have nearly equal geometry  
isSameGeometryClass(other: any): boolean ask if other is an instance of TorusPipe  
maxIsoParametricDistance(): Vector2d Directional distance query  
tryTransformInPlace(transform: Transform): boolean Apply transform to the local coordinate system.  
uvFractionToPoint(u: number, v: number, result?: Point3d): Point3d Evaluate as a uv surface  
uvFractionToPointAndTangents(u: number, v: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors Evaluate as a uv surface, returning point and two vectors.  
vFractionToRadians(v: number): number Return the angle (in radians) for given fractional position around the major hoop.  
createAlongArc(arc: Arc3d, minorRadius: number, capped: boolean): TorusPipe | undefined Static Create a TorusPipe from major arc and minor radius.  
createDgnTorusPipe(center: Point3d, vectorX: Vector3d, vectorY: Vector3d, majorRadius: number, minorRadius: number, sweep: Angle, capped: boolean): TorusPipe | undefined Static Create a TorusPipe from the typical parameters of the Dgn file  
createInFrame(frame: Transform, majorRadius: number, minorRadius: number, sweep: Angle, capped: boolean): TorusPipe | undefined Static Create a new TorusPipe  

Inherited methods

Name Inherited from Description
range(transform?: Transform, result?: Range3d): Range3d Inherited SolidPrimitive Return the range of the entire GeometryQuery tree.
tryTranslateInPlace(dx: number, dy: number = 0.0, dz: number = 0.0): boolean Inherited SolidPrimitive Try to move the geometry by dx,dy,dz.
areAlmostEqual(a: GeometryQuery, b: GeometryQuery): boolean Static Inherited SolidPrimitive Apply instance method isAlmostEqual if both are defined.

Properties

Name Type Description
isClosedVolume Accessor ReadOnly boolean    
isSkew Accessor ReadOnly boolean Return true if the solid's local z-axis is not perpendicular to its local xy-plane.  
solidPrimitiveType Readonly "torusPipe" String name for schema properties  

Inherited properties

Name Type Inherited from Description
_capped Protected Inherited boolean SolidPrimitive Flag indicating whether cap region is considered closed (i.e.
capped Accessor Inherited boolean SolidPrimitive Whether this is a capped solid.
children Accessor Inherited ReadOnly GeometryQuery[] | undefined SolidPrimitive Return GeometryQuery children for recursive queries.
* leaf classes do not need to implement.
geometryCategory Readonly Inherited "solid" SolidPrimitive String name for schema properties.

Defined in

Last Updated: 20 May, 2026