## Cone Class

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

• In local coordinates, the sections at z=0 and z=1 are circles of radius r0 and r1.
• Either one individually may be zero, but they may not both be zero.
• The stored matrix has unit vectors in the xy columns, and full-length z column.

### Methods

Name Description
clone(): Return a clone of this Cone.
cloneTransformed(transform: Transform): Cone | undefined Create a clone and immediately transform the clone.
constantVSection(vFraction: number): CurveCollection | undefined 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(): (Property accessor) Return the center point at the base plane
getCenterB(): (Property accessor)
getConstructiveFrame(): Transform | undefined Return a coordinate frame (right handed unit vectors)
* origin at center of the base circle.

getMaxRadius(): number (Property accessor) return the larger of the base and top plane radii
getVectorX(): (Property accessor) Return the x vector in the local frame
getVectorY(): (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(): Directional distance query
* u direction is around longitude circle at maximum distance from axis.

strokeConstantVSection(v: number, fixedStrokeCount: number | undefined, options: StrokeOptions | undefined): 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 locla to world coordinates.
uvFractionToPoint(uFraction: number, vFraction: number, result?: Point3d): Evaluate a point on the Cone surfaces, with
* v = 0 is the base plane.

uvFractionToPointAndTangents(uFraction: number, vFraction: number, result?: Plane3dByOriginAndVectors): Evaluate a point tangent plane on the Cone surfaces, with
* v = 0 is the base plane.

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 cylinder or cone from two endpoints and their radii.
createBaseAndTarget(centerA: Point3d, centerB: Point3d, vectorX: Vector3d, vectorY: Vector3d, radiusA: number, radiusB: number, capped: boolean): Static create a cylinder or cone from axis start and end with cross section defined by vectors that do not need to be perpendicular to each other or
to the axis.

### Inherited methods

Name Inherited from Description
range(transform?: Transform, result?: Range3d): GeometryQuery return the range of the entire (tree) GeometryQuery
tryTranslateInPlace(dx: number, dy: number = 0, dz: number = 0): boolean GeometryQuery try to move the geometry by dx,dy,dz

### Properties

Name Type Description
solidPrimitiveType "cone" = "cone"

### Inherited properties

Name Type Inherited from Description
_capped Protected boolean SolidPrimitive flag indicating whether cap region is considered closed (i.e.
capped Accessor boolean SolidPrimitive Ask if this is a capped solid
children Accessor ReadOnly GeometryQuery[] | undefined GeometryQuery return GeometryQuery children for recursive queries.

* leaf classes do not need to implement.
geometryCategory "solid" = "solid" SolidPrimitive

### Defined in

Last Updated: 20 September, 2019