gadirections.ts 648 B

1234567891011121314151617181920212223
  1. import * as GA from "./ga";
  2. import { Line, Direction, Point } from "./ga";
  3. /**
  4. * A direction is stored as an array `[0, 0, 0, 0, y, x, 0, 0]` representing
  5. * vector `(x, y)`.
  6. */
  7. export function from(point: Point): Point {
  8. return [0, 0, 0, 0, point[4], point[5], 0, 0];
  9. }
  10. export function fromTo(from: Point, to: Point): Direction {
  11. return GA.inormalized([0, 0, 0, 0, to[4] - from[4], to[5] - from[5], 0, 0]);
  12. }
  13. export function orthogonal(direction: Direction): Direction {
  14. return GA.inormalized([0, 0, 0, 0, -direction[5], direction[4], 0, 0]);
  15. }
  16. export function orthogonalToLine(line: Line): Direction {
  17. return GA.mul(line, GA.I);
  18. }