poly-extrude 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/cylinder.d.ts +11 -0
  2. package/{src → dist}/cylinder.js +108 -111
  3. package/dist/cylinder.js.map +1 -0
  4. package/dist/index.d.ts +8 -0
  5. package/dist/index.js +9 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/math/Curve.d.ts +41 -0
  8. package/dist/math/Curve.js +142 -0
  9. package/dist/math/Curve.js.map +1 -0
  10. package/dist/math/Interpolations.d.ts +8 -0
  11. package/dist/math/Interpolations.js +48 -0
  12. package/dist/math/Interpolations.js.map +1 -0
  13. package/dist/math/Matrix4.d.ts +8 -0
  14. package/dist/math/Matrix4.js +582 -0
  15. package/dist/math/Matrix4.js.map +1 -0
  16. package/dist/math/QuadraticBezierCurve3.d.ts +10 -0
  17. package/dist/math/QuadraticBezierCurve3.js +22 -0
  18. package/dist/math/QuadraticBezierCurve3.js.map +1 -0
  19. package/dist/math/Quaternion.d.ts +46 -0
  20. package/dist/math/Quaternion.js +415 -0
  21. package/dist/math/Quaternion.js.map +1 -0
  22. package/dist/math/Vector3.d.ts +42 -0
  23. package/dist/math/Vector3.js +403 -0
  24. package/dist/math/Vector3.js.map +1 -0
  25. package/dist/path/PathPoint.d.ts +15 -0
  26. package/dist/path/PathPoint.js +35 -0
  27. package/dist/path/PathPoint.js.map +1 -0
  28. package/dist/path/PathPointList.d.ts +27 -0
  29. package/dist/path/PathPointList.js +212 -0
  30. package/dist/path/PathPointList.js.map +1 -0
  31. package/dist/path.d.ts +11 -0
  32. package/{src → dist}/path.js +334 -360
  33. package/dist/path.js.map +1 -0
  34. package/dist/plane.d.ts +2 -0
  35. package/{src → dist}/plane.js +57 -58
  36. package/dist/plane.js.map +1 -0
  37. package/dist/poly-extrude.js +1288 -1581
  38. package/dist/poly-extrude.js.map +1 -1
  39. package/dist/poly-extrude.min.js +2 -2
  40. package/dist/poly-extrude.mjs +1287 -1582
  41. package/dist/poly-extrude.mjs.map +1 -0
  42. package/dist/polygon.d.ts +9 -0
  43. package/{src → dist}/polygon.js +163 -179
  44. package/dist/polygon.js.map +1 -0
  45. package/dist/polyline.d.ts +24 -0
  46. package/{src → dist}/polyline.js +420 -456
  47. package/dist/polyline.js.map +1 -0
  48. package/dist/tube.d.ts +12 -0
  49. package/{src → dist}/tube.js +124 -142
  50. package/dist/tube.js.map +1 -0
  51. package/dist/type.d.ts +9 -0
  52. package/dist/type.js +2 -0
  53. package/dist/type.js.map +1 -0
  54. package/dist/util.d.ts +21 -0
  55. package/{src → dist}/util.js +217 -242
  56. package/dist/util.js.map +1 -0
  57. package/package.json +10 -5
  58. package/readme.md +12 -2
  59. package/src/cylinder.ts +124 -0
  60. package/src/index.ts +13 -0
  61. package/src/path.ts +385 -0
  62. package/src/plane.ts +60 -0
  63. package/src/polygon.ts +189 -0
  64. package/src/polyline.ts +473 -0
  65. package/src/tube.ts +155 -0
  66. package/src/type.ts +9 -0
  67. package/src/util.ts +243 -0
  68. package/index.js +0 -7
