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.
- package/dist/poly-extrude.js +1983 -10
- package/dist/poly-extrude.js.map +1 -1
- package/dist/poly-extrude.min.js +2 -2
- package/dist/poly-extrude.mjs +1983 -11
- package/index.js +2 -1
- package/package.json +1 -1
- package/readme.md +191 -36
- package/src/math/Curve.js +415 -0
- package/src/math/Interpolations.js +80 -0
- package/src/math/Matrix4.js +914 -0
- package/src/math/QuadraticBezierCurve3.js +76 -0
- package/src/math/Vector3.js +711 -0
- package/src/path/PathPoint.js +41 -0
- package/src/path/PathPointList.js +251 -0
- package/src/path.js +259 -0
- package/src/polyline.js +10 -9
@@ -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 };
|