/** * BodyOutlineCalculator - Computes body outline from spine chain * * Uses parametric equations to generate left/right boundaries * perpendicular to spine direction at each joint. */ import type { SpineChain } from "./SpineChain.js"; export interface Point { x: number; y: number; } export interface BodyOutline { leftPoints: Point[]; rightPoints: Point[]; headPoint: Point; tailPoint: Point; } export declare class BodyOutlineCalculator { /** * Calculate body outline from spine chain * Creates smooth left and right boundaries based on joint positions and widths */ calculateOutline(spine: SpineChain): BodyOutline; /** * Draw smooth body path through outline points * Uses quadratic curves for organic appearance */ drawBodyPath(ctx: CanvasRenderingContext2D, outline: BodyOutline): void; /** * Draw a smooth curve through points using quadratic beziers */ private drawSmoothCurve; /** * Get point along outline for fin attachment * @param outline - Body outline * @param t - Position from 0 (head) to 1 (tail) * @param side - 'left' or 'right' side */ getAttachmentPoint(outline: BodyOutline, t: number, side: "left" | "right"): Point; /** * Get center point along spine for eye/gill placement */ getCenterPoint(spine: SpineChain, t: number): Point & { angle: number; }; } //# sourceMappingURL=BodyOutlineCalculator.d.ts.map