@@ -1,242 +1,217 @@
1
- import { Vector3 } from './math/Vector3';
2
-
3
- /**
4
- * https://github.com/Turfjs/turf/blob/master/packages/turf-boolean-clockwise/index.ts
5
- * @param {*} ring
6
- * @returns
7
- */
8
- export function isClockwise(ring) {
9
- let sum = 0;
10
- let i = 1;
11
- let prev;
12
- let cur;
13
- const len = ring.length;
14
-
15
- while (i < len) {
16
- prev = cur || ring[0];
17
- cur = ring[i];
18
- sum += (cur[0] - prev[0]) * (cur[1] + prev[1]);
19
- i++;
20
- }
21
- return sum > 0;
22
- }
23
-
24
- function v3Sub(out, v1, v2) {
25
- out[0] = v1[0] - v2[0];
26
- out[1] = v1[1] - v2[1];
27
- out[2] = v1[2] - v2[2];
28
- return out;
29
- }
30
-
31
- function v3Normalize(out, v) {
32
- const x = v[0];
33
- const y = v[1];
34
- const z = v[2];
35
- const d = Math.sqrt(x * x + y * y + z * z) || 1;
36
- out[0] = x / d;
37
- out[1] = y / d;
38
- out[2] = z / d;
39
- return out;
40
- }
41
-
42
- function v3Cross(out, v1, v2) {
43
- const ax = v1[0], ay = v1[1], az = v1[2],
44
- bx = v2[0], by = v2[1], bz = v2[2];
45
-
46
- out[0] = ay * bz - az * by;
47
- out[1] = az * bx - ax * bz;
48
- out[2] = ax * by - ay * bx;
49
- return out;
50
- }
51
-
52
- export function generateNormal(indices, position) {
53
-
54
- function v3Set(p, a, b, c) {
55
- p[0] = a; p[1] = b; p[2] = c;
56
- }
57
-
58
- const p1 = [];
59
- const p2 = [];
60
- const p3 = [];
61
-
62
- const v21 = [];
63
- const v32 = [];
64
-
65
- const n = [];
66
-
67
- const len = indices.length;
68
- const normals = new Float32Array(position.length);
69
- let f = 0;
70
- while (f < len) {
71
-
72
- // const i1 = indices[f++] * 3;
73
- // const i2 = indices[f++] * 3;
74
- // const i3 = indices[f++] * 3;
75
- // const i1 = indices[f];
76
- // const i2 = indices[f + 1];
77
- // const i3 = indices[f + 2];
78
- const a = indices[f], b = indices[f + 1], c = indices[f + 2];
79
- const i1 = a * 3, i2 = b * 3, i3 = c * 3;
80
-
81
- v3Set(p1, position[i1], position[i1 + 1], position[i1 + 2]);
82
- v3Set(p2, position[i2], position[i2 + 1], position[i2 + 2]);
83
- v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]);
84
-
85
- v3Sub(v32, p3, p2);
86
- v3Sub(v21, p1, p2);
87
- v3Cross(n, v32, v21);
88
- // Already be weighted by the triangle area
89
- for (let i = 0; i < 3; i++) {
90
- normals[i1 + i] += n[i];
91
- normals[i2 + i] += n[i];
92
- normals[i3 + i] += n[i];
93
- }
94
- f += 3;
95
- }
96
-
97
- let i = 0;
98
- const l = normals.length;
99
- while (i < l) {
100
- v3Set(n, normals[i], normals[i + 1], normals[i + 2]);
101
- v3Normalize(n, n);
102
- normals[i] = n[0] || 0;
103
- normals[i + 1] = n[1] || 0;
104
- normals[i + 2] = n[2] || 0;
105
- i += 3;
106
- }
107
-
108
- return normals;
109
- }
110
-
111
- export function merge(results) {
112
- if (results.length === 1) {
113
- const result = {
114
- position: results[0].position,
115
- normal: results[0].normal,
116
- uv: results[0].uv,
117
- indices: results[0].indices,
118
- results
119
- };
120
- return result;
121
- }
122
- let plen = 0, ilen = 0;
123
- for (let i = 0, len = results.length; i < len; i++) {
124
- const { position, indices } = results[i];
125
- plen += position.length;
126
- ilen += indices.length;
127
- }
128
- const result = {
129
- position: new Float32Array(plen),
130
- normal: new Float32Array(plen),
131
- uv: new Float32Array(plen / 3 * 2),
132
- indices: new Uint32Array(ilen),
133
- results
134
- };
135
- let pOffset = 0, pCount = 0, iIdx = 0, uvOffset = 0;
136
- for (let i = 0, len = results.length; i < len; i++) {
137
- const { position, indices, normal, uv } = results[i];
138
- result.position.set(position, pOffset);
139
- result.normal.set(normal, pOffset);
140
- result.uv.set(uv, uvOffset);
141
- let j = 0;
142
- const len1 = indices.length;
143
- while (j < len1) {
144
- const pIndex = indices[j] + pCount;
145
- result.indices[iIdx] = pIndex;
146
- iIdx++;
147
- j++;
148
- }
149
- uvOffset += uv.length;
150
- pOffset += position.length;
151
- pCount += position.length / 3;
152
- }
153
- return result;
154
- }
155
-
156
- export function radToDeg(rad) {
157
- return rad * 180 / Math.PI;
158
- }
159
-
160
- export function degToRad(angle) {
161
- return angle / 180 * Math.PI;
162
- }
163
-
164
- // https://github.com/mrdoob/three.js/blob/16f13e3b07e31d0e9a00df7c3366bbe0e464588c/src/geometries/ExtrudeGeometry.js?_pjax=%23js-repo-pjax-container#L736
165
- export function generateSideWallUV(uvs, vertices, indexA, indexB, indexC, indexD) {
166
-
167
- const idx1 = indexA * 3, idx2 = indexB * 3, idx3 = indexC * 3, idx4 = indexD * 3;
168
- const a_x = vertices[idx1];
169
- const a_y = vertices[idx1 + 1];
170
- const a_z = vertices[idx1 + 2];
171
- const b_x = vertices[idx2];
172
- const b_y = vertices[idx2 + 1];
173
- const b_z = vertices[idx2 + 2];
174
- const c_x = vertices[idx3];
175
- const c_y = vertices[idx3 + 1];
176
- const c_z = vertices[idx3 + 2];
177
- const d_x = vertices[idx4];
178
- const d_y = vertices[idx4 + 1];
179
- const d_z = vertices[idx4 + 2];
180
-
181
- let uIndex = uvs.length - 1;
182
- if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {
183
- uvs[++uIndex] = a_x;
184
- uvs[++uIndex] = 1 - a_z;
185
- uvs[++uIndex] = b_x;
186
- uvs[++uIndex] = 1 - b_z;
187
- uvs[++uIndex] = c_x;
188
- uvs[++uIndex] = 1 - c_z;
189
- uvs[++uIndex] = d_x;
190
- uvs[++uIndex] = 1 - d_z;
191
-
192
- // uvs.push(a_x, 1 - a_z);
193
- // uvs.push(b_x, 1 - b_z);
194
- // uvs.push(c_x, 1 - c_z);
195
- // uvs.push(d_x, 1 - d_z);
196
- } else {
197
- uvs[++uIndex] = a_y;
198
- uvs[++uIndex] = 1 - a_z;
199
- uvs[++uIndex] = b_y;
200
- uvs[++uIndex] = 1 - b_z;
201
- uvs[++uIndex] = c_y;
202
- uvs[++uIndex] = 1 - c_z;
203
- uvs[++uIndex] = d_y;
204
- uvs[++uIndex] = 1 - d_z;
205
-
206
- // uvs.push(a_y, 1 - a_z);
207
- // uvs.push(b_y, 1 - b_z);
208
- // uvs.push(c_y, 1 - c_z);
209
- // uvs.push(d_y, 1 - d_z);
210
- }
211
-
212
- }
213
-
214
- export function line2Vectors(line) {
215
- const points = [];
216
- for (let i = 0, len = line.length; i < len; i++) {
217
- const p = line[i];
218
- const [x, y, z] = p;
219
- const v = new Vector3(x, y, z || 0);
220
- points[i] = v;
221
- }
222
- return points;
223
- }
224
-
225
- export function calLineDistance(line) {
226
- let distance = 0;
227
- for (let i = 0, len = line.length; i < len; i++) {
228
- const p1 = line[i], p2 = line[i + 1];
229
- if (i === 0) {
230
- p1.distance = 0;
231
- }
232
- if (p1 && p2) {
233
- const [x1, y1, z1] = p1;
234
- const [x2, y2, z2] = p2;
235
- const dx = x1 - x2, dy = y1 - y2, dz = (z1 || 0) - (z2 || 0);
236
- const dis = Math.sqrt(dx * dx + dy * dy + dz * dz);
237
- distance += dis;
238
- p2.distance = distance;
239
- }
240
- }
241
- return distance;
242
- }
1
+ import { Vector3 } from './math/Vector3';
2
+ /**
3
+ * https://github.com/Turfjs/turf/blob/master/packages/turf-boolean-clockwise/index.ts
4
+ * @param {*} ring
5
+ * @returns
6
+ */
7
+ export function isClockwise(ring) {
8
+ let sum = 0;
9
+ let i = 1;
10
+ let prev;
11
+ let cur;
12
+ const len = ring.length;
13
+ while (i < len) {
14
+ prev = cur || ring[0];
15
+ cur = ring[i];
16
+ sum += (cur[0] - prev[0]) * (cur[1] + prev[1]);
17
+ i++;
18
+ }
19
+ return sum > 0;
20
+ }
21
+ function v3Sub(out, v1, v2) {
22
+ out[0] = v1[0] - v2[0];
23
+ out[1] = v1[1] - v2[1];
24
+ out[2] = v1[2] - v2[2];
25
+ return out;
26
+ }
27
+ function v3Normalize(out, v) {
28
+ const x = v[0];
29
+ const y = v[1];
30
+ const z = v[2];
31
+ const d = Math.sqrt(x * x + y * y + z * z) || 1;
32
+ out[0] = x / d;
33
+ out[1] = y / d;
34
+ out[2] = z / d;
35
+ return out;
36
+ }
37
+ function v3Cross(out, v1, v2) {
38
+ const ax = v1[0], ay = v1[1], az = v1[2], bx = v2[0], by = v2[1], bz = v2[2];
39
+ out[0] = ay * bz - az * by;
40
+ out[1] = az * bx - ax * bz;
41
+ out[2] = ax * by - ay * bx;
42
+ return out;
43
+ }
44
+ export function generateNormal(indices, position) {
45
+ function v3Set(p, a, b, c) {
46
+ p[0] = a;
47
+ p[1] = b;
48
+ p[2] = c;
49
+ }
50
+ const p1 = [];
51
+ const p2 = [];
52
+ const p3 = [];
53
+ const v21 = [];
54
+ const v32 = [];
55
+ const n = [];
56
+ const len = indices.length;
57
+ const normals = new Float32Array(position.length);
58
+ let f = 0;
59
+ while (f < len) {
60
+ // const i1 = indices[f++] * 3;
61
+ // const i2 = indices[f++] * 3;
62
+ // const i3 = indices[f++] * 3;
63
+ // const i1 = indices[f];
64
+ // const i2 = indices[f + 1];
65
+ // const i3 = indices[f + 2];
66
+ const a = indices[f], b = indices[f + 1], c = indices[f + 2];
67
+ const i1 = a * 3, i2 = b * 3, i3 = c * 3;
68
+ v3Set(p1, position[i1], position[i1 + 1], position[i1 + 2]);
69
+ v3Set(p2, position[i2], position[i2 + 1], position[i2 + 2]);
70
+ v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]);
71
+ v3Sub(v32, p3, p2);
72
+ v3Sub(v21, p1, p2);
73
+ v3Cross(n, v32, v21);
74
+ // Already be weighted by the triangle area
75
+ for (let i = 0; i < 3; i++) {
76
+ normals[i1 + i] += n[i];
77
+ normals[i2 + i] += n[i];
78
+ normals[i3 + i] += n[i];
79
+ }
80
+ f += 3;
81
+ }
82
+ let i = 0;
83
+ const l = normals.length;
84
+ while (i < l) {
85
+ v3Set(n, normals[i], normals[i + 1], normals[i + 2]);
86
+ v3Normalize(n, n);
87
+ normals[i] = n[0] || 0;
88
+ normals[i + 1] = n[1] || 0;
89
+ normals[i + 2] = n[2] || 0;
90
+ i += 3;
91
+ }
92
+ return normals;
93
+ }
94
+ export function merge(results) {
95
+ if (results.length === 1) {
96
+ const result = {
97
+ position: results[0].position,
98
+ normal: results[0].normal,
99
+ uv: results[0].uv,
100
+ indices: results[0].indices,
101
+ results
102
+ };
103
+ return result;
104
+ }
105
+ let plen = 0, ilen = 0;
106
+ for (let i = 0, len = results.length; i < len; i++) {
107
+ const { position, indices } = results[i];
108
+ plen += position.length;
109
+ ilen += indices.length;
110
+ }
111
+ const result = {
112
+ position: new Float32Array(plen),
113
+ normal: new Float32Array(plen),
114
+ uv: new Float32Array(plen / 3 * 2),
115
+ indices: new Uint32Array(ilen),
116
+ results
117
+ };
118
+ let pOffset = 0, pCount = 0, iIdx = 0, uvOffset = 0;
119
+ for (let i = 0, len = results.length; i < len; i++) {
120
+ const { position, indices, normal, uv } = results[i];
121
+ result.position.set(position, pOffset);
122
+ result.normal.set(normal, pOffset);
123
+ result.uv.set(uv, uvOffset);
124
+ let j = 0;
125
+ const len1 = indices.length;
126
+ while (j < len1) {
127
+ const pIndex = indices[j] + pCount;
128
+ result.indices[iIdx] = pIndex;
129
+ iIdx++;
130
+ j++;
131
+ }
132
+ uvOffset += uv.length;
133
+ pOffset += position.length;
134
+ pCount += position.length / 3;
135
+ }
136
+ return result;
137
+ }
138
+ export function radToDeg(rad) {
139
+ return rad * 180 / Math.PI;
140
+ }
141
+ export function degToRad(angle) {
142
+ return angle / 180 * Math.PI;
143
+ }
144
+ // https://github.com/mrdoob/three.js/blob/16f13e3b07e31d0e9a00df7c3366bbe0e464588c/src/geometries/ExtrudeGeometry.js?_pjax=%23js-repo-pjax-container#L736
145
+ export function generateSideWallUV(uvs, vertices, indexA, indexB, indexC, indexD) {
146
+ const idx1 = indexA * 3, idx2 = indexB * 3, idx3 = indexC * 3, idx4 = indexD * 3;
147
+ const a_x = vertices[idx1];
148
+ const a_y = vertices[idx1 + 1];
149
+ const a_z = vertices[idx1 + 2];
150
+ const b_x = vertices[idx2];
151
+ const b_y = vertices[idx2 + 1];
152
+ const b_z = vertices[idx2 + 2];
153
+ const c_x = vertices[idx3];
154
+ const c_y = vertices[idx3 + 1];
155
+ const c_z = vertices[idx3 + 2];
156
+ const d_x = vertices[idx4];
157
+ const d_y = vertices[idx4 + 1];
158
+ const d_z = vertices[idx4 + 2];
159
+ let uIndex = uvs.length - 1;
160
+ if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {
161
+ uvs[++uIndex] = a_x;
162
+ uvs[++uIndex] = 1 - a_z;
163
+ uvs[++uIndex] = b_x;
164
+ uvs[++uIndex] = 1 - b_z;
165
+ uvs[++uIndex] = c_x;
166
+ uvs[++uIndex] = 1 - c_z;
167
+ uvs[++uIndex] = d_x;
168
+ uvs[++uIndex] = 1 - d_z;
169
+ // uvs.push(a_x, 1 - a_z);
170
+ // uvs.push(b_x, 1 - b_z);
171
+ // uvs.push(c_x, 1 - c_z);
172
+ // uvs.push(d_x, 1 - d_z);
173
+ }
174
+ else {
175
+ uvs[++uIndex] = a_y;
176
+ uvs[++uIndex] = 1 - a_z;
177
+ uvs[++uIndex] = b_y;
178
+ uvs[++uIndex] = 1 - b_z;
179
+ uvs[++uIndex] = c_y;
180
+ uvs[++uIndex] = 1 - c_z;
181
+ uvs[++uIndex] = d_y;
182
+ uvs[++uIndex] = 1 - d_z;
183
+ // uvs.push(a_y, 1 - a_z);
184
+ // uvs.push(b_y, 1 - b_z);
185
+ // uvs.push(c_y, 1 - c_z);
186
+ // uvs.push(d_y, 1 - d_z);
187
+ }
188
+ }
189
+ export function line2Vectors(line) {
190
+ const points = [];
191
+ for (let i = 0, len = line.length; i < len; i++) {
192
+ const p = line[i];
193
+ const [x, y, z] = p;
194
+ const v = new Vector3(x, y, z || 0);
195
+ points[i] = v;
196
+ }
197
+ return points;
198
+ }
199
+ export function calLineDistance(line) {
200
+ let distance = 0;
201
+ for (let i = 0, len = line.length; i < len; i++) {
202
+ const p1 = line[i], p2 = line[i + 1];
203
+ if (i === 0) {
204
+ p1.distance = 0;
205
+ }
206
+ if (p1 && p2) {
207
+ const [x1, y1, z1] = p1;
208
+ const [x2, y2, z2] = p2;
209
+ const dx = x1 - x2, dy = y1 - y2, dz = (z1 || 0) - (z2 || 0);
210
+ const dis = Math.sqrt(dx * dx + dy * dy + dz * dz);
211
+ distance += dis;
212
+ p2.distance = distance;
213
+ }
214
+ }
215
+ return distance;
216
+ }
217
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "poly-extrude",
3
- "version": "0.13.0",
4
- "description": "",
3
+ "version": "0.15.0",
4
+ "description": "extrude polyline/polygon etc",
5
5
  "main": "dist/poly-extrude.js",
