mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-09-23 09:21:00 +02:00
build: decouple package deps and introduce yarn workspaces (#7415)
* feat: decouple package deps and introduce yarn workspaces * update root directory * fix * fix scripts * fix lint * update path in scripts * remove yarn.lock files from packages * ignore workspace * dummy * dummy * remove comment check * revert workflow changes * ignore ws when installing gh actions * remove log * update path * fix * fix typo
This commit is contained in:
41
packages/excalidraw/gatransforms.ts
Normal file
41
packages/excalidraw/gatransforms.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import * as GA from "./ga";
|
||||
import { Line, Direction, Point, Transform } from "./ga";
|
||||
import * as GADirection from "./gadirections";
|
||||
|
||||
/**
|
||||
* TODO: docs
|
||||
*/
|
||||
|
||||
export const rotation = (pivot: Point, angle: number): Transform =>
|
||||
GA.add(GA.mul(pivot, Math.sin(angle / 2)), Math.cos(angle / 2));
|
||||
|
||||
export const translation = (direction: Direction): Transform => [
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
-(0.5 * direction[5]),
|
||||
0.5 * direction[4],
|
||||
0,
|
||||
0,
|
||||
];
|
||||
|
||||
export const translationOrthogonal = (
|
||||
direction: Direction,
|
||||
distance: number,
|
||||
): Transform => {
|
||||
const scale = 0.5 * distance;
|
||||
return [1, 0, 0, 0, scale * direction[4], scale * direction[5], 0, 0];
|
||||
};
|
||||
|
||||
export const translationAlong = (line: Line, distance: number): Transform =>
|
||||
GA.add(GA.mul(GADirection.orthogonalToLine(line), 0.5 * distance), 1);
|
||||
|
||||
export const compose = (motor1: Transform, motor2: Transform): Transform =>
|
||||
GA.mul(motor2, motor1);
|
||||
|
||||
export const apply = (
|
||||
motor: Transform,
|
||||
nvector: Point | Direction | Line,
|
||||
): Point | Direction | Line =>
|
||||
GA.normalized(GA.mul(GA.mul(motor, nvector), GA.reverse(motor)));
|
Reference in New Issue
Block a user