UNPKG

threepipe

Version:

A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.

24 lines (22 loc) 1.06 kB
import {EllipseCurve, Vector3} from 'three' import {Serialization} from 'ts-browser-helpers' /** * A 3D version of three.js EllipseCurve that returns Vector3 points. * Useful for creating circular/elliptical 3D paths for TubeGeometry and TubeShapeGeometry. * * Note: EllipseCurve extends Curve<Vector2>, but this override returns Vector3 at runtime. * Type casts may be needed when passing to APIs expecting Curve<Vector3>. */ export class EllipseCurve3D extends EllipseCurve { override readonly type: string | 'EllipseCurve3D' constructor(aX?: number, aY?: number, xRadius?: number, yRadius?: number, aStartAngle?: number, aEndAngle?: number, aClockwise?: boolean, aRotation?: number) { super(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) this.type = 'EllipseCurve3D' } getPoint(t: number, optionalTarget?: any) { return super.getPoint(t, (optionalTarget || new Vector3()) as any) } static { Serialization.SerializableClasses.set('EllipseCurve3D', EllipseCurve3D) } }