poly-extrude 0.4.0 → 0.5.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 +75 -5
- package/dist/poly-extrude.js.map +1 -1
- package/dist/poly-extrude.min.js +2 -2
- package/dist/poly-extrude.mjs +74 -6
- package/index.js +2 -2
- package/package.json +1 -1
- package/src/polyline.js +55 -4
package/dist/poly-extrude.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* poly-extrude v0.
|
2
|
+
* poly-extrude v0.5.0
|
3
3
|
*/
|
4
4
|
(function (global, factory) {
|
5
5
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
@@ -1091,9 +1091,66 @@
|
|
1091
1091
|
result.lines = lines;
|
1092
1092
|
return result;
|
1093
1093
|
}
|
1094
|
+
function extrudeSlopes(lines, options) {
|
1095
|
+
options = Object.assign({}, {
|
1096
|
+
depth: 2,
|
1097
|
+
lineWidth: 1,
|
1098
|
+
side: 'left',
|
1099
|
+
sideDepth: 0
|
1100
|
+
}, options);
|
1101
|
+
var _options = options,
|
1102
|
+
depth = _options.depth,
|
1103
|
+
side = _options.side,
|
1104
|
+
sideDepth = _options.sideDepth;
|
1105
|
+
var results = lines.map(function (line) {
|
1106
|
+
var tempResult = expandLine(line, options);
|
1107
|
+
tempResult.line = line;
|
1108
|
+
var leftPoints = tempResult.leftPoints,
|
1109
|
+
rightPoints = tempResult.rightPoints;
|
1110
|
+
var result = {
|
1111
|
+
line: line
|
1112
|
+
};
|
1113
|
+
var depths;
|
1114
|
+
|
1115
|
+
for (var i = 0, len = line.length; i < len; i++) {
|
1116
|
+
line[i][2] = line[i][2] || 0;
|
1117
|
+
}
|
1118
|
+
|
1119
|
+
if (side === 'left') {
|
1120
|
+
result.leftPoints = leftPoints;
|
1121
|
+
result.rightPoints = line;
|
1122
|
+
depths = [sideDepth, depth];
|
1123
|
+
} else {
|
1124
|
+
result.leftPoints = line;
|
1125
|
+
result.rightPoints = rightPoints;
|
1126
|
+
depths = [depth, sideDepth];
|
1127
|
+
}
|
1128
|
+
|
1129
|
+
result.depths = depths;
|
1130
|
+
generateTopAndBottom(result, options);
|
1131
|
+
generateSides(result, options);
|
1132
|
+
result.position = new Float32Array(result.points);
|
1133
|
+
result.indices = new Uint32Array(result.index);
|
1134
|
+
result.uv = new Float32Array(result.uvs);
|
1135
|
+
result.normal = generateNormal(result.indices, result.position);
|
1136
|
+
return result;
|
1137
|
+
});
|
1138
|
+
var result = merge(results);
|
1139
|
+
result.lines = lines;
|
1140
|
+
return result;
|
1141
|
+
}
|
1094
1142
|
|
1095
1143
|
function generateTopAndBottom(result, options) {
|
1096
1144
|
var z = options.depth;
|
1145
|
+
var depths = result.depths;
|
1146
|
+
var lz = z,
|
1147
|
+
rz = z;
|
1148
|
+
|
1149
|
+
if (depths) {
|
1150
|
+
lz = depths[0];
|
1151
|
+
rz = depths[1];
|
1152
|
+
}
|
1153
|
+
|
1097
1154
|
var points = [],
|
1098
1155
|
index = [],
|
1099
1156
|
uvs = [];
|
@@ -1111,7 +1168,7 @@
|
|
1111
1168
|
z1 = _leftPoints$i[2];
|
1112
1169
|
points[idx0] = x1;
|
1113
1170
|
points[idx0 + 1] = y1;
|
1114
|
-
points[idx0 + 2] =
|
1171
|
+
points[idx0 + 2] = lz + z1; // top right
|
1115
1172
|
|
1116
1173
|
var _rightPoints$i = rightPoints[i],
|
1117
1174
|
x2 = _rightPoints$i[0],
|
@@ -1120,7 +1177,7 @@
|
|
1120
1177
|
var idx1 = len * 3 + idx0;
|
1121
1178
|
points[idx1] = x2;
|
1122
1179
|
points[idx1 + 1] = y2;
|
1123
|
-
points[idx1 + 2] =
|
1180
|
+
points[idx1 + 2] = rz + z2; // bottom left
|
1124
1181
|
|
1125
1182
|
var idx2 = len * 2 * 3 + idx0;
|
1126
1183
|
points[idx2] = x1;
|
@@ -1171,6 +1228,17 @@
|
|
1171
1228
|
result.index = index;
|
1172
1229
|
result.points = points;
|
1173
1230
|
result.uvs = uvs;
|
1231
|
+
|
1232
|
+
if (depths) {
|
1233
|
+
len = leftPoints.length;
|
1234
|
+
i = 0;
|
1235
|
+
|
1236
|
+
while (i < len) {
|
1237
|
+
leftPoints[i].depth = lz;
|
1238
|
+
rightPoints[i].depth = rz;
|
1239
|
+
i++;
|
1240
|
+
}
|
1241
|
+
}
|
1174
1242
|
}
|
1175
1243
|
|
1176
1244
|
function generateSides(result, options) {
|
@@ -1181,10 +1249,11 @@
|
|
1181
1249
|
uvs = result.uvs;
|
1182
1250
|
var z = options.depth;
|
1183
1251
|
var rings = [leftPoints, rightPoints];
|
1252
|
+
var depthsEnable = result.depths;
|
1184
1253
|
|
1185
1254
|
function addOneSideIndex(v1, v2) {
|
1186
1255
|
var idx = points.length / 3;
|
1187
|
-
points.push(v1[0], v1[1], z + v1[2], v2[0], v2[1], z + v2[2], v1[0], v1[1], v1[2], v2[0], v2[1], v2[2]);
|
1256
|
+
points.push(v1[0], v1[1], (depthsEnable ? v1.depth : z) + v1[2], v2[0], v2[1], (depthsEnable ? v2.depth : z) + v2[2], v1[0], v1[1], v1[2], v2[0], v2[1], v2[2]);
|
1188
1257
|
var a = idx + 2,
|
1189
1258
|
b = idx + 3,
|
1190
1259
|
c = idx,
|
@@ -1348,7 +1417,6 @@
|
|
1348
1417
|
* @returns
|
1349
1418
|
*/
|
1350
1419
|
|
1351
|
-
|
1352
1420
|
function translateLine(p1, p2, distance) {
|
1353
1421
|
var dy = p2[1] - p1[1],
|
1354
1422
|
dx = p2[0] - p1[0];
|
@@ -3507,6 +3575,8 @@
|
|
3507
3575
|
exports.expandPaths = expandPaths;
|
3508
3576
|
exports.extrudePolygons = extrudePolygons;
|
3509
3577
|
exports.extrudePolylines = extrudePolylines;
|
3578
|
+
exports.extrudeSlopes = extrudeSlopes;
|
3579
|
+
exports.leftOnLine = leftOnLine;
|
3510
3580
|
|
3511
3581
|
Object.defineProperty(exports, '__esModule', { value: true });
|
3512
3582
|
|