import type { IPoint } from "./IPoint"; import type { IBounds } from "./IBounds"; /** * ============================================================================ * CONSTANTS * ============================================================================ * @hidden */ export declare const PI: number; export declare const HALFPI: number; export declare const RADIANS: number; export declare const DEGREES: number; /** * Rounds the numeric value to whole number or specific precision of set. * * @param value Value * @param precision Precision (number of decimal points) * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it. * @return Rounded value */ export declare function round(value: number, precision?: number, floor?: boolean): number; /** * Ceils the numeric value to whole number or specific precision of set. * * @param value Value * @param precision Precision (number of decimal points) * @return Rounded value */ export declare function ceil(value: number, precision: number): number; /** * Returns the first control point for a cubic bezier spline segment * interpolating through three consecutive points with the given tension. * * @ignore * @param p0 Previous point * @param p1 Current point * @param p2 Next point * @param tensionX Horizontal tension (0–1) * @param tensionY Vertical tension (0–1) * @return First control point */ export declare function getCubicControlPointA(p0: IPoint, p1: IPoint, p2: IPoint, tensionX: number, tensionY: number): IPoint; /** * Returns the second control point for a cubic bezier spline segment * interpolating through three consecutive points with the given tension. * * @ignore * @param p1 Current point * @param p2 Next point * @param p3 Point after next * @param tensionX Horizontal tension (0–1) * @param tensionY Vertical tension (0–1) * @return Second control point */ export declare function getCubicControlPointB(p1: IPoint, p2: IPoint, p3: IPoint, tensionX: number, tensionY: number): IPoint; /** * Clamps a value to the given [min, max] range. * * @param value Value to clamp * @param min Minimum * @param max Maximum * @return Clamped value */ export declare function fitToRange(value: number, min: number, max: number): number; /** * Returns sine of an angle specified in degrees. * * @param value Value * @return Sine */ export declare function sin(angle: number): number; /** * Returns tan of an angle specified in degrees. * * @param value Value * @return Sine */ export declare function tan(angle: number): number; /** * Returns cosine of an angle specified in degrees. * * @param value Value * @return Cosine */ export declare function cos(angle: number): number; /** * Normalizes an angle to the 0–360 range. * * @param value Angle in degrees * @return Normalized angle (0–360) */ export declare function normalizeAngle(value: number): number; /** * Returns the bounding box of a circular arc. * * @param cx Center X * @param cy Center Y * @param startAngle Start angle in degrees * @param endAngle End angle in degrees * @param radius Arc radius * @return Bounding box */ export declare function getArcBounds(cx: number, cy: number, startAngle: number, endAngle: number, radius: number): IBounds; /** * Returns a point on a circle at the given angle. * * @param radius Circle radius * @param arc Angle in degrees * @return Point on the arc */ export declare function getArcPoint(radius: number, arc: number): { x: number; y: number; }; /** * Merges an array of bounds into a single bounding box that encompasses all of them. * * @param bounds Array of bounds to merge * @return Combined bounding box */ export declare function mergeBounds(bounds: IBounds[]): IBounds; /** * Fits an angle into the given start/end range, snapping to the * nearest boundary when the angle falls outside. * * @param value Angle in degrees * @param startAngle Range start in degrees * @param endAngle Range end in degrees * @return Angle clamped to the range */ export declare function fitAngleToRange(value: number, startAngle: number, endAngle: number): number; /** * Returns `true` if a point is inside the given bounds (inclusive). * * @param point Point to test * @param bounds Bounding box * @return Whether the point is inside */ export declare function inBounds(point: IPoint, bounds: IBounds): boolean; /** * Returns the angle in degrees from `point1` to `point2`. * If `point2` is omitted, uses double of `point1` coordinates. * * @param point1 Origin point * @param point2 Target point (optional) * @return Angle in degrees (0–360) */ export declare function getAngle(point1: IPoint, point2?: IPoint): number; /** * Returns a point on a quadratic bezier curve at the given position (0–1). * * @param pointA Start point * @param pointB End point * @param controlPoint Control point * @param position Relative position (0 = start, 1 = end) * @return Point on the curve */ export declare function getPointOnQuadraticCurve(pointA: IPoint, pointB: IPoint, controlPoint: IPoint, position: number): IPoint; /** * Returns a point on a cubic bezier curve at the given position (0–1). * * @param pointA Start point * @param pointB End point * @param controlPointA First control point (near start) * @param controlPointB Second control point (near end) * @param position Relative position (0 = start, 1 = end) * @return Point on the curve */ export declare function getPointOnCubicCurve(pointA: IPoint, pointB: IPoint, controlPointA: IPoint, controlPointB: IPoint, position: number): IPoint; /** * Returns a point at a relative position along a straight line between two points. * * @param pointA Start point * @param pointB End point * @param position Relative position (0 = start, 1 = end) * @return Point on the line */ export declare function getPointOnLine(pointA: IPoint, pointB: IPoint, position: number): IPoint; /** * Given a normalized location (0–1) along a multi-segment path and an array * of cumulative segment lengths, returns which segment the location falls in * and the local parameter t within that segment. * * @param location Relative position along the full path (0–1) * @param cumulativeLengths Cumulative length at the end of each segment * @return Segment index and local t (0–1) */ export declare function resolveLocationOnPath(location: number, cumulativeLengths: number[]): { index: number; t: number; }; /** * Returns the closest value from the array of values to the reference value. * * @param values Array of values * @param value Reference value * @return Closes value from the array */ export declare function closest(values: number[], referenceValue: number): number; /** * Returns true if bounds overlap * @param bounds1 IBounds * @param bounds2 IBounds * @returns boolean */ export declare function boundsOverlap(bounds1: IBounds, bounds2: IBounds): boolean; /** * Generates points along a spiral path. * * @param cx Center X * @param cy Center Y * @param radius Outer radius * @param radiusY Vertical radius (for elliptical spirals) * @param innerRadius Inner radius where the spiral starts * @param step Base step size between points * @param radiusStep Radius increase per full revolution * @param startAngle Start angle in degrees * @param endAngle End angle in degrees * @return Array of points along the spiral */ export declare function spiralPoints(cx: number, cy: number, radius: number, radiusY: number, innerRadius: number, step: number, radiusStep: number, startAngle: number, endAngle: number): IPoint[]; /** * Returns `true` if two circles overlap or touch. * * @param circle1 First circle (x, y, radius) * @param circle2 Second circle (x, y, radius) * @return Whether the circles overlap */ export declare function circlesOverlap(circle1: { x: number; y: number; radius: number; }, circle2: { x: number; y: number; radius: number; }): boolean; //# sourceMappingURL=Math.d.ts.map