6
6
  "module": "dist/poly-extrude.mjs",
7
+ "types": "dist/index.d.ts",
7
8
  "scripts": {
9
+ "tsc": "npx tsc",
8
10
  "test": "echo \"Error: no test specified\" && exit 1",
9
11
  "lint": "eslint src/**/*.js",
10
- "build": "npm run lint && cross-env NODE_ENV=prd rollup -c",
12
+ "build": "npm run lint && npm run tsc && cross-env NODE_ENV=prd rollup -c",
11
13
  "dev": "npm run lint && cross-env NODE_ENV=dev rollup -c -w"
12
14
  },
13
15
  "repository": {
@@ -27,6 +29,7 @@
27
29
  "@rollup/plugin-commonjs": "^21.0.1",
28
30
  "@rollup/plugin-json": "^4.1.0",
29
31
  "@rollup/plugin-node-resolve": "^13.1.3",
32
+ "@rollup/plugin-typescript": "^8.3.0",
30
33
  "cross-env": "^5.1.4",
31
34
  "eslint": "^6.2.2",
32
35
  "eslint-config-standard": "^14.1.0",
@@ -35,7 +38,9 @@
35
38
  "eslint-plugin-promise": "^4.2.1",
36
39
  "eslint-plugin-standard": "^4.0.1",
37
40
  "rollup": "^2.64.0",
38
- "rollup-plugin-terser": "^7.0.2"
41
+ "rollup-plugin-terser": "^7.0.2",
42
+ "typescript": "^5.7.2",
43
+ "tslib": "^2.8.1"
39
44
  },
