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.
class Cube extends Shape3D<CubeState>Constructor:
Parameters:
| Name | Type | Description |
|---|---|---|
options | Partial<ElementOptions<CubeState>> |
Properties:
| Property | Type | Description |
|---|---|---|
size | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
id | string | |
readonly type | string | |
readonly classList | Set<string> | |
abstract | boolean | |
pointerEvents | ElementPointerEvents | |
parent | Group<ElementEventMap> | undefined | |
data | unknown | |
renderDepth | number | undefined | |
direction | Direction | undefined | |
fill | string | undefined | |
filter | string | undefined | |
font | string | 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 | |
translateX | number | undefined | |
translateY | number | undefined | |
transformScaleX | number | undefined | |
transformScaleY | number | undefined | |
rotation | Rotation | undefined | |
transformOriginX | TransformOrigin | undefined | |
transformOriginY | TransformOrigin | undefined |
Methods:
getDepth(context: Context3D): number
Returns the projected depth of this shape's origin in the given 3D context.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context3D |
getBoundingBox(): Box
Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.
render(context: Context<Element>): void
Renders this element by applying transforms and context state, then invoking the optional callback.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context<Element> |
intersectsWith(x: number, y: number, options: Partial<ElementIntersectionOptions> \| undefined): boolean
Tests whether a point intersects this element’s bounding box. Override for custom hit testing.
Parameters:
| Name | Type | Description |
|---|---|---|
x | number | |
y | number | |
options | Partial<ElementIntersectionOptions> | undefined |
on(event: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler to the given event type and returns a disposable for cleanup.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
clone(): Element<CubeState, ElementEventMap>
Creates a shallow clone of this element with the same id, classes, and state.
interpolate(newState: Partial<ElementInterpolationState<CubeState>>, interpolators: Partial<ElementInterpolators<CubeState>>): Interpolator<void>
Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.
Parameters:
| Name | Type | Description |
|---|---|---|
newState | Partial<ElementInterpolationState<CubeState>> | |
interpolators | Partial<ElementInterpolators<CubeState>> |
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:
| Name | Type | Description |
|---|---|---|
type | keyof ElementEventMap |
off(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>): void
Removes a previously registered handler for the given event type.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> |
once(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler that is automatically removed after it fires once.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
emit(event: TEvent): TEvent
Emits an event, invoking all matching handlers and bubbling to the parent if applicable.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent |
Sphere class
A 3D sphere shape tessellated with configurable segments and rings.
class Sphere extends Shape3D<SphereState>Constructor:
Parameters:
| Name | Type | Description |
|---|---|---|
options | Partial<ElementOptions<SphereState>> |
Properties:
| Property | Type | Description |
|---|---|---|
radius | number | |
segments | number | |
rings | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
id | string | |
readonly type | string | |
readonly classList | Set<string> | |
abstract | boolean | |
pointerEvents | ElementPointerEvents | |
parent | Group<ElementEventMap> | undefined | |
data | unknown | |
renderDepth | number | undefined | |
direction | Direction | undefined | |
fill | string | undefined | |
filter | string | undefined | |
font | string | 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 | |
translateX | number | undefined | |
translateY | number | undefined | |
transformScaleX | number | undefined | |
transformScaleY | number | undefined | |
rotation | Rotation | undefined | |
transformOriginX | TransformOrigin | undefined | |
transformOriginY | TransformOrigin | undefined |
Methods:
getDepth(context: Context3D): number
Returns the projected depth of this shape's origin in the given 3D context.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context3D |
getBoundingBox(): Box
Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.
render(context: Context<Element>): void
Renders this element by applying transforms and context state, then invoking the optional callback.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context<Element> |
intersectsWith(x: number, y: number, options: Partial<ElementIntersectionOptions> \| undefined): boolean
Tests whether a point intersects this element’s bounding box. Override for custom hit testing.
Parameters:
| Name | Type | Description |
|---|---|---|
x | number | |
y | number | |
options | Partial<ElementIntersectionOptions> | undefined |
on(event: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler to the given event type and returns a disposable for cleanup.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
clone(): Element<SphereState, ElementEventMap>
Creates a shallow clone of this element with the same id, classes, and state.
interpolate(newState: Partial<ElementInterpolationState<SphereState>>, interpolators: Partial<ElementInterpolators<SphereState>>): Interpolator<void>
Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.
Parameters:
| Name | Type | Description |
|---|---|---|
newState | Partial<ElementInterpolationState<SphereState>> | |
interpolators | Partial<ElementInterpolators<SphereState>> |
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:
| Name | Type | Description |
|---|---|---|
type | keyof ElementEventMap |
off(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>): void
Removes a previously registered handler for the given event type.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> |
once(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler that is automatically removed after it fires once.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
emit(event: TEvent): TEvent
Emits an event, invoking all matching handlers and bubbling to the parent if applicable.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent |
Cylinder class
A 3D cylinder shape with independent top and bottom radii for truncated cones.
class Cylinder extends Shape3D<CylinderState>Constructor:
Parameters:
| Name | Type | Description |
|---|---|---|
options | Partial<ElementOptions<CylinderState>> |
Properties:
| Property | Type | Description |
|---|---|---|
radiusTop | number | |
radiusBottom | number | |
height | number | |
segments | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
id | string | |
readonly type | string | |
readonly classList | Set<string> | |
abstract | boolean | |
pointerEvents | ElementPointerEvents | |
parent | Group<ElementEventMap> | undefined | |
data | unknown | |
renderDepth | number | undefined | |
direction | Direction | undefined | |
fill | string | undefined | |
filter | string | undefined | |
font | string | 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 | |
translateX | number | undefined | |
translateY | number | undefined | |
transformScaleX | number | undefined | |
transformScaleY | number | undefined | |
rotation | Rotation | undefined | |
transformOriginX | TransformOrigin | undefined | |
transformOriginY | TransformOrigin | undefined |
Methods:
getDepth(context: Context3D): number
Returns the projected depth of this shape's origin in the given 3D context.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context3D |
getBoundingBox(): Box
Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.
render(context: Context<Element>): void
Renders this element by applying transforms and context state, then invoking the optional callback.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context<Element> |
intersectsWith(x: number, y: number, options: Partial<ElementIntersectionOptions> \| undefined): boolean
Tests whether a point intersects this element’s bounding box. Override for custom hit testing.
Parameters:
| Name | Type | Description |
|---|---|---|
x | number | |
y | number | |
options | Partial<ElementIntersectionOptions> | undefined |
on(event: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler to the given event type and returns a disposable for cleanup.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
clone(): Element<CylinderState, ElementEventMap>
Creates a shallow clone of this element with the same id, classes, and state.
interpolate(newState: Partial<ElementInterpolationState<CylinderState>>, interpolators: Partial<ElementInterpolators<CylinderState>>): Interpolator<void>
Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.
Parameters:
| Name | Type | Description |
|---|---|---|
newState | Partial<ElementInterpolationState<CylinderState>> | |
interpolators | Partial<ElementInterpolators<CylinderState>> |
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:
| Name | Type | Description |
|---|---|---|
type | keyof ElementEventMap |
off(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>): void
Removes a previously registered handler for the given event type.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> |
once(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler that is automatically removed after it fires once.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
emit(event: TEvent): TEvent
Emits an event, invoking all matching handlers and bubbling to the parent if applicable.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent |
Cone class
A 3D cone shape with configurable radius, height, and segment resolution.
class Cone extends Shape3D<ConeState>Constructor:
Parameters:
| Name | Type | Description |
|---|---|---|
options | Partial<ElementOptions<ConeState>> |
Properties:
| Property | Type | Description |
|---|---|---|
radius | number | |
height | number | |
segments | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
id | string | |
readonly type | string | |
readonly classList | Set<string> | |
abstract | boolean | |
pointerEvents | ElementPointerEvents | |
parent | Group<ElementEventMap> | undefined | |
data | unknown | |
renderDepth | number | undefined | |
direction | Direction | undefined | |
fill | string | undefined | |
filter | string | undefined | |
font | string | 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 | |
translateX | number | undefined | |
translateY | number | undefined | |
transformScaleX | number | undefined | |
transformScaleY | number | undefined | |
rotation | Rotation | undefined | |
transformOriginX | TransformOrigin | undefined | |
transformOriginY | TransformOrigin | undefined |
Methods:
getDepth(context: Context3D): number
Returns the projected depth of this shape's origin in the given 3D context.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context3D |
getBoundingBox(): Box
Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.
render(context: Context<Element>): void
Renders this element by applying transforms and context state, then invoking the optional callback.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context<Element> |
intersectsWith(x: number, y: number, options: Partial<ElementIntersectionOptions> \| undefined): boolean
Tests whether a point intersects this element’s bounding box. Override for custom hit testing.
Parameters:
| Name | Type | Description |
|---|---|---|
x | number | |
y | number | |
options | Partial<ElementIntersectionOptions> | undefined |
on(event: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler to the given event type and returns a disposable for cleanup.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
clone(): Element<ConeState, ElementEventMap>
Creates a shallow clone of this element with the same id, classes, and state.
interpolate(newState: Partial<ElementInterpolationState<ConeState>>, interpolators: Partial<ElementInterpolators<ConeState>>): Interpolator<void>
Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.
Parameters:
| Name | Type | Description |
|---|---|---|
newState | Partial<ElementInterpolationState<ConeState>> | |
interpolators | Partial<ElementInterpolators<ConeState>> |
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:
| Name | Type | Description |
|---|---|---|
type | keyof ElementEventMap |
off(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>): void
Removes a previously registered handler for the given event type.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> |
once(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler that is automatically removed after it fires once.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
emit(event: TEvent): TEvent
Emits an event, invoking all matching handlers and bubbling to the parent if applicable.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent |
Plane class
A flat rectangular 3D plane oriented along the XY plane.
class Plane extends Shape3D<PlaneState>Constructor:
Parameters:
| Name | Type | Description |
|---|---|---|
options | Partial<ElementOptions<PlaneState>> |
Properties:
| Property | Type | Description |
|---|---|---|
width | number | |
height | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
id | string | |
readonly type | string | |
readonly classList | Set<string> | |
abstract | boolean | |
pointerEvents | ElementPointerEvents | |
parent | Group<ElementEventMap> | undefined | |
data | unknown | |
renderDepth | number | undefined | |
direction | Direction | undefined | |
fill | string | undefined | |
filter | string | undefined | |
font | string | 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 | |
translateX | number | undefined | |
translateY | number | undefined | |
transformScaleX | number | undefined | |
transformScaleY | number | undefined | |
rotation | Rotation | undefined | |
transformOriginX | TransformOrigin | undefined | |
transformOriginY | TransformOrigin | undefined |
Methods:
getDepth(context: Context3D): number
Returns the projected depth of this shape's origin in the given 3D context.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context3D |
getBoundingBox(): Box
Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.
render(context: Context<Element>): void
Renders this element by applying transforms and context state, then invoking the optional callback.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context<Element> |
intersectsWith(x: number, y: number, options: Partial<ElementIntersectionOptions> \| undefined): boolean
Tests whether a point intersects this element’s bounding box. Override for custom hit testing.
Parameters:
| Name | Type | Description |
|---|---|---|
x | number | |
y | number | |
options | Partial<ElementIntersectionOptions> | undefined |
on(event: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler to the given event type and returns a disposable for cleanup.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
clone(): Element<PlaneState, ElementEventMap>
Creates a shallow clone of this element with the same id, classes, and state.
interpolate(newState: Partial<ElementInterpolationState<PlaneState>>, interpolators: Partial<ElementInterpolators<PlaneState>>): Interpolator<void>
Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.
Parameters:
| Name | Type | Description |
|---|---|---|
newState | Partial<ElementInterpolationState<PlaneState>> | |
interpolators | Partial<ElementInterpolators<PlaneState>> |
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:
| Name | Type | Description |
|---|---|---|
type | keyof ElementEventMap |
off(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>): void
Removes a previously registered handler for the given event type.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> |
once(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler that is automatically removed after it fires once.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
emit(event: TEvent): TEvent
Emits an event, invoking all matching handlers and bubbling to the parent if applicable.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent |
Torus class
A 3D torus (donut) shape with configurable major radius, tube radius, and tessellation.
class Torus extends Shape3D<TorusState>Constructor:
Parameters:
| Name | Type | Description |
|---|---|---|
options | Partial<ElementOptions<TorusState>> |
Properties:
| Property | Type | Description |
|---|---|---|
radius | number | |
tube | number | |
radialSegments | number | |
tubularSegments | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
id | string | |
readonly type | string | |
readonly classList | Set<string> | |
abstract | boolean | |
pointerEvents | ElementPointerEvents | |
parent | Group<ElementEventMap> | undefined | |
data | unknown | |
renderDepth | number | undefined | |
direction | Direction | undefined | |
fill | string | undefined | |
filter | string | undefined | |
font | string | 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 | |
translateX | number | undefined | |
translateY | number | undefined | |
transformScaleX | number | undefined | |
transformScaleY | number | undefined | |
rotation | Rotation | undefined | |
transformOriginX | TransformOrigin | undefined | |
transformOriginY | TransformOrigin | undefined |
Methods:
getDepth(context: Context3D): number
Returns the projected depth of this shape's origin in the given 3D context.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context3D |
getBoundingBox(): Box
Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.
render(context: Context<Element>): void
Renders this element by applying transforms and context state, then invoking the optional callback.
Parameters:
| Name | Type | Description |
|---|---|---|
context | Context<Element> |
intersectsWith(x: number, y: number, options: Partial<ElementIntersectionOptions> \| undefined): boolean
Tests whether a point intersects this element’s bounding box. Override for custom hit testing.
Parameters:
| Name | Type | Description |
|---|---|---|
x | number | |
y | number | |
options | Partial<ElementIntersectionOptions> | undefined |
on(event: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler to the given event type and returns a disposable for cleanup.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
clone(): Element<TorusState, ElementEventMap>
Creates a shallow clone of this element with the same id, classes, and state.
interpolate(newState: Partial<ElementInterpolationState<TorusState>>, interpolators: Partial<ElementInterpolators<TorusState>>): Interpolator<void>
Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.
Parameters:
| Name | Type | Description |
|---|---|---|
newState | Partial<ElementInterpolationState<TorusState>> | |
interpolators | Partial<ElementInterpolators<TorusState>> |
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:
| Name | Type | Description |
|---|---|---|
type | keyof ElementEventMap |
off(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>): void
Removes a previously registered handler for the given event type.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> |
once(type: TEvent, handler: EventHandler<ElementEventMap[TEvent]>, options: EventSubscriptionOptions \| undefined): Disposable
Subscribes a handler that is automatically removed after it fires once.
Parameters:
| Name | Type | Description |
|---|---|---|
type | TEvent | |
handler | EventHandler<ElementEventMap[TEvent]> | |
options | EventSubscriptionOptions | undefined |
emit(event: TEvent): TEvent
Emits an event, invoking all matching handlers and bubbling to the parent if applicable.
Parameters:
| Name | Type | Description |
|---|---|---|
event | TEvent |
CubeState interface
State interface for a cube, defining uniform edge size.
interface CubeState extends Shape3DState {
size: number;
}Properties:
| Property | Type | Description |
|---|---|---|
size | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
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.
interface SphereState extends Shape3DState {
radius: number;
segments: number;
rings: number;
}Properties:
| Property | Type | Description |
|---|---|---|
radius | number | |
segments | number | |
rings | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
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.
interface CylinderState extends Shape3DState {
radiusTop: number;
radiusBottom: number;
height: number;
segments: number;
}Properties:
| Property | Type | Description |
|---|---|---|
radiusTop | number | |
radiusBottom | number | |
height | number | |
segments | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
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.
interface ConeState extends Shape3DState {
radius: number;
height: number;
segments: number;
}Properties:
| Property | Type | Description |
|---|---|---|
radius | number | |
height | number | |
segments | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
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.
interface PlaneState extends Shape3DState {
width: number;
height: number;
}Properties:
| Property | Type | Description |
|---|---|---|
width | number | |
height | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
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.
interface TorusState extends Shape3DState {
radius: number;
tube: number;
radialSegments: number;
tubularSegments: number;
}Properties:
| Property | Type | Description |
|---|---|---|
radius | number | |
tube | number | |
radialSegments | number | |
tubularSegments | number | |
x | number | |
y | number | |
z | number | |
rotationX | number | |
rotationY | number | |
rotationZ | number | |
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.
function createCube(...options: ConstructorParameters<typeof Cube>)Parameters:
| Name | Type | Description |
|---|---|---|
options | [options: Partial<ElementOptions<CubeState>>] |
Returns: Cube
elementIsCube function
Type guard that checks whether a value is a Cube instance.
function elementIsCube(value: unknown): value is CubeParameters:
| Name | Type | Description |
|---|---|---|
value | unknown |
Returns: boolean
createSphere function
Factory function that creates a new Sphere instance.
function createSphere(...options: ConstructorParameters<typeof Sphere>)Parameters:
| Name | Type | Description |
|---|---|---|
options | [options: Partial<ElementOptions<SphereState>>] |
Returns: Sphere
elementIsSphere function
Type guard that checks whether a value is a Sphere instance.
function elementIsSphere(value: unknown): value is SphereParameters:
| Name | Type | Description |
|---|---|---|
value | unknown |
Returns: boolean
createCylinder function
Factory function that creates a new Cylinder instance.
function createCylinder(...options: ConstructorParameters<typeof Cylinder>)Parameters:
| Name | Type | Description |
|---|---|---|
options | [options: Partial<ElementOptions<CylinderState>>] |
Returns: Cylinder
elementIsCylinder function
Type guard that checks whether a value is a Cylinder instance.
function elementIsCylinder(value: unknown): value is CylinderParameters:
| Name | Type | Description |
|---|---|---|
value | unknown |
Returns: boolean
createCone function
Factory function that creates a new Cone instance.
function createCone(...options: ConstructorParameters<typeof Cone>)Parameters:
| Name | Type | Description |
|---|---|---|
options | [options: Partial<ElementOptions<ConeState>>] |
Returns: Cone
elementIsCone function
Type guard that checks whether a value is a Cone instance.
function elementIsCone(value: unknown): value is ConeParameters:
| Name | Type | Description |
|---|---|---|
value | unknown |
Returns: boolean
createPlane function
Factory function that creates a new Plane instance.
function createPlane(...options: ConstructorParameters<typeof Plane>)Parameters:
| Name | Type | Description |
|---|---|---|
options | [options: Partial<ElementOptions<PlaneState>>] |
Returns: Plane
elementIsPlane function
Type guard that checks whether a value is a Plane instance.
function elementIsPlane(value: unknown): value is PlaneParameters:
| Name | Type | Description |
|---|---|---|
value | unknown |
Returns: boolean
createTorus function
Factory function that creates a new Torus instance.
function createTorus(...options: ConstructorParameters<typeof Torus>)Parameters:
| Name | Type | Description |
|---|---|---|
options | [options: Partial<ElementOptions<TorusState>>] |
Returns: Torus
elementIsTorus function
Type guard that checks whether a value is a Torus instance.
function elementIsTorus(value: unknown): value is TorusParameters:
| Name | Type | Description |
|---|---|---|
value | unknown |
Returns: boolean