forked from szimek/signature_pad
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpoint.ts
30 lines (25 loc) · 776 Bytes
/
point.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Interface for point data structure used e.g. in SignaturePad#fromData method
export interface BasicPoint {
x: number;
y: number;
time: number;
}
export class Point implements BasicPoint {
public time: number;
constructor(public x: number, public y: number, time?: number) {
this.time = time || Date.now();
}
public distanceTo(start: BasicPoint): number {
return Math.sqrt(
Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2),
);
}
public equals(other: BasicPoint): boolean {
return this.x === other.x && this.y === other.y && this.time === other.time;
}
public velocityFrom(start: BasicPoint): number {
return this.time !== start.time
? this.distanceTo(start) / (this.time - start.time)
: 0;
}
}