poly-extrude 0.0.1 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/dist/poly-extrude.js +97 -81
  2. package/dist/poly-extrude.js.map +1 -1
  3. package/dist/poly-extrude.min.js +2 -2
  4. package/dist/poly-extrude.mjs +97 -81
  5. package/package.json +7 -2
  6. package/src/polygon.js +12 -12
  7. package/src/polyline.js +21 -8
  8. package/src/util.js +27 -40
  9. package/.eslintignore +0 -12
  10. package/.eslintrc.js +0 -34
  11. package/.vscode/settings.json +0 -3
  12. package/babel.config.js +0 -12
  13. package/pnpm-lock.yaml +0 -3054
  14. package/rollup.config.js +0 -108
  15. package/test/buildings.html +0 -77
  16. package/test/data/a.png +0 -0
  17. package/test/data/building-texture-dark.jpg +0 -0
  18. package/test/data/building.geojson +0 -1118
  19. package/test/data/buildings-ny.geojson +0 -2845
  20. package/test/data/buildings.geojson +0 -1
  21. package/test/data/free-line.geojson +0 -1
  22. package/test/data/line.geojson +0 -1
  23. package/test/data/polygon.geojson +0 -1
  24. package/test/data/simple-hole.geojson +0 -1
  25. package/test/data/simple-line.geojson +0 -45
  26. package/test/data/simple.geojson +0 -1
  27. package/test/data/street.geojson +0 -1
  28. package/test/data//345/244/252/346/271/226.geojson +0 -8
  29. package/test/data//350/210/237/345/261/261/345/270/202.geojson +0 -1
  30. package/test/data//350/213/217/345/267/236.geojson +0 -1
  31. package/test/data//351/204/261/351/230/263/346/271/226.geojson +0 -1
  32. package/test/line-draw.html +0 -100
  33. package/test/line-uv.html +0 -69
  34. package/test/line.html +0 -56
  35. package/test/multi-polygon.html +0 -53
  36. package/test/ny-building.html +0 -67
  37. package/test/simple.html +0 -61
  38. package/test/street.html +0 -52
  39. package/test/util.js +0 -131
  40. package/test/uv.html +0 -77
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * poly-extrude v0.0.1
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
- for (var f = 0; f < len; f += 3) {
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]); // pA.fromBufferAttribute(positionAttribute, vA);
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 i = 0; i < 3; i++) {
762
- normals[i1 + i] += n[i];
763
- normals[i2 + i] += n[i];
764
- normals[i3 + i] += n[i];
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
- for (var _i = 0; _i < normals.length; _i += 3) {
769
- v3Set(n, normals[_i], normals[_i + 1], normals[_i + 2]);
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[_i] = n[0] || 1;
772
- normals[_i + 1] = n[1] || 1;
773
- normals[_i + 2] = n[2] || 1;
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
- for (var j = 0, len1 = _indices.length; j < len1; j++) {
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 a_x = vertices[indexA * 3];
845
- var a_y = vertices[indexA * 3 + 1];
846
- var a_z = vertices[indexA * 3 + 2];
847
- var b_x = vertices[indexB * 3];
848
- var b_y = vertices[indexB * 3 + 1];
849
- var b_z = vertices[indexB * 3 + 2];
850
- var c_x = vertices[indexC * 3];
851
- var c_y = vertices[indexC * 3 + 1];
852
- var c_z = vertices[indexC * 3 + 2];
853
- var d_x = vertices[indexD * 3];
854
- var d_y = vertices[indexD * 3 + 1];
855
- var d_z = vertices[indexD * 3 + 2];
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); // return [
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); // return [
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
- for (var j = 0, len1 = ring.length; j < len1; j++) {
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
- } // const p1 = [v1[0], v1[1], options.depth],
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
- points.push(v1[0], v1[1], 0, v2[0], v2[1], 0, v1[0], v1[1], z, v2[0], v2[1], z);
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
- index.push(c, d, b);
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
- for (var j = 0, len1 = ring.length; j < len1; j++) {
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
- for (var i = 0, len = leftPoints.length; i < len; i++) {
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
- for (var _i = 0, _len = points.length; _i < _len; _i += 3) {
1112
- var x = points[_i],
1113
- y = points[_i + 1];
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
- for (var _i2 = 0, _len2 = leftPoints.length; _i2 < _len2 - 1; _i2++) {
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 = _i2,
1121
- b1 = _i2 + 1,
1122
- c1 = a1 + _len2,
1123
- d1 = b1 + _len2;
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 = _len2 * 2;
1129
- var a2 = _i2 + len2,
1140
+ var len2 = len * 2;
1141
+ var a2 = i + len2,
1130
1142
  b2 = a2 + 1,
1131
- c2 = a2 + _len2,
1132
- d2 = b2 + _len2;
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; // points.push(p3, p4, p1, p2);
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, _len3 = rings.length; i < _len3; i++) {
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
- for (var j = 0, len1 = ring.length - 1; j < len1; j++) {
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 _i3 = 0; _i3 < vs.length; _i3 += 2) {
1185
- var _v = vs[_i3],
1186
- _v2 = vs[_i3 + 1];
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
- for (var i = 0; i < len - 1; i++) {
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