12345678910111213141516171819202122232425262728293031323334353637 |
- import * as GA from "./ga";
- import * as GALine from "./galines";
- import { Point, Line, join } from "./ga";
- /**
- * TODO: docs
- */
- export function from([x, y]: readonly [number, number]): Point {
- return [0, 0, 0, 0, y, x, 1, 0];
- }
- export function toTuple(point: Point): [number, number] {
- return [point[5], point[4]];
- }
- export function abs(point: Point): Point {
- return [0, 0, 0, 0, Math.abs(point[4]), Math.abs(point[5]), 1, 0];
- }
- export function intersect(line1: Line, line2: Line): Point {
- return GA.normalized(GA.meet(line1, line2));
- }
- // Projects `point` onto the `line`.
- // The returned point is the closest point on the `line` to the `point`.
- export function project(point: Point, line: Line): Point {
- return intersect(GALine.orthogonal(line, point), line);
- }
- export function distance(point1: Point, point2: Point): number {
- return GA.norm(join(point1, point2));
- }
- export function distanceToLine(point: Point, line: Line): number {
- return GA.joinScalar(point, line);
- }
|