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.
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
  var earcut$2 = {exports: {}};
5
5
 
@@ -725,8 +725,9 @@ function generateNormal(indices, position) {
725
725
  var n = [];
726
726
  var len = indices.length;
727
727
  var normals = new Float32Array(position.length);
728
+ var f = 0;
728
729
 
729
- for (var f = 0; f < len; f += 3) {
730
+ while (f < len) {
730
731
  // const i1 = indices[f++] * 3;
731
732
  // const i2 = indices[f++] * 3;
732
733
  // const i3 = indices[f++] * 3;
@@ -741,30 +742,30 @@ function generateNormal(indices, position) {
741
742
  i3 = c * 3;
742
743
  v3Set(p1, position[i1], position[i1 + 1], position[i1 + 2]);
743
744
  v3Set(p2, position[i2], position[i2 + 1], position[i2 + 2]);
744
- v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]); // pA.fromBufferAttribute(positionAttribute, vA);
745
- // pB.fromBufferAttribute(positionAttribute, vB);
746
- // pC.fromBufferAttribute(positionAttribute, vC);
747
- // cb.subVectors(pC, pB);
748
- // ab.subVectors(pA, pB);
749
- // cb.cross(ab);
750
-
745
+ v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]);
751
746
  v3Sub(v32, p3, p2);
752
747
  v3Sub(v21, p1, p2);
753
748
  v3Cross(n, v32, v21); // Already be weighted by the triangle area
754
749
 
755
- for (var i = 0; i < 3; i++) {
756
- normals[i1 + i] += n[i];
757
- normals[i2 + i] += n[i];
758
- normals[i3 + i] += n[i];
750
+ for (var _i = 0; _i < 3; _i++) {
751
+ normals[i1 + _i] += n[_i];
752
+ normals[i2 + _i] += n[_i];
753
+ normals[i3 + _i] += n[_i];
759
754
  }
755
+
756
+ f += 3;
760
757
  }
761
758
 
