poly-extrude 0.0.2 → 0.0.5

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * poly-extrude v0.0.2
2
+ * poly-extrude v0.0.5
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] || 0;
766
- normals[_i + 1] = n[1] || 0;
767
- normals[_i + 2] = n[2] || 0;
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
 
@@ -876,34 +874,26 @@ function extrudePolygons(polygons, options) {
876
874
  depth: 2
877
875
  }, options);
878
876
  var results = polygons.map(function (polygon) {
879
- if (!isClockwise(polygon[0])) {
880
- polygon[0] = polygon[0].reverse();
881
- }
877
+ for (var i = 0, len = polygon.length; i < len; i++) {
878
+ var ring = polygon[i];
879
+ valiateRing(ring);
882
880
 
883
- polygon.slice(1, Infinity).forEach(function (coordinates, index) {
884
- if (isClockwise(coordinates)) {
885
- polygon[index + 1] = coordinates.reverse();
881
+ if (i === 0) {
882
+ if (!isClockwise(ring)) {
883
+ polygon[i] = ring.reverse();
884
+ }
885
+ } else if (isClockwise(ring)) {
886
+ polygon[i] = ring.reverse();
886
887
  }
887
- });
888
- polygon.forEach(function (ring) {
889
- var len = ring.length;
890
- var _ring$ = ring[0],
891
- x1 = _ring$[0],
892
- y1 = _ring$[1],
893
- _ring = ring[len - 1],
894
- x2 = _ring[0],
895
- y2 = _ring[1];
896
-
897
- if (x1 === x2 && y1 === y2) {
898
- ring.splice(len - 1, 1);
888
+
889
+ if (isClosedRing(ring)) {
890
+ ring.splice(ring.length - 1, 1);
899
891
  }
900
- });
892
+ }
893
+
901
894
  var result = flatVertices(polygon, options);
902
895
  result.polygon = polygon;
903
- var time = 'earcut';
904
- console.time(time);
905
896
  var triangles = earcut$1(result.flatVertices, result.holes, 2);
906
- console.timeEnd(time);
907
897
  generateTopAndBottom$1(result, triangles);
908
898
  generateSides$1(result, options);
909
899
  result.position = new Float32Array(result.points);
@@ -951,29 +941,32 @@ function generateSides$1(result, options) {
951
941
 
952
942
  for (var i = 0, len = polygon.length; i < len; i++) {
953
943
  var ring = polygon[i];
944
+ var j = 0;
945
+ var len1 = ring.length;
954
946
 
955
- for (var j = 0, len1 = ring.length; j < len1; j++) {
947
+ while (j < len1) {
956
948
  var v1 = ring[j];
957
949
  var v2 = ring[j + 1];
958
950
 
959
951
  if (j === len1 - 1) {
960
952
  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
-
953
+ }
966
954
 
967
955
  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);
956
+ var x1 = v1[0],
957
+ y1 = v1[1],
958
+ x2 = v2[0],
959
+ y2 = v2[1];
960
+ points.push(x1, y1, 0, x2, y2, 0, x1, y1, z, x2, y2, z);
969
961
  var a = idx,
970
962
  b = idx + 1,
971
963
  c = idx + 2,
972
964
  d = idx + 3; // points.push(p3, p4, p1, p2);
973
965
 
974
- index.push(a, c, b);
975
- index.push(c, d, b);
966
+ index.push(a, c, b, c, d, b); // index.push(c, d, b);
967
+
976
968
  generateSideWallUV(uvs, points, a, b, c, d);
969
+ j++;
977
970
  }
978
971
  }
979
972
  }
@@ -1012,7 +1005,10 @@ function flatVertices(polygon, options) {
1012
1005
  holes.push(idx0 / 2);
1013
1006
  }
1014
1007
 
1015
- for (var j = 0, len1 = ring.length; j < len1; j++) {
1008
+ var j = 0;
1009
+ var len1 = ring.length;
1010
+
1011
+ while (j < len1) {
1016
1012
  var c = ring[j];
1017
1013
  var x = c[0],
1018
1014
  y = c[1];
@@ -1032,6 +1028,7 @@ function flatVertices(polygon, options) {
1032
1028
  uvs[uOffset + idx2 + 1] = y;
1033
1029
  idx1 += 3;
1034
1030
  idx2 += 2;
1031
+ j++;
1035
1032
  }
1036
1033
  }
1037
1034
 
@@ -1044,6 +1041,23 @@ function flatVertices(polygon, options) {
1044
1041
  };
1045
1042
  }
1046
1043
 
1044
+ function valiateRing(ring) {
1045
+ if (!isClosedRing(ring)) {
1046
+ ring.push(ring[0]);
1047
+ }
1048
+ }
1049
+
1050
+ function isClosedRing(ring) {
1051
+ var len = ring.length;
1052
+ var _ring$ = ring[0],
1053
+ x1 = _ring$[0],
1054
+ y1 = _ring$[1],
1055
+ _ring = ring[len - 1],
1056
+ x2 = _ring[0],
1057
+ y2 = _ring[1];
1058
+ return x1 === x2 && y1 === y2;
1059
+ }
1060
+
1047
1061
  function extrudePolylines(lines, options) {
1048
1062
  options = Object.assign({}, {
1049
1063
  depth: 2,
@@ -1072,8 +1086,10 @@ function generateTopAndBottom(result, options) {
1072
1086
  uvs = [];
1073
1087
  var leftPoints = result.leftPoints,
1074
1088
  rightPoints = result.rightPoints;
1089
+ var i = 0,
1090
+ len = leftPoints.length;
1075
1091
 
1076
- for (var i = 0, len = leftPoints.length; i < len; i++) {
1092
+ while (i < len) {
1077
1093
  // top left
1078
1094
  var idx0 = i * 3;
1079
1095
  var _leftPoints$i = leftPoints[i],
@@ -1100,32 +1116,41 @@ function generateTopAndBottom(result, options) {
1100
1116
  points[idx3] = x2;
1101
1117
  points[idx3 + 1] = y2;
1102
1118
  points[idx3 + 2] = 0;
1119
+ i++;
1103
1120
  }
1104
1121
 
1105
- for (var _i = 0, _len = points.length; _i < _len; _i += 3) {
1106
- var x = points[_i],
1107
- y = points[_i + 1];
1122
+ i = 0;
1123
+ len = points.length;
1124
+
1125
+ while (i < len) {
1126
+ var x = points[i],
1127
+ y = points[i + 1];
1108
1128
  uvs.push(x, y);
1129
+ i += 3;
1109
1130
  }
1110
1131
 
1111
- for (var _i2 = 0, _len2 = leftPoints.length; _i2 < _len2 - 1; _i2++) {
1132
+ i = 0;
1133
+ len = leftPoints.length;
1134
+
1135
+ while (i < len - 1) {
1112
1136
  // top
1113
1137
  // left1 left2 right1,right2
1114
- var a1 = _i2,
1115
- b1 = _i2 + 1,
1116
- c1 = a1 + _len2,
1117
- d1 = b1 + _len2;
1138
+ var a1 = i,
1139
+ b1 = i + 1,
1140
+ c1 = a1 + len,
1141
+ d1 = b1 + len;
1118
1142
  index.push(a1, c1, b1);
1119
1143
  index.push(c1, d1, b1); // bottom
1120
1144
  // left1 left2 right1,right2
1121
1145
 
1122
- var len2 = _len2 * 2;
1123
- var a2 = _i2 + len2,
1146
+ var len2 = len * 2;
1147
+ var a2 = i + len2,
1124
1148
  b2 = a2 + 1,
1125
- c2 = a2 + _len2,
1126
- d2 = b2 + _len2;
1149
+ c2 = a2 + len,
1150
+ d2 = b2 + len;
1127
1151
  index.push(a2, c2, b2);
1128
1152
  index.push(c2, d2, b2);
1153
+ i++;
1129
1154
  }
1130
1155
 
1131
1156
  result.index = index;
@@ -1148,14 +1173,12 @@ function generateSides(result, options) {
1148
1173
  var a = idx,
1149
1174
  b = idx + 1,
1150
1175
  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);
1176
+ d = idx + 3;
1177
+ index.push(a, c, b, c, d, b);
1155
1178
  generateSideWallUV(uvs, points, a, b, c, d);
1156
1179
  }
1157
1180
 
1158
- for (var i = 0, _len3 = rings.length; i < _len3; i++) {
1181
+ for (var i = 0, _len = rings.length; i < _len; i++) {
1159
1182
  var ring = rings[i];
1160
1183
 
1161
1184
  if (i > 0) {
@@ -1165,19 +1188,23 @@ function generateSides(result, options) {
1165
1188
  ring = ring.reverse();
1166
1189
  }
1167
1190
 
1168
- for (var j = 0, len1 = ring.length - 1; j < len1; j++) {
1191
+ var j = 0;
1192
+ var len1 = ring.length - 1;
1193
+
1194
+ while (j < len1) {
1169
1195
  var v1 = ring[j];
1170
1196
  var v2 = ring[j + 1];
1171
1197
  addOneSideIndex(v1, v2);
1198
+ j++;
1172
1199
  }
1173
1200
  }
1174
1201
 
1175
1202
  var len = leftPoints.length;
1176
1203
  var vs = [rightPoints[0], leftPoints[0], leftPoints[len - 1], rightPoints[len - 1]];
1177
1204
 
1178
- for (var _i3 = 0; _i3 < vs.length; _i3 += 2) {
1179
- var _v = vs[_i3],
1180
- _v2 = vs[_i3 + 1];
1205
+ for (var _i = 0; _i < vs.length; _i += 2) {
1206
+ var _v = vs[_i],
1207
+ _v2 = vs[_i + 1];
1181
1208
  addOneSideIndex(_v, _v2);
1182
1209
  }
1183
1210
  }
@@ -1198,8 +1225,9 @@ function expandLine(line, options) {
1198
1225
  leftPoints = [],
1199
1226
  rightPoints = [];
1200
1227
  var len = line.length;
1228
+ var i = 0;
1201
1229
 
1202
- for (var i = 0; i < len - 1; i++) {
1230
+ while (i < len - 1) {
1203
1231
  var _p = line[i],
1204
1232
  _p2 = line[i + 1];
1205
1233
  var dy = _p2[1] - _p[1],
@@ -1237,6 +1265,8 @@ function expandLine(line, options) {
1237
1265
  leftPoints.push(_op2);
1238
1266
  rightPoints.push(_op);
1239
1267
  }
1268
+
1269
+ i++;
1240
1270
  }
1241
1271
 
1242
1272
  var rAngle = preAngle;
@@ -1301,5 +1331,3 @@ function leftOnLine(p, p1, p2) {
1301
1331
  }
1302
1332
 
1303
1333
  export { extrudePolygons, extrudePolylines };
1304
-
1305
- typeof console !== 'undefined' && console.log('poly-extrude v0.0.2');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poly-extrude",
3
- "version": "0.0.2",
3
+ "version": "0.0.5",
4
4
  "description": "",
5
5
  "main": "dist/poly-extrude.js",
6
6
  "module": "dist/poly-extrude.mjs",
package/src/polygon.js CHANGED
@@ -5,27 +5,23 @@ import { generateNormal, generateSideWallUV, isClockwise, merge } from './util';
5
5
  export function extrudePolygons(polygons, options) {
6
6
  options = Object.assign({}, { depth: 2 }, options);
7
7
  const results = polygons.map(polygon => {
8
- if (!isClockwise(polygon[0])) {
9
- polygon[0] = polygon[0].reverse();
10
- }
11
- polygon.slice(1, Infinity).forEach((coordinates, index) => {
12
- if (isClockwise(coordinates)) {
13
- polygon[index + 1] = coordinates.reverse();
8
+ for (let i = 0, len = polygon.length; i < len; i++) {
9
+ const ring = polygon[i];
10
+ valiateRing(ring);
11
+ if (i === 0) {
12
+ if (!isClockwise(ring)) {
13
+ polygon[i] = ring.reverse();
14
+ }
15
+ } else if (isClockwise(ring)) {
16
+ polygon[i] = ring.reverse();
14
17
  }
15
- });
16
- polygon.forEach(ring => {
17
- const len = ring.length;
18
- const [x1, y1] = ring[0], [x2, y2] = ring[len - 1];
19
- if (x1 === x2 && y1 === y2) {
20
- ring.splice(len - 1, 1);
18
+ if (isClosedRing(ring)) {
19
+ ring.splice(ring.length - 1, 1);
21
20
  }
22
- });
21
+ }
23
22
  const result = flatVertices(polygon, options);
24
23
  result.polygon = polygon;
25
- const time = 'earcut';
26
- console.time(time);
27
24
  const triangles = earcut(result.flatVertices, result.holes, 2);
28
- console.timeEnd(time);
29
25
  generateTopAndBottom(result, triangles);
30
26
  generateSides(result, options);
31
27
  result.position = new Float32Array(result.points);
@@ -64,24 +60,24 @@ function generateSides(result, options) {
64
60
  const z = options.depth;
65
61
  for (let i = 0, len = polygon.length; i < len; i++) {
66
62
  const ring = polygon[i];
67
- for (let j = 0, len1 = ring.length; j < len1; j++) {
63
+ let j = 0;
64
+ const len1 = ring.length;
65
+ while (j < len1) {
68
66
  const v1 = ring[j];
69
67
  let v2 = ring[j + 1];
70
68
  if (j === len1 - 1) {
71
69
  v2 = ring[0];
72
70
  }
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
71
  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);
72
+ const x1 = v1[0], y1 = v1[1], x2 = v2[0], y2 = v2[1];
73
+ points.push(x1, y1, 0, x2, y2, 0, x1, y1, z, x2, y2, z);
79
74
  const a = idx, b = idx + 1, c = idx + 2, d = idx + 3;
80
75
  // points.push(p3, p4, p1, p2);
81
- index.push(a, c, b);
82
- index.push(c, d, b);
76
+ index.push(a, c, b, c, d, b);
77
+ // index.push(c, d, b);
83
78
 
84
79
  generateSideWallUV(uvs, points, a, b, c, d);
80
+ j++;
85
81
  }
86
82
  }
87
83
  }
@@ -110,7 +106,9 @@ function flatVertices(polygon, options) {
110
106
  if (i > 0) {
111
107
  holes.push(idx0 / 2);
112
108
  }
113
- for (let j = 0, len1 = ring.length; j < len1; j++) {
109
+ let j = 0;
110
+ const len1 = ring.length;
111
+ while (j < len1) {
114
112
  const c = ring[j];
115
113
  const x = c[0], y = c[1];
116
114
 
@@ -135,6 +133,7 @@ function flatVertices(polygon, options) {
135
133
 
136
134
  idx1 += 3;
137
135
  idx2 += 2;
136
+ j++;
138
137
  }
139
138
  }
140
139
  return {
@@ -146,3 +145,15 @@ function flatVertices(polygon, options) {
146
145
  };
147
146
 
148
147
  }
148
+
149
+ function valiateRing(ring) {
150
+ if (!isClosedRing(ring)) {
151
+ ring.push(ring[0]);
152
+ }
153
+ }
154
+
155
+ function isClosedRing(ring) {
156
+ const len = ring.length;
157
+ const [x1, y1] = ring[0], [x2, y2] = ring[len - 1];
158
+ return (x1 === x2 && y1 === y2);
159
+ }
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;