poly-extrude 0.10.0 → 0.12.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.
- package/dist/poly-extrude.js +112 -27
- package/dist/poly-extrude.js.map +1 -1
- package/dist/poly-extrude.min.js +2 -2
- package/dist/poly-extrude.mjs +112 -26
- package/package.json +2 -2
- package/readme.md +3 -1
- package/src/math/Quaternion.js +1 -1
- package/src/polyline.js +75 -18
- package/src/util.js +19 -0
package/dist/poly-extrude.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* poly-extrude v0.
|
2
|
+
* poly-extrude v0.12.0
|
3
3
|
*/
|
4
4
|
(function (global, factory) {
|
5
5
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
@@ -1218,8 +1218,9 @@
|
|
1218
1218
|
_proto._onChange = function _onChange(callback) {
|
1219
1219
|
this._onChangeCallback = callback;
|
1220
1220
|
return this;
|
1221
|
-
}
|
1222
|
-
|
1221
|
+
};
|
1222
|
+
|
1223
|
+
_proto._onChangeCallback = function _onChangeCallback() {} // * [Symbol.iterator]() {
|
1223
1224
|
// yield this._x;
|
1224
1225
|
// yield this._y;
|
1225
1226
|
// yield this._z;
|
@@ -1992,6 +1993,35 @@
|
|
1992
1993
|
|
1993
1994
|
return points;
|
1994
1995
|
}
|
1996
|
+
function calLineDistance(line) {
|
1997
|
+
var distance = 0;
|
1998
|
+
|
1999
|
+
for (var i = 0, len = line.length; i < len; i++) {
|
2000
|
+
var p1 = line[i],
|
2001
|
+
p2 = line[i + 1];
|
2002
|
+
|
2003
|
+
if (i === 0) {
|
2004
|
+
p1.distance = 0;
|
2005
|
+
}
|
2006
|
+
|
2007
|
+
if (p1 && p2) {
|
2008
|
+
var x1 = p1[0],
|
2009
|
+
y1 = p1[1],
|
2010
|
+
z1 = p1[2];
|
2011
|
+
var x2 = p2[0],
|
2012
|
+
y2 = p2[1],
|
2013
|
+
z2 = p2[2];
|
2014
|
+
var dx = x1 - x2,
|
2015
|
+
dy = y1 - y2,
|
2016
|
+
dz = (z1 || 0) - (z2 || 0);
|
2017
|
+
var dis = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
2018
|
+
distance += dis;
|
2019
|
+
p2.distance = distance;
|
2020
|
+
}
|
2021
|
+
}
|
2022
|
+
|
2023
|
+
return distance;
|
2024
|
+
}
|
1995
2025
|
|
1996
2026
|
function extrudePolygons(polygons, options) {
|
1997
2027
|
options = Object.assign({}, {
|
@@ -2215,7 +2245,8 @@
|
|
2215
2245
|
options = Object.assign({}, {
|
2216
2246
|
depth: 2,
|
2217
2247
|
lineWidth: 1,
|
2218
|
-
bottomStickGround: false
|
2248
|
+
bottomStickGround: false,
|
2249
|
+
pathUV: false
|
2219
2250
|
}, options);
|
2220
2251
|
checkOptions(options);
|
2221
2252
|
var results = lines.map(function (line) {
|
@@ -2239,7 +2270,9 @@
|
|
2239
2270
|
lineWidth: 1,
|
2240
2271
|
side: 'left',
|
2241
2272
|
sideDepth: 0,
|
2242
|
-
bottomStickGround: false
|
2273
|
+
bottomStickGround: false,
|
2274
|
+
pathUV: false,
|
2275
|
+
isSlope: true
|
2243
2276
|
}, options);
|
2244
2277
|
checkOptions(options);
|
2245
2278
|
var _options = options,
|
@@ -2296,13 +2329,24 @@
|
|
2296
2329
|
rz = depths[1];
|
2297
2330
|
}
|
2298
2331
|
|
2299
|
-
var points = [],
|
2300
|
-
indices = [],
|
2301
|
-
uv = [];
|
2302
2332
|
var leftPoints = result.leftPoints,
|
2303
2333
|
rightPoints = result.rightPoints;
|
2334
|
+
var line = result.line;
|
2335
|
+
var pathUV = options.pathUV;
|
2336
|
+
|
2337
|
+
if (pathUV) {
|
2338
|
+
calLineDistance(line);
|
2339
|
+
|
2340
|
+
for (var _i = 0, _len = line.length; _i < _len; _i++) {
|
2341
|
+
leftPoints[_i].distance = rightPoints[_i].distance = line[_i].distance;
|
2342
|
+
}
|
2343
|
+
}
|
2344
|
+
|
2304
2345
|
var i = 0,
|
2305
2346
|
len = leftPoints.length;
|
2347
|
+
var points = [],
|
2348
|
+
indices = [],
|
2349
|
+
uv = [];
|
2306
2350
|
|
2307
2351
|
while (i < len) {
|
2308
2352
|
// top left
|
@@ -2341,22 +2385,42 @@
|
|
2341
2385
|
|
2342
2386
|
if (bottomStickGround) {
|
2343
2387
|
points[idx3 + 2] = 0;
|
2388
|
+
} // generate path uv
|
2389
|
+
|
2390
|
+
|
2391
|
+
if (pathUV) {
|
2392
|
+
var p = line[i];
|
2393
|
+
var uvx = p.distance;
|
2394
|
+
var uIndex0 = i * 2;
|
2395
|
+
uv[uIndex0] = uvx;
|
2396
|
+
uv[uIndex0 + 1] = 1;
|
2397
|
+
var uIndex1 = len * 2 + uIndex0;
|
2398
|
+
uv[uIndex1] = uvx;
|
2399
|
+
uv[uIndex1 + 1] = 0;
|
2400
|
+
var uIndex2 = len * 2 * 2 + uIndex0;
|
2401
|
+
uv[uIndex2] = uvx;
|
2402
|
+
uv[uIndex2 + 1] = 1;
|
2403
|
+
var uIndex3 = len * 2 * 2 + len * 2 + uIndex0;
|
2404
|
+
uv[uIndex3] = uvx;
|
2405
|
+
uv[uIndex3 + 1] = 0;
|
2344
2406
|
}
|
2345
2407
|
|
2346
2408
|
i++;
|
2347
2409
|
}
|
2348
2410
|
|
2349
|
-
|
2350
|
-
|
2351
|
-
|
2411
|
+
if (!pathUV) {
|
2412
|
+
i = 0;
|
2413
|
+
len = points.length;
|
2414
|
+
var uIndex = uv.length - 1;
|
2352
2415
|
|
2353
|
-
|
2354
|
-
|
2355
|
-
|
2356
|
-
|
2357
|
-
|
2416
|
+
while (i < len) {
|
2417
|
+
var x = points[i],
|
2418
|
+
y = points[i + 1];
|
2419
|
+
uv[++uIndex] = x;
|
2420
|
+
uv[++uIndex] = y; // uvs.push(x, y);
|
2358
2421
|
|
2359
|
-
|
2422
|
+
i += 3;
|
2423
|
+
}
|
2360
2424
|
}
|
2361
2425
|
|
2362
2426
|
i = 0;
|
@@ -2422,19 +2486,24 @@
|
|
2422
2486
|
var bottomStickGround = options.bottomStickGround;
|
2423
2487
|
var rings = [leftPoints, rightPoints];
|
2424
2488
|
var depthsEnable = result.depths;
|
2489
|
+
var pathUV = options.pathUV;
|
2490
|
+
var lineWidth = options.lineWidth;
|
2425
2491
|
var pIndex = points.length - 1;
|
2426
2492
|
var iIndex = indices.length - 1;
|
2493
|
+
var uIndex = uv.length - 1;
|
2427
2494
|
|
2428
2495
|
function addOneSideIndex(v1, v2) {
|
2429
2496
|
var idx = points.length / 3; // let pIndex = points.length - 1;
|
2430
|
-
|
2497
|
+
|
2498
|
+
var v1Depth = depthsEnable ? v1.depth : z;
|
2499
|
+
var v2Depth = depthsEnable ? v2.depth : z; // top
|
2431
2500
|
|
2432
2501
|
points[++pIndex] = v1[0];
|
2433
2502
|
points[++pIndex] = v1[1];
|
2434
|
-
points[++pIndex] =
|
2503
|
+
points[++pIndex] = v1Depth + v1[2];
|
2435
2504
|
points[++pIndex] = v2[0];
|
2436
2505
|
points[++pIndex] = v2[1];
|
2437
|
-
points[++pIndex] =
|
2506
|
+
points[++pIndex] = v2Depth + v2[2]; // points.push(v1[0], v1[1], (depthsEnable ? v1.depth : z) + v1[2], v2[0], v2[1], (depthsEnable ? v2.depth : z) + v2[2]);
|
2438
2507
|
// bottom
|
2439
2508
|
|
2440
2509
|
points[++pIndex] = v1[0];
|
@@ -2455,10 +2524,21 @@
|
|
2455
2524
|
indices[++iIndex] = d;
|
2456
2525
|
indices[++iIndex] = b; // index.push(a, c, b, c, d, b);
|
2457
2526
|
|
2458
|
-
|
2527
|
+
if (!pathUV) {
|
2528
|
+
generateSideWallUV(uv, points, a, b, c, d);
|
2529
|
+
} else {
|
2530
|
+
uv[++uIndex] = v1.distance;
|
2531
|
+
uv[++uIndex] = v1Depth / lineWidth;
|
2532
|
+
uv[++uIndex] = v2.distance;
|
2533
|
+
uv[++uIndex] = v2Depth / lineWidth;
|
2534
|
+
uv[++uIndex] = v1.distance;
|
2535
|
+
uv[++uIndex] = 0;
|
2536
|
+
uv[++uIndex] = v2.distance;
|
2537
|
+
uv[++uIndex] = 0;
|
2538
|
+
}
|
2459
2539
|
}
|
2460
2540
|
|
2461
|
-
for (var i = 0,
|
2541
|
+
for (var i = 0, _len2 = rings.length; i < _len2; i++) {
|
2462
2542
|
var ring = rings[i];
|
2463
2543
|
|
2464
2544
|
if (i > 0) {
|
@@ -2482,9 +2562,9 @@
|
|
2482
2562
|
var len = leftPoints.length;
|
2483
2563
|
var vs = [rightPoints[0], leftPoints[0], leftPoints[len - 1], rightPoints[len - 1]];
|
2484
2564
|
|
2485
|
-
for (var
|
2486
|
-
var _v = vs[
|
2487
|
-
_v2 = vs[
|
2565
|
+
for (var _i2 = 0; _i2 < vs.length; _i2 += 2) {
|
2566
|
+
var _v = vs[_i2],
|
2567
|
+
_v2 = vs[_i2 + 1];
|
2488
2568
|
addOneSideIndex(_v, _v2);
|
2489
2569
|
}
|
2490
2570
|
}
|
@@ -2500,6 +2580,11 @@
|
|
2500
2580
|
function expandLine(line, options) {
|
2501
2581
|
// let preAngle = 0;
|
2502
2582
|
var radius = options.lineWidth / 2;
|
2583
|
+
|
2584
|
+
if (options.isSlope) {
|
2585
|
+
radius *= 2;
|
2586
|
+
}
|
2587
|
+
|
2503
2588
|
var points = [],
|
2504
2589
|
leftPoints = [],
|
2505
2590
|
rightPoints = [];
|
@@ -2581,7 +2666,8 @@
|
|
2581
2666
|
return {
|
2582
2667
|
offsetPoints: points,
|
2583
2668
|
leftPoints: leftPoints,
|
2584
|
-
rightPoints: rightPoints
|
2669
|
+
rightPoints: rightPoints,
|
2670
|
+
line: line
|
2585
2671
|
};
|
2586
2672
|
} // eslint-disable-next-line no-unused-vars
|
2587
2673
|
|
@@ -4585,4 +4671,3 @@
|
|
4585
4671
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4586
4672
|
|
4587
4673
|
}));
|
4588
|
-
//# sourceMappingURL=poly-extrude.js.map
|