40
45
  "dependencies": {
41
46
  "earcut": "^2.2.4"
@@ -45,4 +50,4 @@
45
50
  "src/",
46
51
  "index.js"
47
52
  ]
48
- }
53
+ }
package/readme.md CHANGED
@@ -19,6 +19,7 @@ Extrude polygons/polylines. Born in [maptalks.three](https://github.com/maptalks
19
19
  [![](./gallery/slope.png)](https://deyihu.github.io/poly-extrude/test/slope.html)<br>
20
20
 
21
21
  [![](./gallery/tube.png)](https://deyihu.github.io/poly-extrude/test/tube.html)<br>
22
+ [![](./gallery/terrain.png)](https://deyihu.github.io/poly-extrude/test/terrain.html)<br>
22
23
 
23
24
  ## Install
24
25
 
@@ -43,7 +44,8 @@ npm i poly-extrude
43
44
  cylinder,
44
45
  expandPaths,
45
46
  extrudeSlopes,
46
- expandTubes
47
+ expandTubes,
48
+ plane
47
49
  } from 'poly-extrude';
48
50
 
49
51
  //if you use cdn,the namespace is polyextrude
@@ -133,6 +135,8 @@ npm i poly-extrude
133
135
  * `options.bottomStickGround` Is the bottom attached to the ground
134
136
  * `options.pathUV` generate Path UV
135
137
 
138
+ [extrudePolylines pathUV demo](https://deyihu.github.io/poly-extrude/test/line-pathuv.html)
139
+
136
140
  ```js
137
141
  const result = extrudePolylines(polylines, {
138
142
  depth: 2,
@@ -212,6 +216,9 @@ const {
212
216
  * `options.bottomStickGround` Is the bottom attached to the ground
213
217
  * `options.pathUV` generate Path UV
214
218
 
219
+
220
+ [extrudeSlopes pathUV demo](https://deyihu.github.io/poly-extrude/test/slope-pathuv.html)
221
+
215
222
  ```js
216
223
  const result = extrudeSlopes(polylines, {
217
224
 
@@ -267,8 +274,11 @@ const {
267
274
  * `devideW`
268
275
  * `devideH`
269
276
 
277
+ [plane demo](https://deyihu.github.io/poly-extrude/test/plane.html)
278
+ [custom terrain demo](https://deyihu.github.io/poly-extrude/test/terrain.html)
279
+
270
280
  ```js
271
- const result = plane(100,100,10,10);
281
+ const result = plane(100, 100, 10, 10);
272
282
  const {
273
283
 
274
284
  positon,