diff options
author | Monika Hedman <monika_hedman@brown.edu> | 2019-02-12 16:27:45 -0500 |
---|---|---|
committer | Monika Hedman <monika_hedman@brown.edu> | 2019-02-12 16:27:45 -0500 |
commit | 39a61758f87f59366a3464b72fdf249a39a78955 (patch) | |
tree | 3bdcb59110a7eedfef3215439e77a09c1eeee0b4 /src/client/util/Transform.ts | |
parent | 05a710e2a541a07347d1626489a1811874126c79 (diff) | |
parent | 6ef7d8f10b2ec78491b66ea4e2f6cebce3b0230a (diff) |
Merge branch 'transforms' of https://github.com/browngraphicslab/Dash-Web into hedmanLocal
Diffstat (limited to 'src/client/util/Transform.ts')
-rw-r--r-- | src/client/util/Transform.ts | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/client/util/Transform.ts b/src/client/util/Transform.ts index 7861ed308..3edc8d569 100644 --- a/src/client/util/Transform.ts +++ b/src/client/util/Transform.ts @@ -7,6 +7,10 @@ export class Transform { return new Transform(0, 0, 1); } + get TranslateX(): number { return this._translateX; } + get TranslateY(): number { return this._translateY; } + get Scale(): number { return this._scale; } + constructor(x: number, y: number, scale: number) { this._translateX = x; this._translateY = y; @@ -42,6 +46,17 @@ export class Transform { return this.copy().scale(scale); } + scaleAbout = (scale: number, x: number, y: number): Transform => { + this._translateX += x * this._scale - x * this._scale * scale; + this._translateY += y * this._scale - y * this._scale * scale; + this._scale *= scale; + return this; + } + + scaledAbout = (scale: number, x: number, y: number): Transform => { + return this.copy().scaleAbout(scale, x, y); + } + preScale = (scale: number): Transform => { this._scale *= scale; this._translateX *= scale; @@ -83,6 +98,10 @@ export class Transform { return [x, y]; } + transformDirection = (x: number, y: number): [number, number] => { + return [x * this._scale, y * this._scale]; + } + inverse = () => { return new Transform(-this._translateX / this._scale, -this._translateY / this._scale, 1 / this._scale) } |