762
- for (var _i = 0; _i < normals.length; _i += 3) {
763
- v3Set(n, normals[_i], normals[_i + 1], normals[_i + 2]);
759
+ var i = 0;
760
+ var l = normals.length;
761
+
762
+ while (i < l) {
763
+ v3Set(n, normals[i], normals[i + 1], normals[i + 2]);
764
764
  v3Normalize(n, n);
765
- normals[_i] = n[0] || 1;
766
- normals[_i + 1] = n[1] || 1;
767
- normals[_i + 2] = n[2] || 1;
765
+ normals[i] = n[0] || 0;
766
+ normals[i + 1] = n[1] || 0;
767
+ normals[i + 2] = n[2] || 0;
768
+ i += 3;
768
769
  }
769
770
 
770
771
  return normals;
@@ -813,11 +814,14 @@ function merge(results) {
813
814
  result.position.set(_position, pOffset);
814
815
  result.normal.set(normal, pOffset);
815
816
  result.uv.set(uv, uvOffset);
817
+ var j = 0;
818
+ var len1 = _indices.length;
816
819
 
817
- for (var j = 0, len1 = _indices.length; j < len1; j++) {
820
+ while (j < len1) {
818
821
  var pIndex = _indices[j] + pCount;
819
822
  result.indices[iIdx] = pIndex;
820
823
  iIdx++;
824
+ j++;
821
825
  }
822
826
 
823
827
  uvOffset += uv.length;
@@ -835,39 +839,33 @@ function degToRad(angle) {
835
839
  } // https://github.com/mrdoob/three.js/blob/16f13e3b07e31d0e9a00df7c3366bbe0e464588c/src/geometries/ExtrudeGeometry.js?_pjax=%23js-repo-pjax-container#L736
836
840
 
837
841
  function generateSideWallUV(uvs, vertices, indexA, indexB, indexC, indexD) {
838
- var a_x = vertices[indexA * 3];
839
- var a_y = vertices[indexA * 3 + 1];
840
- var a_z = vertices[indexA * 3 + 2];
841
- var b_x = vertices[indexB * 3];
842
- var b_y = vertices[indexB * 3 + 1];
843
- var b_z = vertices[indexB * 3 + 2];
844
- var c_x = vertices[indexC * 3];
845
- var c_y = vertices[indexC * 3 + 1];
846
- var c_z = vertices[indexC * 3 + 2];
847
- var d_x = vertices[indexD * 3];
848
- var d_y = vertices[indexD * 3 + 1];
849
- var d_z = vertices[indexD * 3 + 2];
842
+ var idx1 = indexA * 3,
843
+ idx2 = indexB * 3,
844
+ idx3 = indexC * 3,
845
+ idx4 = indexD * 3;
846
+ var a_x = vertices[idx1];
847
+ var a_y = vertices[idx1 + 1];
848
+ var a_z = vertices[idx1 + 2];
849
+ var b_x = vertices[idx2];
850
+ var b_y = vertices[idx2 + 1];
851
+ var b_z = vertices[idx2 + 2];
852
+ var c_x = vertices[idx3];
853
+ var c_y = vertices[idx3 + 1];
854
+ var c_z = vertices[idx3 + 2];
855
+ var d_x = vertices[idx4];
856
+ var d_y = vertices[idx4 + 1];
857
+ var d_z = vertices[idx4 + 2];
850
858
 
851
859
  if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {
852
860
  uvs.push(a_x, 1 - a_z);
853
861
  uvs.push(b_x, 1 - b_z);
854
862
  uvs.push(c_x, 1 - c_z);
855
- uvs.push(d_x, 1 - d_z); // return [
856
- // new Vector2(a_x, 1 - a_z),
857
- // new Vector2(b_x, 1 - b_z),
858
- // new Vector2(c_x, 1 - c_z),
859
- // new Vector2(d_x, 1 - d_z)
860
- // ];
863
+ uvs.push(d_x, 1 - d_z);
861
864
  } else {
862
865
  uvs.push(a_y, 1 - a_z);
863
866
  uvs.push(b_y, 1 - b_z);
864
867
  uvs.push(c_y, 1 - c_z);
865
- uvs.push(d_y, 1 - d_z); // return [
866
- // new Vector2(a_y, 1 - a_z),
867
- // new Vector2(b_y, 1 - b_z),
868
- // new Vector2(c_y, 1 - c_z),
869
- // new Vector2(d_y, 1 - d_z)
870
- // ];
868
+ uvs.push(d_y, 1 - d_z);
871
869
  }
872
870
  }
873
871
 
@@ -900,10 +898,7 @@ function extrudePolygons(polygons, options) {
900
898
  });
901
899
  var result = flatVertices(polygon, options);
902
900
  result.polygon = polygon;
903
- var time = 'earcut';
904
- console.time(time);
905
901
  var triangles = earcut$1(result.flatVertices, result.holes, 2);
906
- console.timeEnd(time);
907
902
  generateTopAndBottom$1(result, triangles);
908
903
  generateSides$1(result, options);
909
904
  result.position = new Float32Array(result.points);
@@ -951,29 +946,32 @@ function generateSides$1(result, options) {
951
946
 
952
947
  for (var i = 0, len = polygon.length; i < len; i++) {
953
948
  var ring = polygon[i];
949
+ var j = 0;
950
+ var len1 = ring.length;
954
951
 
955
- for (var j = 0, len1 = ring.length; j < len1; j++) {
952
+ while (j < len1) {
956
953
  var v1 = ring[j];
957
954
  var v2 = ring[j + 1];
958
955
 
959
956
  if (j === len1 - 1) {
960
957
  v2 = ring[0];
961
- } // const p1 = [v1[0], v1[1], options.depth],
962
- // p2 = [v2[0], v2[1], options.depth],
963
- // p3 = [v1[0], v1[1], 0],
964
- // p4 = [v2[0], v2[1], 0];
965
-
958
+ }
966
959
 
967
960
  var idx = points.length / 3;
968
- points.push(v1[0], v1[1], 0, v2[0], v2[1], 0, v1[0], v1[1], z, v2[0], v2[1], z);
961
+ var x1 = v1[0],
962
+ y1 = v1[1],
963
+ x2 = v2[0],
964
+ y2 = v2[1];
965
+ points.push(x1, y1, 0, x2, y2, 0, x1, y1, z, x2, y2, z);
969
966
  var a = idx,
970
967
  b = idx + 1,
971
968
  c = idx + 2,
972
969
  d = idx + 3; // points.push(p3, p4, p1, p2);
973
970
 
974
- index.push(a, c, b);
975
- index.push(c, d, b);
971
+ index.push(a, c, b, c, d, b); // index.push(c, d, b);
972
+
976
973
  generateSideWallUV(uvs, points, a, b, c, d);
974
+ j++;
977
975
  }
978
976
  }
979
977
  }
@@ -1012,7 +1010,10 @@ function flatVertices(polygon, options) {
1012
1010
  holes.push(idx0 / 2);
1013
1011
  }
1014
1012
 
1015
- for (var j = 0, len1 = ring.length; j < len1; j++) {
1013
+ var j = 0;
1014
+ var len1 = ring.length;
1015
+
1016
+ while (j < len1) {
1016
1017
  var c = ring[j];
1017
1018
  var x = c[0],
1018
1019
  y = c[1];
@@ -1032,6 +1033,7 @@ function flatVertices(polygon, options) {
1032
1033
  uvs[uOffset + idx2 + 1] = y;
1033
1034
  idx1 += 3;
1034
1035
  idx2 += 2;
1036
+ j++;
1035
1037
  }
1036
1038
  }
1037
1039
 
@@ -1072,8 +1074,10 @@ function generateTopAndBottom(result, options) {
1072
1074
  uvs = [];
1073
1075
  var leftPoints = result.leftPoints,
1074
1076
  rightPoints = result.rightPoints;
1077
+ var i = 0,
1078
+ len = leftPoints.length;
1075
1079
 
1076
- for (var i = 0, len = leftPoints.length; i < len; i++) {
1080
+ while (i < len) {
1077
1081
  // top left
1078
1082
  var idx0 = i * 3;
1079
1083
  var _leftPoints$i = leftPoints[i],
@@ -1100,32 +1104,41 @@ function generateTopAndBottom(result, options) {
1100
1104
  points[idx3] = x2;
1101
1105
  points[idx3 + 1] = y2;
1102
1106
  points[idx3 + 2] = 0;
1107
+ i++;
1103
1108
  }
1104
1109
 
1105
- for (var _i = 0, _len = points.length; _i < _len; _i += 3) {
1106
- var x = points[_i],
1107
- y = points[_i + 1];
1110
+ i = 0;
1111
+ len = points.length;
1112
+
1113
+ while (i < len) {
1114
+ var x = points[i],
1115
+ y = points[i + 1];
1108
1116
  uvs.push(x, y);
1117
+ i += 3;
1109
1118
  }
1110
1119
 
1111
- for (var _i2 = 0, _len2 = leftPoints.length; _i2 < _len2 - 1; _i2++) {
1120
+ i = 0;
1121
+ len = leftPoints.length;
1122
+
1123
+ while (i < len - 1) {
1112
1124
  // top
1113
1125
  // left1 left2 right1,right2
1114
- var a1 = _i2,
1115
- b1 = _i2 + 1,
1116
- c1 = a1 + _len2,
1117
- d1 = b1 + _len2;
1126
+ var a1 = i,
1127
+ b1 = i + 1,
1128
+ c1 = a1 + len,
1129
+ d1 = b1 + len;
1118
1130
  index.push(a1, c1, b1);
1119
1131
  index.push(c1, d1, b1); // bottom
1120
1132
  // left1 left2 right1,right2
1121
1133
 
1122
- var len2 = _len2 * 2;
1123
- var a2 = _i2 + len2,
1134
+ var len2 = len * 2;
1135
+ var a2 = i + len2,
1124
1136
  b2 = a2 + 1,
1125
- c2 = a2 + _len2,
1126
- d2 = b2 + _len2;
1137
+ c2 = a2 + len,
1138
+ d2 = b2 + len;
1127
1139
  index.push(a2, c2, b2);
1128
1140
  index.push(c2, d2, b2);
1141
+ i++;
1129
1142
  }
1130
1143
 
1131
1144
  result.index = index;
@@ -1148,14 +1161,12 @@ function generateSides(result, options) {
1148
1161
  var a = idx,
1149
1162
  b = idx + 1,
1150
1163
  c = idx + 2,
1151
- d = idx + 3; // points.push(p3, p4, p1, p2);
1152
-
1153
- index.push(a, c, b);
1154
- index.push(c, d, b);
1164
+ d = idx + 3;
1165
+ index.push(a, c, b, c, d, b);
1155
1166
  generateSideWallUV(uvs, points, a, b, c, d);
1156
1167
  }
1157
1168
 
1158
- for (var i = 0, _len3 = rings.length; i < _len3; i++) {
1169
+ for (var i = 0, _len = rings.length; i < _len; i++) {
1159
1170
  var ring = rings[i];
1160
1171
 
1161
1172
  if (i > 0) {
@@ -1165,19 +1176,23 @@ function generateSides(result, options) {
1165
1176
  ring = ring.reverse();
1166
1177
  }
1167
1178
 
1168
- for (var j = 0, len1 = ring.length - 1; j < len1; j++) {
1179
+ var j = 0;
1180
+ var len1 = ring.length - 1;
1181
+
1182
+ while (j < len1) {
1169
1183
  var v1 = ring[j];
1170
1184
  var v2 = ring[j + 1];
1171
1185
  addOneSideIndex(v1, v2);
1186
+ j++;
1172
1187
  }
1173
1188
  }
1174
1189
 
1175
1190
  var len = leftPoints.length;
1176
1191
  var vs = [rightPoints[0], leftPoints[0], leftPoints[len - 1], rightPoints[len - 1]];
1177
1192
 
1178
- for (var _i3 = 0; _i3 < vs.length; _i3 += 2) {
1179
- var _v = vs[_i3],
1180
- _v2 = vs[_i3 + 1];
1193
+ for (var _i = 0; _i < vs.length; _i += 2) {
1194
+ var _v = vs[_i],
1195
+ _v2 = vs[_i + 1];
1181
1196
  addOneSideIndex(_v, _v2);
1182
1197
  }
1183
1198
  }
@@ -1198,8 +1213,9 @@ function expandLine(line, options) {
1198
1213
  leftPoints = [],
1199
1214
  rightPoints = [];
1200
1215
  var len = line.length;
1216
+ var i = 0;
1201
1217
 
1202
- for (var i = 0; i < len - 1; i++) {
1218
+ while (i < len - 1) {
1203
1219
  var _p = line[i],
1204
1220
  _p2 = line[i + 1];
1205
1221
  var dy = _p2[1] - _p[1],
@@ -1237,6 +1253,8 @@ function expandLine(line, options) {
1237
1253
  leftPoints.push(_op2);
1238
1254
  rightPoints.push(_op);
1239
1255
  }
1256
+
1257
+ i++;
1240
1258
  }
1241
1259
 
1242
1260
  var rAngle = preAngle;
@@ -1301,5 +1319,3 @@ function leftOnLine(p, p1, p2) {
1301
1319
  }
1302
1320
 
1303
1321
  export { extrudePolygons, extrudePolylines };
1304
-
1305
- typeof console !== 'undefined' && console.log('poly-extrude v0.0.1');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poly-extrude",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "",
5
5
  "main": "dist/poly-extrude.js",
6
6
  "module": "dist/poly-extrude.mjs",
@@ -38,5 +38,10 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "earcut": "^2.2.3"
41
- }
41
+ },
42
+ "files": [
43
+ "dist/",
44
+ "src/",
45
+ "index.js"
46
+ ]
42
47
  }
package/src/polygon.js CHANGED
@@ -22,10 +22,7 @@ export function extrudePolygons(polygons, options) {
22
22
  });
23
23
  const result = flatVertices(polygon, options);
24
24
  result.polygon = polygon;
25
- const time = 'earcut';
26
- console.time(time);
27
25
  const triangles = earcut(result.flatVertices, result.holes, 2);
28
- console.timeEnd(time);
29
26
  generateTopAndBottom(result, triangles);
30
27
  generateSides(result, options);
31
28
  result.position = new Float32Array(result.points);
@@ -64,24 +61,24 @@ function generateSides(result, options) {
64
61
  const z = options.depth;
65
62
  for (let i = 0, len = polygon.length; i < len; i++) {
66
63
  const ring = polygon[i];
67
- for (let j = 0, len1 = ring.length; j < len1; j++) {
64
+ let j = 0;
65
+ const len1 = ring.length;
66
+ while (j < len1) {
68
67
  const v1 = ring[j];
69
68
  let v2 = ring[j + 1];
70
69
  if (j === len1 - 1) {
71
70
  v2 = ring[0];
72
71
  }
73
- // const p1 = [v1[0], v1[1], options.depth],
74
- // p2 = [v2[0], v2[1], options.depth],
75
- // p3 = [v1[0], v1[1], 0],
76
- // p4 = [v2[0], v2[1], 0];
77
72
  const idx = points.length / 3;
78
- points.push(v1[0], v1[1], 0, v2[0], v2[1], 0, v1[0], v1[1], z, v2[0], v2[1], z);
73
+ const x1 = v1[0], y1 = v1[1], x2 = v2[0], y2 = v2[1];
74
+ points.push(x1, y1, 0, x2, y2, 0, x1, y1, z, x2, y2, z);
79
75
  const a = idx, b = idx + 1, c = idx + 2, d = idx + 3;
80
76
  // points.push(p3, p4, p1, p2);
81
- index.push(a, c, b);
82
- index.push(c, d, b);
77
+ index.push(a, c, b, c, d, b);
78
+ // index.push(c, d, b);
83
79
 
84
80
  generateSideWallUV(uvs, points, a, b, c, d);
81
+ j++;
85
82
  }
86
83
  }
87
84
  }
@@ -110,7 +107,9 @@ function flatVertices(polygon, options) {
110
107
  if (i > 0) {
111
108
  holes.push(idx0 / 2);
112
109
  }
113
- for (let j = 0, len1 = ring.length; j < len1; j++) {
110
+ let j = 0;
111
+ const len1 = ring.length;
112
+ while (j < len1) {
114
113
  const c = ring[j];
115
114
  const x = c[0], y = c[1];
116
115
 
@@ -135,6 +134,7 @@ function flatVertices(polygon, options) {
135
134
 
136
135
  idx1 += 3;
137
136
  idx2 += 2;
137
+ j++;
138
138
  }
139
139
  }
140
140
  return {
package/src/polyline.js CHANGED
@@ -22,7 +22,8 @@ function generateTopAndBottom(result, options) {
22
22
  const z = options.depth;
23
23
  const points = [], index = [], uvs = [];
24
24
  const { leftPoints, rightPoints } = result;
25
- for (let i = 0, len = leftPoints.length; i < len; i++) {
25
+ let i = 0, len = leftPoints.length;
26
+ while (i < len) {
26
27
  // top left
27
28
  const idx0 = i * 3;
28
29
  const [x1, y1] = leftPoints[i];
@@ -48,12 +49,19 @@ function generateTopAndBottom(result, options) {
48
49
  points[idx3] = x2;
49
50
  points[idx3 + 1] = y2;
50
51
  points[idx3 + 2] = 0;
52
+
53
+ i++;
51
54
  }
52
- for (let i = 0, len = points.length; i < len; i += 3) {
55
+ i = 0;
56
+ len = points.length;
57
+ while (i < len) {
53
58
  const x = points[i], y = points[i + 1];
54
59
  uvs.push(x, y);
60
+ i += 3;
55
61
  }
56
- for (let i = 0, len = leftPoints.length; i < len - 1; i++) {
62
+ i = 0;
63
+ len = leftPoints.length;
64
+ while (i < len - 1) {
57
65
  // top
58
66
  // left1 left2 right1,right2
59
67
  const a1 = i, b1 = i + 1, c1 = a1 + len, d1 = b1 + len;
@@ -66,6 +74,7 @@ function generateTopAndBottom(result, options) {
66
74
  const a2 = i + len2, b2 = a2 + 1, c2 = a2 + len, d2 = b2 + len;
67
75
  index.push(a2, c2, b2);
68
76
  index.push(c2, d2, b2);
77
+ i++;
69
78
  }
70
79
  result.index = index;
71
80
  result.points = points;
@@ -76,13 +85,12 @@ function generateSides(result, options) {
76
85
  const { points, index, leftPoints, rightPoints, uvs } = result;
77
86
  const z = options.depth;
78
87
  const rings = [leftPoints, rightPoints];
88
+
79
89
  function addOneSideIndex(v1, v2) {
80
90
  const idx = points.length / 3;
81
91
  points.push(v1[0], v1[1], 0, v2[0], v2[1], 0, v1[0], v1[1], z, v2[0], v2[1], z);
82
92
  const a = idx, b = idx + 1, c = idx + 2, d = idx + 3;
83
- // points.push(p3, p4, p1, p2);
84
- index.push(a, c, b);
85
- index.push(c, d, b);
93
+ index.push(a, c, b, c, d, b);
86
94
  generateSideWallUV(uvs, points, a, b, c, d);
87
95
  }
88
96
 
@@ -94,10 +102,13 @@ function generateSides(result, options) {
94
102
  });
95
103
  ring = ring.reverse();
96
104
  }
97
- for (let j = 0, len1 = ring.length - 1; j < len1; j++) {
105
+ let j = 0;
106
+ const len1 = ring.length - 1;
107
+ while (j < len1) {
98
108
  const v1 = ring[j];
99
109
  const v2 = ring[j + 1];
100
110
  addOneSideIndex(v1, v2);
111
+ j++;
101
112
  }
102
113
  }
103
114
  const len = leftPoints.length;
@@ -115,7 +126,8 @@ function expandLine(line, options) {
115
126
  const radius = options.lineWidth / 2;
116
127
  const points = [], leftPoints = [], rightPoints = [];
117
128
  const len = line.length;
118
- for (let i = 0; i < len - 1; i++) {
129
+ let i = 0;
130
+ while (i < len - 1) {
119
131
  const p1 = line[i],
120
132
  p2 = line[i + 1];
121
133
  const dy = p2[1] - p1[1],
@@ -146,6 +158,7 @@ function expandLine(line, options) {
146
158
  leftPoints.push(op2);
147
159
  rightPoints.push(op1);
148
160
  }
161
+ i++;
149
162
  }
150
163
  let rAngle = preAngle;
151
164
  rAngle -= 90;
package/src/util.js CHANGED
@@ -64,8 +64,9 @@ export function generateNormal(indices, position) {
64
64
 
65
65
  const len = indices.length;
66
66
  const normals = new Float32Array(position.length);
67
+ let f = 0;
68
+ while (f < len) {
67
69
 
68
- for (let f = 0; f < len; f += 3) {
69
70
  // const i1 = indices[f++] * 3;
70
71
  // const i2 = indices[f++] * 3;
71
72
  // const i3 = indices[f++] * 3;
@@ -79,13 +80,6 @@ export function generateNormal(indices, position) {
79
80
  v3Set(p2, position[i2], position[i2 + 1], position[i2 + 2]);
80
81
  v3Set(p3, position[i3], position[i3 + 1], position[i3 + 2]);
81
82
 
82
- // pA.fromBufferAttribute(positionAttribute, vA);
83
- // pB.fromBufferAttribute(positionAttribute, vB);
84
- // pC.fromBufferAttribute(positionAttribute, vC);
85
-
86
- // cb.subVectors(pC, pB);
87
- // ab.subVectors(pA, pB);
88
- // cb.cross(ab);
89
83
  v3Sub(v32, p3, p2);
90
84
  v3Sub(v21, p1, p2);
91
85
  v3Cross(n, v32, v21);
@@ -95,15 +89,18 @@ export function generateNormal(indices, position) {
95
89
  normals[i2 + i] += n[i];
96
90
  normals[i3 + i] += n[i];
97
91
  }
92
+ f += 3;
98
93
  }
99
94
 
100
- for (let i = 0; i < normals.length; i += 3) {
95
+ let i = 0;
96
+ const l = normals.length;
97
+ while (i < l) {
101
98
  v3Set(n, normals[i], normals[i + 1], normals[i + 2]);
102
99
  v3Normalize(n, n);
103
- normals[i] = n[0] || 1;
104
- normals[i + 1] = n[1] || 1;
105
- normals[i + 2] = n[2] || 1;
106
-
100
+ normals[i] = n[0] || 0;
101
+ normals[i + 1] = n[1] || 0;
102
+ normals[i + 2] = n[2] || 0;
103
+ i += 3;
107
104
  }
108
105
 
109
106
  return normals;
@@ -139,10 +136,13 @@ export function merge(results) {
139
136
  result.position.set(position, pOffset);
140
137
  result.normal.set(normal, pOffset);
141
138
  result.uv.set(uv, uvOffset);
142
- for (let j = 0, len1 = indices.length; j < len1; j++) {
139
+ let j = 0;
140
+ const len1 = indices.length;
141
+ while (j < len1) {
143
142
  const pIndex = indices[j] + pCount;
144
143
  result.indices[iIdx] = pIndex;
145
144
  iIdx++;
145
+ j++;
146
146
  }
147
147
  uvOffset += uv.length;
148
148
  pOffset += position.length;
@@ -162,18 +162,19 @@ export function degToRad(angle) {
162
162
  // https://github.com/mrdoob/three.js/blob/16f13e3b07e31d0e9a00df7c3366bbe0e464588c/src/geometries/ExtrudeGeometry.js?_pjax=%23js-repo-pjax-container#L736
163
163
  export function generateSideWallUV(uvs, vertices, indexA, indexB, indexC, indexD) {
164
164
 
165
- const a_x = vertices[indexA * 3];
166
- const a_y = vertices[indexA * 3 + 1];
167
- const a_z = vertices[indexA * 3 + 2];
168
- const b_x = vertices[indexB * 3];
169
- const b_y = vertices[indexB * 3 + 1];
170
- const b_z = vertices[indexB * 3 + 2];
171
- const c_x = vertices[indexC * 3];
172
- const c_y = vertices[indexC * 3 + 1];
173
- const c_z = vertices[indexC * 3 + 2];
174
- const d_x = vertices[indexD * 3];
175
- const d_y = vertices[indexD * 3 + 1];
176
- const d_z = vertices[indexD * 3 + 2];
165
+ const idx1 = indexA * 3, idx2 = indexB * 3, idx3 = indexC * 3, idx4 = indexD * 3;
166
+ const a_x = vertices[idx1];
167
+ const a_y = vertices[idx1 + 1];
168
+ const a_z = vertices[idx1 + 2];
169
+ const b_x = vertices[idx2];
170
+ const b_y = vertices[idx2 + 1];
171
+ const b_z = vertices[idx2 + 2];
172
+ const c_x = vertices[idx3];
173
+ const c_y = vertices[idx3 + 1];
174
+ const c_z = vertices[idx3 + 2];
175
+ const d_x = vertices[idx4];
176
+ const d_y = vertices[idx4 + 1];
177
+ const d_z = vertices[idx4 + 2];
177
178
 
178
179
  if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {
179
180
 
@@ -181,25 +182,11 @@ export function generateSideWallUV(uvs, vertices, indexA, indexB, indexC, indexD
181
182
  uvs.push(b_x, 1 - b_z);
182
183
  uvs.push(c_x, 1 - c_z);
183
184
  uvs.push(d_x, 1 - d_z);
184
- // return [
185
- // new Vector2(a_x, 1 - a_z),
186
- // new Vector2(b_x, 1 - b_z),
187
- // new Vector2(c_x, 1 - c_z),
188
- // new Vector2(d_x, 1 - d_z)
189
- // ];
190
-
191
185
  } else {
192
186
  uvs.push(a_y, 1 - a_z);
193
187
  uvs.push(b_y, 1 - b_z);
194
188
  uvs.push(c_y, 1 - c_z);
195
189
  uvs.push(d_y, 1 - d_z);
196
- // return [
197
- // new Vector2(a_y, 1 - a_z),
198
- // new Vector2(b_y, 1 - b_z),
199
- // new Vector2(c_y, 1 - c_z),
200
- // new Vector2(d_y, 1 - d_z)
201
- // ];
202
-
203
190
  }
204
191
 
205
192
  }
package/.eslintignore DELETED
@@ -1,12 +0,0 @@
1
- src/vendor
2
- dist
3
- src/libs
4
- build.js
5
- ftp.js
6
- clean.js
7
- siteclean.js
8
- gulpfile.js
9
- src/lib
10
- src/data
11
- src/GLTFLoader.js
12
-
package/.eslintrc.js DELETED
@@ -1,34 +0,0 @@
1
- module.exports = {
2
- "env": {
3
- "browser": true,
4
- "es6": true,
5
- "node": true
6
- },
7
- "extends": "standard",
8
- "globals": {
9
- "Atomics": "readonly",
10
- "SharedArrayBuffer": "readonly",
11
- "AMap": true,
12
- "mapboxgl": true,
13
- "TMap": true
14
- },
15
- "parserOptions": {
16
- "ecmaVersion": 2018,
17
- "sourceType": "module"
18
- },
19
- "rules": {
20
- "no-console": "off",
21
- "no-inner-declarations": "off",
22
- "semi": ["error", "always"],
23
- "indent": 0,
24
- "padded-blocks": 0,
25
- "space-before-function-paren": 0,
26
- "no-var": 1,
27
- "dot-notation": 0,
28
- "one-var": 0,
29
- "new-cap": 0,
30
- "quote-props": 0,
31
- "camelcase": 0,
32
- "wrap-iife": 0
33
- }
34
- };
@@ -1,3 +0,0 @@
1
- {
2
- "liveServer.settings.port": 5501
3
- }