poly-extrude 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,80 @@
1
+ /**
2
+ * // code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/core/Interpolations.js
3
+ * Bezier Curves formulas obtained from
4
+ * https://en.wikipedia.org/wiki/B%C3%A9zier_curve
5
+ */
6
+
7
+ function CatmullRom(t, p0, p1, p2, p3) {
8
+
9
+ const v0 = (p2 - p0) * 0.5;
10
+ const v1 = (p3 - p1) * 0.5;
11
+ const t2 = t * t;
12
+ const t3 = t * t2;
13
+ return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;
14
+
15
+ }
16
+
17
+ //
18
+
19
+ function QuadraticBezierP0(t, p) {
20
+
21
+ const k = 1 - t;
22
+ return k * k * p;
23
+
24
+ }
25
+
26
+ function QuadraticBezierP1(t, p) {
27
+
28
+ return 2 * (1 - t) * t * p;
29
+
30
+ }
31
+
32
+ function QuadraticBezierP2(t, p) {
33
+
34
+ return t * t * p;
35
+
36
+ }
37
+
38
+ function QuadraticBezier(t, p0, p1, p2) {
39
+
40
+ return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) +
41
+ QuadraticBezierP2(t, p2);
42
+
43
+ }
44
+
45
+ //
46
+
47
+ function CubicBezierP0(t, p) {
48
+
49
+ const k = 1 - t;
50
+ return k * k * k * p;
51
+
52
+ }
53
+
54
+ function CubicBezierP1(t, p) {
55
+
56
+ const k = 1 - t;
57
+ return 3 * k * k * t * p;
58
+
59
+ }
60
+
61
+ function CubicBezierP2(t, p) {
62
+
63
+ return 3 * (1 - t) * t * t * p;
64
+
65
+ }
66
+
67
+ function CubicBezierP3(t, p) {
68
+
69
+ return t * t * t * p;
70
+
71
+ }
72
+
73
+ function CubicBezier(t, p0, p1, p2, p3) {
74
+
75
+ return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) +
76
+ CubicBezierP3(t, p3);
77
+
78
+ }
79
+
80
+ export { CatmullRom, QuadraticBezier, CubicBezier };