12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import * as GA from "./ga";
- import { point, toString, direction, offset } from "./ga";
- import * as GAPoint from "./gapoints";
- import * as GALine from "./galines";
- import * as GATransform from "./gatransforms";
- describe("geometric algebra", () => {
- describe("points", () => {
- it("distanceToLine", () => {
- const point = GA.point(3, 3);
- const line = GALine.equation(0, 1, -1);
- expect(GAPoint.distanceToLine(point, line)).toEqual(2);
- });
- it("distanceToLine neg", () => {
- const point = GA.point(-3, -3);
- const line = GALine.equation(0, 1, -1);
- expect(GAPoint.distanceToLine(point, line)).toEqual(-4);
- });
- });
- describe("lines", () => {
- it("through", () => {
- const a = GA.point(0, 0);
- const b = GA.point(2, 0);
- expect(toString(GALine.through(a, b))).toEqual(
- toString(GALine.equation(0, 2, 0)),
- );
- });
- it("parallel", () => {
- const point = GA.point(3, 3);
- const line = GALine.equation(0, 1, -1);
- const parallel = GALine.parallel(line, 2);
- expect(GAPoint.distanceToLine(point, parallel)).toEqual(0);
- });
- });
- describe("translation", () => {
- it("points", () => {
- const start = point(2, 2);
- const move = GATransform.translation(direction(0, 1));
- const end = GATransform.apply(move, start);
- expect(toString(end)).toEqual(toString(point(2, 3)));
- });
- it("points 2", () => {
- const start = point(2, 2);
- const move = GATransform.translation(offset(3, 4));
- const end = GATransform.apply(move, start);
- expect(toString(end)).toEqual(toString(point(5, 6)));
- });
- it("lines", () => {
- const original = GALine.through(point(2, 2), point(3, 4));
- const move = GATransform.translation(offset(3, 4));
- const parallel = GATransform.apply(move, original);
- expect(toString(parallel)).toEqual(
- toString(GALine.through(point(5, 6), point(6, 8))),
- );
- });
- });
- describe("rotation", () => {
- it("points", () => {
- const start = point(2, 2);
- const pivot = point(1, 1);
- const rotate = GATransform.rotation(pivot, Math.PI / 2);
- const end = GATransform.apply(rotate, start);
- expect(toString(end)).toEqual(toString(point(2, 0)));
- });
- });
- });
|