/** * Spline Curve * * Represents a cubic Bézier curve segment between two spline handles. * Uses De Casteljau's algorithm for curve operations. */ import { Vector3 } from '../modeling/transform'; export interface SplineCurveData { start_handle?: string; end_handle?: string; start?: string; start_ctrl?: string; end_ctrl?: string; end?: string; } export interface SplineCurveSplitResult { start: Vector3; start_ctrl: Vector3; middle_ctrl1: Vector3; middle: Vector3; middle_ctrl2: Vector3; end_ctrl: Vector3; end: Vector3; } export declare class SplineCurve { spline: any; start_handle: string; end_handle: string; start: string; start_ctrl: string; end_ctrl: string; end: string; constructor(spline: any, data?: SplineCurveData); /** * Get element (spline) this curve belongs to */ get element(): any; /** * Extend curve with new data */ extend(data: SplineCurveData): this; /** * Get curve key in spline's curves collection */ getCurveKey(): string | undefined; /** * Check if curve is selected * Framework adapters would implement selection checking */ isSelected(splineSelection?: Record): boolean; /** * Get save copy for serialization */ getSaveCopy(): SplineCurveData; /** * Get undo copy */ getUndoCopy(): SplineCurveData; /** * Split a curve in two using De Casteljau's algorithm. * The split happens at the corresponding T (time) on the initial curve. * * @param time Point at which the split occurs (0 to 1) * @returns Adjusted and new points for the two new curves * * Source: https://stackoverflow.com/questions/8369488/splitting-a-bezier-curve */ split(time: number): SplineCurveSplitResult; } //# sourceMappingURL=spline_curve.d.ts.map