poly-extrude 0.0.1 → 0.0.4
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 +97 -81
- package/dist/poly-extrude.js.map +1 -1
- package/dist/poly-extrude.min.js +2 -2
- package/dist/poly-extrude.mjs +97 -81
- package/package.json +7 -2
- package/src/polygon.js +12 -12
- package/src/polyline.js +21 -8
- package/src/util.js +27 -40
- package/.eslintignore +0 -12
- package/.eslintrc.js +0 -34
- package/.vscode/settings.json +0 -3
- package/babel.config.js +0 -12
- package/pnpm-lock.yaml +0 -3054
- package/rollup.config.js +0 -108
- package/test/buildings.html +0 -77
- package/test/data/a.png +0 -0
- package/test/data/building-texture-dark.jpg +0 -0
- package/test/data/building.geojson +0 -1118
- package/test/data/buildings-ny.geojson +0 -2845
- package/test/data/buildings.geojson +0 -1
- package/test/data/free-line.geojson +0 -1
- package/test/data/line.geojson +0 -1
- package/test/data/polygon.geojson +0 -1
- package/test/data/simple-hole.geojson +0 -1
- package/test/data/simple-line.geojson +0 -45
- package/test/data/simple.geojson +0 -1
- package/test/data/street.geojson +0 -1
- package/test/data//345/244/252/346/271/226.geojson +0 -8
- package/test/data//350/210/237/345/261/261/345/270/202.geojson +0 -1
- package/test/data//350/213/217/345/267/236.geojson +0 -1
- package/test/data//351/204/261/351/230/263/346/271/226.geojson +0 -1
- package/test/line-draw.html +0 -100
- package/test/line-uv.html +0 -69
- package/test/line.html +0 -56
- package/test/multi-polygon.html +0 -53
- package/test/ny-building.html +0 -67
- package/test/simple.html +0 -61
- package/test/street.html +0 -52
- package/test/util.js +0 -131
- package/test/uv.html +0 -77
package/dist/poly-extrude.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* poly-extrude v0.0.
|
2
|
+
* poly-extrude v0.0.4
|
3
3
|
*/
|
4
4
|
(function (global, factory) {
|
5
5
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
@@ -731,8 +731,9 @@
|
|
731
731
|
var n = [];
|
732
732
|
var len = indices.length;
|
733
733
|
var normals = new Float32Array(position.length);
|
734
|
+
var f = 0;
|
734
735
|
|
735
|
-
|
736
|
+
while (f < len) {
|
736
737
|
// const i1 = indices[f++] * 3;
|
737
738
|
// const i2 = indices[f++] * 3;
|
738
739
|
// const i3 = indices[f++] * 3;
|
@@ -747,30 +748,30 @@
|
|
747
748
|
i3 = c * 3;
|
748
749
|
v3Set(p1, position[i1], position[i1 + 1], position[i1 + 2]);
|
749
750
|
v3Set(p2, position[i2], position[i2 + 1], position[i2 + 2]);
|
750
|
-
v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]);
|
751
|
-
// pB.fromBufferAttribute(positionAttribute, vB);
|
752
|
-
// pC.fromBufferAttribute(positionAttribute, vC);
|
753
|
-
// cb.subVectors(pC, pB);
|
754
|
-
// ab.subVectors(pA, pB);
|
755
|
-
// cb.cross(ab);
|
756
|
-
|
751
|
+
v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]);
|
757
752
|
v3Sub(v32, p3, p2);
|
758
753
|
v3Sub(v21, p1, p2);
|
759
754
|
v3Cross(n, v32, v21); // Already be weighted by the triangle area
|
760
755
|
|
761
|
-
for (var
|
762
|
-
normals[i1 +
|
763
|
-
normals[i2 +
|
764
|
-
normals[i3 +
|
756
|
+
for (var _i = 0; _i < 3; _i++) {
|
757
|
+
normals[i1 + _i] += n[_i];
|
758
|
+
normals[i2 + _i] += n[_i];
|
759
|
+
normals[i3 + _i] += n[_i];
|
765
760
|
}
|
761
|
+
|
762
|
+
f += 3;
|
766
763
|
}
|
767
764
|
|
768
|
-
|
769
|
-
|
765
|
+
var i = 0;
|
766
|
+
var l = normals.length;
|
767
|
+
|
768
|
+
while (i < l) {
|
769
|
+
v3Set(n, normals[i], normals[i + 1], normals[i + 2]);
|
770
770
|
v3Normalize(n, n);
|
771
|
-
normals[
|
772
|
-
normals[
|
773
|
-
normals[
|
771
|
+
normals[i] = n[0] || 0;
|
772
|
+
normals[i + 1] = n[1] || 0;
|
773
|
+
normals[i + 2] = n[2] || 0;
|
774
|
+
i += 3;
|
774
775
|
}
|
775
776
|
|
776
777
|
return normals;
|
@@ -819,11 +820,14 @@
|
|
819
820
|
result.position.set(_position, pOffset);
|
820
821
|
result.normal.set(normal, pOffset);
|
821
822
|
result.uv.set(uv, uvOffset);
|
823
|
+
var j = 0;
|
824
|
+
var len1 = _indices.length;
|
822
825
|
|
823
|
-
|
826
|
+
while (j < len1) {
|
824
827
|
var pIndex = _indices[j] + pCount;
|
825
828
|
result.indices[iIdx] = pIndex;
|
826
829
|
iIdx++;
|
830
|
+
j++;
|
827
831
|
}
|
828
832
|
|
829
833
|
uvOffset += uv.length;
|
@@ -841,39 +845,33 @@
|
|
841
845
|
} // https://github.com/mrdoob/three.js/blob/16f13e3b07e31d0e9a00df7c3366bbe0e464588c/src/geometries/ExtrudeGeometry.js?_pjax=%23js-repo-pjax-container#L736
|
842
846
|
|
843
847
|
function generateSideWallUV(uvs, vertices, indexA, indexB, indexC, indexD) {
|
844
|
-
var
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
var
|
849
|
-
var
|
850
|
-
var
|
851
|
-
var
|
852
|
-
var
|
853
|
-
var
|
854
|
-
var
|
855
|
-
var
|
848
|
+
var idx1 = indexA * 3,
|
849
|
+
idx2 = indexB * 3,
|
850
|
+
idx3 = indexC * 3,
|
851
|
+
idx4 = indexD * 3;
|
852
|
+
var a_x = vertices[idx1];
|
853
|
+
var a_y = vertices[idx1 + 1];
|
854
|
+
var a_z = vertices[idx1 + 2];
|
855
|
+
var b_x = vertices[idx2];
|
856
|
+
var b_y = vertices[idx2 + 1];
|
857
|
+
var b_z = vertices[idx2 + 2];
|
858
|
+
var c_x = vertices[idx3];
|
859
|
+
var c_y = vertices[idx3 + 1];
|
860
|
+
var c_z = vertices[idx3 + 2];
|
861
|
+
var d_x = vertices[idx4];
|
862
|
+
var d_y = vertices[idx4 + 1];
|
863
|
+
var d_z = vertices[idx4 + 2];
|
856
864
|
|
857
865
|
if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {
|
858
866
|
uvs.push(a_x, 1 - a_z);
|
859
867
|
uvs.push(b_x, 1 - b_z);
|
860
868
|
uvs.push(c_x, 1 - c_z);
|
861
|
-
uvs.push(d_x, 1 - d_z);
|
862
|
-
// new Vector2(a_x, 1 - a_z),
|
863
|
-
// new Vector2(b_x, 1 - b_z),
|
864
|
-
// new Vector2(c_x, 1 - c_z),
|
865
|
-
// new Vector2(d_x, 1 - d_z)
|
866
|
-
// ];
|
869
|
+
uvs.push(d_x, 1 - d_z);
|
867
870
|
} else {
|
868
871
|
uvs.push(a_y, 1 - a_z);
|
869
872
|
uvs.push(b_y, 1 - b_z);
|
870
873
|
uvs.push(c_y, 1 - c_z);
|
871
|
-
uvs.push(d_y, 1 - d_z);
|
872
|
-
// new Vector2(a_y, 1 - a_z),
|
873
|
-
// new Vector2(b_y, 1 - b_z),
|
874
|
-
// new Vector2(c_y, 1 - c_z),
|
875
|
-
// new Vector2(d_y, 1 - d_z)
|
876
|
-
// ];
|
874
|
+
uvs.push(d_y, 1 - d_z);
|
877
875
|
}
|
878
876
|
}
|
879
877
|
|
@@ -906,10 +904,7 @@
|
|
906
904
|
});
|
907
905
|
var result = flatVertices(polygon, options);
|
908
906
|
result.polygon = polygon;
|
909
|
-
var time = 'earcut';
|
910
|
-
console.time(time);
|
911
907
|
var triangles = earcut$1(result.flatVertices, result.holes, 2);
|
912
|
-
console.timeEnd(time);
|
913
908
|
generateTopAndBottom$1(result, triangles);
|
914
909
|
generateSides$1(result, options);
|
915
910
|
result.position = new Float32Array(result.points);
|
@@ -957,29 +952,32 @@
|
|
957
952
|
|
958
953
|
for (var i = 0, len = polygon.length; i < len; i++) {
|
959
954
|
var ring = polygon[i];
|
955
|
+
var j = 0;
|
956
|
+
var len1 = ring.length;
|
960
957
|
|
961
|
-
|
958
|
+
while (j < len1) {
|
962
959
|
var v1 = ring[j];
|
963
960
|
var v2 = ring[j + 1];
|
964
961
|
|
965
962
|
if (j === len1 - 1) {
|
966
963
|
v2 = ring[0];
|
967
|
-
}
|
968
|
-
// p2 = [v2[0], v2[1], options.depth],
|
969
|
-
// p3 = [v1[0], v1[1], 0],
|
970
|
-
// p4 = [v2[0], v2[1], 0];
|
971
|
-
|
964
|
+
}
|
972
965
|
|
973
966
|
var idx = points.length / 3;
|
974
|
-
|
967
|
+
var x1 = v1[0],
|
968
|
+
y1 = v1[1],
|
969
|
+
x2 = v2[0],
|
970
|
+
y2 = v2[1];
|
971
|
+
points.push(x1, y1, 0, x2, y2, 0, x1, y1, z, x2, y2, z);
|
975
972
|
var a = idx,
|
976
973
|
b = idx + 1,
|
977
974
|
c = idx + 2,
|
978
975
|
d = idx + 3; // points.push(p3, p4, p1, p2);
|
979
976
|
|
980
|
-
index.push(a, c, b);
|
981
|
-
|
977
|
+
index.push(a, c, b, c, d, b); // index.push(c, d, b);
|
978
|
+
|
982
979
|
generateSideWallUV(uvs, points, a, b, c, d);
|
980
|
+
j++;
|
983
981
|
}
|
984
982
|
}
|
985
983
|
}
|
@@ -1018,7 +1016,10 @@
|
|
1018
1016
|
holes.push(idx0 / 2);
|
1019
1017
|
}
|
1020
1018
|
|
1021
|
-
|
1019
|
+
var j = 0;
|
1020
|
+
var len1 = ring.length;
|
1021
|
+
|
1022
|
+
while (j < len1) {
|
1022
1023
|
var c = ring[j];
|
1023
1024
|
var x = c[0],
|
1024
1025
|
y = c[1];
|
@@ -1038,6 +1039,7 @@
|
|
1038
1039
|
uvs[uOffset + idx2 + 1] = y;
|
1039
1040
|
idx1 += 3;
|
1040
1041
|
idx2 += 2;
|
1042
|
+
j++;
|
1041
1043
|
}
|
1042
1044
|
}
|
1043
1045
|
|
@@ -1078,8 +1080,10 @@
|
|
1078
1080
|
uvs = [];
|
1079
1081
|
var leftPoints = result.leftPoints,
|
1080
1082
|
rightPoints = result.rightPoints;
|
1083
|
+
var i = 0,
|
1084
|
+
len = leftPoints.length;
|
1081
1085
|
|
1082
|
-
|
1086
|
+
while (i < len) {
|
1083
1087
|
// top left
|
1084
1088
|
var idx0 = i * 3;
|
1085
1089
|
var _leftPoints$i = leftPoints[i],
|
@@ -1106,32 +1110,41 @@
|
|
1106
1110
|
points[idx3] = x2;
|
1107
1111
|
points[idx3 + 1] = y2;
|
1108
1112
|
points[idx3 + 2] = 0;
|
1113
|
+
i++;
|
1109
1114
|
}
|
1110
1115
|
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1116
|
+
i = 0;
|
1117
|
+
len = points.length;
|
1118
|
+
|
1119
|
+
while (i < len) {
|
1120
|
+
var x = points[i],
|
1121
|
+
y = points[i + 1];
|
1114
1122
|
uvs.push(x, y);
|
1123
|
+
i += 3;
|
1115
1124
|
}
|
1116
1125
|
|
1117
|
-
|
1126
|
+
i = 0;
|
1127
|
+
len = leftPoints.length;
|
1128
|
+
|
1129
|
+
while (i < len - 1) {
|
1118
1130
|
// top
|
1119
1131
|
// left1 left2 right1,right2
|
1120
|
-
var a1 =
|
1121
|
-
b1 =
|
1122
|
-
c1 = a1 +
|
1123
|
-
d1 = b1 +
|
1132
|
+
var a1 = i,
|
1133
|
+
b1 = i + 1,
|
1134
|
+
c1 = a1 + len,
|
1135
|
+
d1 = b1 + len;
|
1124
1136
|
index.push(a1, c1, b1);
|
1125
1137
|
index.push(c1, d1, b1); // bottom
|
1126
1138
|
// left1 left2 right1,right2
|
1127
1139
|
|
1128
|
-
var len2 =
|
1129
|
-
var a2 =
|
1140
|
+
var len2 = len * 2;
|
1141
|
+
var a2 = i + len2,
|
1130
1142
|
b2 = a2 + 1,
|
1131
|
-
c2 = a2 +
|
1132
|
-
d2 = b2 +
|
1143
|
+
c2 = a2 + len,
|
1144
|
+
d2 = b2 + len;
|
1133
1145
|
index.push(a2, c2, b2);
|
1134
1146
|
index.push(c2, d2, b2);
|
1147
|
+
i++;
|
1135
1148
|
}
|
1136
1149
|
|
1137
1150
|
result.index = index;
|
@@ -1154,14 +1167,12 @@
|
|
1154
1167
|
var a = idx,
|
1155
1168
|
b = idx + 1,
|
1156
1169
|
c = idx + 2,
|
1157
|
-
d = idx + 3;
|
1158
|
-
|
1159
|
-
index.push(a, c, b);
|
1160
|
-
index.push(c, d, b);
|
1170
|
+
d = idx + 3;
|
1171
|
+
index.push(a, c, b, c, d, b);
|
1161
1172
|
generateSideWallUV(uvs, points, a, b, c, d);
|
1162
1173
|
}
|
1163
1174
|
|
1164
|
-
for (var i = 0,
|
1175
|
+
for (var i = 0, _len = rings.length; i < _len; i++) {
|
1165
1176
|
var ring = rings[i];
|
1166
1177
|
|
1167
1178
|
if (i > 0) {
|
@@ -1171,19 +1182,23 @@
|
|
1171
1182
|
ring = ring.reverse();
|
1172
1183
|
}
|
1173
1184
|
|
1174
|
-
|
1185
|
+
var j = 0;
|
1186
|
+
var len1 = ring.length - 1;
|
1187
|
+
|
1188
|
+
while (j < len1) {
|
1175
1189
|
var v1 = ring[j];
|
1176
1190
|
var v2 = ring[j + 1];
|
1177
1191
|
addOneSideIndex(v1, v2);
|
1192
|
+
j++;
|
1178
1193
|
}
|
1179
1194
|
}
|
1180
1195
|
|
1181
1196
|
var len = leftPoints.length;
|
1182
1197
|
var vs = [rightPoints[0], leftPoints[0], leftPoints[len - 1], rightPoints[len - 1]];
|
1183
1198
|
|
1184
|
-
for (var
|
1185
|
-
var _v = vs[
|
1186
|
-
_v2 = vs[
|
1199
|
+
for (var _i = 0; _i < vs.length; _i += 2) {
|
1200
|
+
var _v = vs[_i],
|
1201
|
+
_v2 = vs[_i + 1];
|
1187
1202
|
addOneSideIndex(_v, _v2);
|
1188
1203
|
}
|
1189
1204
|
}
|
@@ -1204,8 +1219,9 @@
|
|
1204
1219
|
leftPoints = [],
|
1205
1220
|
rightPoints = [];
|
1206
1221
|
var len = line.length;
|
1222
|
+
var i = 0;
|
1207
1223
|
|
1208
|
-
|
1224
|
+
while (i < len - 1) {
|
1209
1225
|
var _p = line[i],
|
1210
1226
|
_p2 = line[i + 1];
|
1211
1227
|
var dy = _p2[1] - _p[1],
|
@@ -1243,6 +1259,8 @@
|
|
1243
1259
|
leftPoints.push(_op2);
|
1244
1260
|
rightPoints.push(_op);
|
1245
1261
|
}
|
1262
|
+
|
1263
|
+
i++;
|
1246
1264
|
}
|
1247
1265
|
|
1248
1266
|
var rAngle = preAngle;
|
@@ -1311,7 +1329,5 @@
|
|
1311
1329
|
|
1312
1330
|
Object.defineProperty(exports, '__esModule', { value: true });
|
1313
1331
|
|
1314
|
-
typeof console !== 'undefined' && console.log('poly-extrude v0.0.1');
|
1315
|
-
|
1316
1332
|
}));
|
1317
1333
|
//# sourceMappingURL=poly-extrude.js.map
|