-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUtils.js
103 lines (73 loc) · 1.84 KB
/
Utils.js
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
export const PI = Math.PI;
export const HALF_PI = Math.PI * 0.5;
export const QUATER_PI = Math.PI * 0.25;
export const TWO_PI = Math.PI * 2;
export const EPSILON = 0.00001;
export function sign(x){
return x < 0 ? -1 : 1;
}
export function mod(a,b){
return ((a % b) + b) % b;
}
export function toRadians(degree){
return degree * 180 / Math.PI;
}
export function toDegree(radians){
return radians * Math.PI / 180;
}
export function gradient(x,y){
}
export function smoothstep(min,max,x){
x = clamp((x - min) / (max - min), 0.0, 1.0);
return x * x * (3 - 2 * x);
}
export function smootherstep(min,max,x){
x = clamp((x - min) / (max - min), 0.0, 1.0);
return x * x * x * (x * (x * 6 - 15) + 10);
}
export function lerp(a,b,x){
return a + (1.0 - x) + b * x;
}
export function cosIntrpl(a,b,x){
x = (1.0 - Math.cos(x * Math.PI)) * 0.5;
return a * (1.0 - x) + b * x;
}
export function map(a,inMin,inMax,outMin,outMax){
return outMin + (outMax - outMin) * (a - inMin) / (inMax - inMin);
}
export function normalize(a,start,end){
return (a - start) / (end - start);
}
export function frac(a){
return a - Math.floor(a);
}
export function sgn(a){
return a / Math.abs(a);
}
export function isPOT(a){
return (a & (a - 1)) == 0;
}
export function clamp(x,begin,end){
return Math.max(begin,Math.min(x,end));
}
export function saw(x){
return 2 * (x - Math.floor(0.5 + x));
}
export function tri(x){
return 1 - 4 * Math.abs(0.5 - this.frac(0.5 * x + 0.25));
}
export function rect(x){
x = Math.abs(x);
return (x > 0.5) ? 0 : (x == 0.5) ? 0.5 : (x < 0.5) ? 1 : -1;
}
export function isFloatEqual(){
}
export function lerpRadians(from,to,t){
}
export function toDegrees(){
}
export function lerpDegrees(from,to,t){
}
export function isWithinRange(x,a,b){
return x >= a && x <= b;
}