@js-draw/math
Version:
A math library for js-draw.
37 lines (36 loc) • 1.4 kB
TypeScript
import { Point2, Vec2 } from '../Vec2';
import Abstract2DShape from './Abstract2DShape';
import LineSegment2 from './LineSegment2';
/**
* A 2-dimensional path with parameter interval $t \in [0, 1]$.
*
* **Note:** Avoid extending this class outside of `js-draw` --- new abstract methods
* may be added between minor versions.
*/
export declare abstract class Parameterized2DShape extends Abstract2DShape {
/** Returns this at a given parameter. $t \in [0, 1]$ */
abstract at(t: number): Point2;
/** Computes the unit normal vector at $t$. */
abstract normalAt(t: number): Vec2;
abstract tangentAt(t: number): Vec2;
/**
* Divides this shape into two separate shapes at parameter value $t$.
*/
abstract splitAt(t: number): [Parameterized2DShape] | [Parameterized2DShape, Parameterized2DShape];
/**
* Returns the nearest point on `this` to `point` and the `parameterValue` at which
* that point occurs.
*/
abstract nearestPointTo(point: Point2): {
point: Point2;
parameterValue: number;
};
/**
* Returns the **parameter values** at which `lineSegment` intersects this shape.
*
* See also {@link intersectsLineSegment}
*/
abstract argIntersectsLineSegment(lineSegment: LineSegment2): number[];
intersectsLineSegment(line: LineSegment2): Point2[];
}
export default Parameterized2DShape;