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
  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
- }