Cone Class
A cone with axis along the z-axis of a (possibly skewed) local coordinate system.
- The curved surface of the cone
Cwith axisvectorZ = centerB - centerAis parameterized over (u,v) in [0,1]x[0,1] byC(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
vectorXandvectorYare orthonormal, the cross sections are circular, with sections at v = 0 and v = 1 having radiusradiusAandradiusB, respectively; otherwise, the cross sections are elliptical. - The stored matrix encapsulates
vectorX,vectorY, andvectorZin 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): undefined | Cone | Create a clone and immediately transform the clone. | |
| constantVSection(vFraction: number): undefined | CurveCollection | Return the Arc3d section at vFraction | |
| 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(): undefined | Transform | 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): undefined | Cone 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): undefined | Cone 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 | ||
| 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 | undefined | GeometryQuery[] | 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
- solid/Cone.ts Line 40
Last Updated: 28 October, 2025
Found something wrong, missing, or unclear on this page? Raise an issue in our repo.