Cone Class

A cone with axis along the z-axis of a (possibly skewed) local coordinate system.

  • The curved surface of the cone C with axis vectorZ = centerB - centerA is parameterized over (u,v) in [0,1]x[0,1] by C(u,v) = centerA + vFractionToRadius(v) * (cos(u * 2pi) * vectorX + sin(u * 2pi) * vectorY) + v * vectorZ.
  • Either radius may be zero, but they may not both be zero.
  • Cross section size is determined by the lengths of vectorX, vectorY, and the radii.
  • If vectorX and vectorY are orthonormal, the cross sections are circular, with sections at v = 0 and v = 1 having radius radiusA and radiusB, respectively; otherwise, the cross sections are elliptical.
  • The stored matrix encapsulates vectorX, vectorY, and vectorZ in the respective columns. Typically the first two columns are orthogonal and unit length, and the last is full length.
  • Creating a Cone without orthogonal xy-axes of equal length is possible, but not recommended, for the resulting geometry lacks portability; for example, such a Cone cannot be represented as a DGN element (see createDgnCone).

Extends

Implements

Methods

Name Description
constructor(map: Transform, radiusA: number, radiusB: number, capped: boolean): Cone Protected Constructor, inputs CONSUMED.  
clone(): Cone Return a clone of this Cone.  
cloneTransformed(transform: Transform): Cone | undefined Create a clone and immediately transform the clone.  
constantVSection(vFraction: number): Loop Return the Arc3d section at vFraction  
cylinderRadius(allowSkew: boolean = false): number Test if this cone is a cylinder.  
dispatchToGeometryHandler(handler: GeometryHandler): any Second step of double dispatch: call handler.handleCone(this)  
extendRange(rangeToExtend: Range3d, transform?: Transform): void Extend rangeToExtend so it includes this Cone instance.  
getCenterA(): Point3d (Property accessor) Return the center point at the base plane  
getCenterB(): Point3d (Property accessor)  
getConstructiveFrame(): Transform | undefined Return a coordinate frame (right handed unit vectors)  
getMaxRadius(): number (Property accessor) return the larger of radiusA and radiusB  
getRadiusA(): number (Property accessor) return the radius at the base plane  
getRadiusB(): number (Property accessor) return the radius at the top plane  
getVectorX(): Vector3d (Property accessor) Return the x vector in the local frame  
getVectorY(): Vector3d (Property accessor) Return the y vector in the local frame  
isAlmostEqual(other: GeometryQuery): boolean (Property accessor) Test for nearly equal coordinate data.  
isSameGeometryClass(other: any): boolean (Property accessor) test if other is an instance of Cone  
maxIsoParametricDistance(): Vector2d Directional distance query  
strokeConstantVSection(v: number, fixedStrokeCount?: number, options?: StrokeOptions): LineString3d return strokes for a cross-section (elliptic arc) at specified fraction v along the axis.  
tryTransformInPlace(transform: Transform): boolean Apply the transform to this cone's local to world coordinates.  
uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Point3d Evaluate a point on the Cone surfaces, with  
uvFractionToPointAndTangents(uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors): Plane3dByOriginAndVectors Evaluate a point tangent plane on the Cone surfaces, with  
vFractionToRadius(v: number): number (Property accessor) return the radius at fraction v along the axis  
createAxisPoints(centerA: Point3d, centerB: Point3d, radiusA: number, radiusB: number, capped?: boolean): Cone | undefined Static Create a right circular cylinder or cone from the given base centers and radii.  
createBaseAndTarget(centerA: Point3d, centerB: Point3d, vectorX: Vector3d, vectorY: Vector3d, radiusA: number, radiusB: number, capped?: boolean): Cone Static Create a general cone from cross sections parallel to the plane spanned by the given vectors.  
createDgnCone(centerA: Point3d, centerB: Point3d, vectorX: Vector3d, vectorY: Vector3d, radiusA: number, radiusB: number, capped?: boolean): Cone | undefined Static Create a circular cone from the typical parameters of the DGN file.  

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 "cone" 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