mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-10-26 08:24:20 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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)));
 | |
|     });
 | |
|   });
 | |
| });
 | 
