Skip to content

Shapes

@ripl/3d

Built-in 3D shapes: Cube, Sphere, Cylinder, Cone, Plane, Torus.

Overview

Classes: Cube · Sphere · Cylinder · Cone · Plane · Torus

Interfaces: CubeState · SphereState · CylinderState · ConeState · PlaneState · TorusState

Functions: createCube · elementIsCube · createSphere · elementIsSphere · createCylinder · elementIsCylinder · createCone · elementIsCone · createPlane · elementIsPlane · createTorus · elementIsTorus

Cube class

A 3D cube shape with uniform edge size.

ts
class Cube extends Shape3D<CubeState>

Constructor:

Parameters:

NameTypeDescription
optionsPartial&lt;ElementOptions&lt;CubeState&gt;&gt;

Properties:

PropertyTypeDescription
sizenumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getDepth(context: Context3D): number

Returns the projected depth of this shape's origin in the given 3D context.

Parameters:

NameTypeDescription
contextContext3D

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this element by applying transforms and context state, then invoking the optional callback.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this element’s bounding box. Override for custom hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;CubeState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;CubeState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;CubeState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;CubeState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;CubeState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

Sphere class

A 3D sphere shape tessellated with configurable segments and rings.

ts
class Sphere extends Shape3D<SphereState>

Constructor:

Parameters:

NameTypeDescription
optionsPartial&lt;ElementOptions&lt;SphereState&gt;&gt;

Properties:

PropertyTypeDescription
radiusnumber
segmentsnumber
ringsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getDepth(context: Context3D): number

Returns the projected depth of this shape's origin in the given 3D context.

Parameters:

NameTypeDescription
contextContext3D

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this element by applying transforms and context state, then invoking the optional callback.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this element’s bounding box. Override for custom hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;SphereState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;SphereState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;SphereState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;SphereState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;SphereState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

Cylinder class

A 3D cylinder shape with independent top and bottom radii for truncated cones.

ts
class Cylinder extends Shape3D<CylinderState>

Constructor:

Parameters:

NameTypeDescription
optionsPartial&lt;ElementOptions&lt;CylinderState&gt;&gt;

Properties:

PropertyTypeDescription
radiusTopnumber
radiusBottomnumber
heightnumber
segmentsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getDepth(context: Context3D): number

Returns the projected depth of this shape's origin in the given 3D context.

Parameters:

NameTypeDescription
contextContext3D

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this element by applying transforms and context state, then invoking the optional callback.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this element’s bounding box. Override for custom hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;CylinderState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;CylinderState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;CylinderState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;CylinderState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;CylinderState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

Cone class

A 3D cone shape with configurable radius, height, and segment resolution.

ts
class Cone extends Shape3D<ConeState>

Constructor:

Parameters:

NameTypeDescription
optionsPartial&lt;ElementOptions&lt;ConeState&gt;&gt;

Properties:

PropertyTypeDescription
radiusnumber
heightnumber
segmentsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getDepth(context: Context3D): number

Returns the projected depth of this shape's origin in the given 3D context.

Parameters:

NameTypeDescription
contextContext3D

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this element by applying transforms and context state, then invoking the optional callback.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this element’s bounding box. Override for custom hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;ConeState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;ConeState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;ConeState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;ConeState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;ConeState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

Plane class

A flat rectangular 3D plane oriented along the XY plane.

ts
class Plane extends Shape3D<PlaneState>

Constructor:

Parameters:

NameTypeDescription
optionsPartial&lt;ElementOptions&lt;PlaneState&gt;&gt;

Properties:

PropertyTypeDescription
widthnumber
heightnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getDepth(context: Context3D): number

Returns the projected depth of this shape's origin in the given 3D context.

Parameters:

NameTypeDescription
contextContext3D

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this element by applying transforms and context state, then invoking the optional callback.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this element’s bounding box. Override for custom hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;PlaneState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;PlaneState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;PlaneState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;PlaneState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;PlaneState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

Torus class

A 3D torus (donut) shape with configurable major radius, tube radius, and tessellation.

ts
class Torus extends Shape3D<TorusState>

Constructor:

Parameters:

NameTypeDescription
optionsPartial&lt;ElementOptions&lt;TorusState&gt;&gt;

Properties:

PropertyTypeDescription
radiusnumber
tubenumber
radialSegmentsnumber
tubularSegmentsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getDepth(context: Context3D): number

Returns the projected depth of this shape's origin in the given 3D context.

Parameters:

NameTypeDescription
contextContext3D

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this element by applying transforms and context state, then invoking the optional callback.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this element’s bounding box. Override for custom hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;TorusState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;TorusState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;TorusState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;TorusState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;TorusState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

CubeState interface

State interface for a cube, defining uniform edge size.

ts
interface CubeState extends Shape3DState {
    size: number;
}

Properties:

PropertyTypeDescription
sizenumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

SphereState interface

State interface for a sphere, defining radius, longitudinal segments, and latitudinal rings.

ts
interface SphereState extends Shape3DState {
    radius: number;
    segments: number;
    rings: number;
}

Properties:

PropertyTypeDescription
radiusnumber
segmentsnumber
ringsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

CylinderState interface

State interface for a cylinder, defining top/bottom radii, height, and segment count.

ts
interface CylinderState extends Shape3DState {
    radiusTop: number;
    radiusBottom: number;
    height: number;
    segments: number;
}

Properties:

PropertyTypeDescription
radiusTopnumber
radiusBottomnumber
heightnumber
segmentsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

ConeState interface

State interface for a cone, defining radius, height, and segment count.

ts
interface ConeState extends Shape3DState {
    radius: number;
    height: number;
    segments: number;
}

Properties:

PropertyTypeDescription
radiusnumber
heightnumber
segmentsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

PlaneState interface

State interface for a plane, defining width and height.

ts
interface PlaneState extends Shape3DState {
    width: number;
    height: number;
}

Properties:

PropertyTypeDescription
widthnumber
heightnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

TorusState interface

State interface for a torus, defining major radius, tube radius, and segment counts.

ts
interface TorusState extends Shape3DState {
    radius: number;
    tube: number;
    radialSegments: number;
    tubularSegments: number;
}

Properties:

PropertyTypeDescription
radiusnumber
tubenumber
radialSegmentsnumber
tubularSegmentsnumber
xnumber
ynumber
znumber
rotationXnumber
rotationYnumber
rotationZnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

createCube function

Factory function that creates a new Cube instance.

ts
function createCube(...options: ConstructorParameters<typeof Cube>)

Parameters:

NameTypeDescription
options[options: Partial&lt;ElementOptions&lt;CubeState&gt;&gt;]

Returns: Cube


elementIsCube function

Type guard that checks whether a value is a Cube instance.

ts
function elementIsCube(value: unknown): value is Cube

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


createSphere function

Factory function that creates a new Sphere instance.

ts
function createSphere(...options: ConstructorParameters<typeof Sphere>)

Parameters:

NameTypeDescription
options[options: Partial&lt;ElementOptions&lt;SphereState&gt;&gt;]

Returns: Sphere


elementIsSphere function

Type guard that checks whether a value is a Sphere instance.

ts
function elementIsSphere(value: unknown): value is Sphere

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


createCylinder function

Factory function that creates a new Cylinder instance.

ts
function createCylinder(...options: ConstructorParameters<typeof Cylinder>)

Parameters:

NameTypeDescription
options[options: Partial&lt;ElementOptions&lt;CylinderState&gt;&gt;]

Returns: Cylinder


elementIsCylinder function

Type guard that checks whether a value is a Cylinder instance.

ts
function elementIsCylinder(value: unknown): value is Cylinder

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


createCone function

Factory function that creates a new Cone instance.

ts
function createCone(...options: ConstructorParameters<typeof Cone>)

Parameters:

NameTypeDescription
options[options: Partial&lt;ElementOptions&lt;ConeState&gt;&gt;]

Returns: Cone


elementIsCone function

Type guard that checks whether a value is a Cone instance.

ts
function elementIsCone(value: unknown): value is Cone

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


createPlane function

Factory function that creates a new Plane instance.

ts
function createPlane(...options: ConstructorParameters<typeof Plane>)

Parameters:

NameTypeDescription
options[options: Partial&lt;ElementOptions&lt;PlaneState&gt;&gt;]

Returns: Plane


elementIsPlane function

Type guard that checks whether a value is a Plane instance.

ts
function elementIsPlane(value: unknown): value is Plane

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


createTorus function

Factory function that creates a new Torus instance.

ts
function createTorus(...options: ConstructorParameters<typeof Torus>)

Parameters:

NameTypeDescription
options[options: Partial&lt;ElementOptions&lt;TorusState&gt;&gt;]

Returns: Torus


elementIsTorus function

Type guard that checks whether a value is a Torus instance.

ts
function elementIsTorus(value: unknown): value is Torus

Parameters:

NameTypeDescription
valueunknown

Returns: boolean