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
  (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] || 0;
772
- normals[_i + 1] = n[1] || 0;
773
- normals[_i + 2] = n[2] || 0;
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
 
@@ -882,34 +880,26 @@
882
880
  depth: 2
883
881
  }, options);
884
882
  var results = polygons.map(function (polygon) {
885
- if (!isClockwise(polygon[0])) {
886
- polygon[0] = polygon[0].reverse();
887
- }
883
+ for (var i = 0, len = polygon.length; i < len; i++) {
884
+ var ring = polygon[i];
885
+ valiateRing(ring);
888
886
 
889
- polygon.slice(1, Infinity).forEach(function (coordinates, index) {
890
- if (isClockwise(coordinates)) {
891
- polygon[index + 1] = coordinates.reverse();
887
+ if (i === 0) {
888
+ if (!isClockwise(ring)) {
889
+ polygon[i] = ring.reverse();
890
+ }
891
+ } else if (isClockwise(ring)) {
892
+ polygon[i] = ring.reverse();
892
893
  }
893
- });
894
- polygon.forEach(function (ring) {
895
- var len = ring.length;
896
- var _ring$ = ring[0],
897
- x1 = _ring$[0],
898
- y1 = _ring$[1],
899
- _ring = ring[len - 1],
900
- x2 = _ring[0],
901
- y2 = _ring[1];
902
-
903
- if (x1 === x2 && y1 === y2) {
904
- ring.splice(len - 1, 1);
894
+
895
+ if (isClosedRing(ring)) {
896
+ ring.splice(ring.length - 1, 1);
905
897
  }
906
- });
898
+ }
899
+
907
900
  var result = flatVertices(polygon, options);
908
901
  result.polygon = polygon;
909
- var time = 'earcut';
910
- console.time(time);
911
902
  var triangles = earcut$1(result.flatVertices, result.holes, 2);
912
- console.timeEnd(time);
913
903
  generateTopAndBottom$1(result, triangles);
914
904
  generateSides$1(result, options);
915
905
  result.position = new Float32Array(result.points);
@@ -957,29 +947,32 @@
957
947
 
958
948
  for (var i = 0, len = polygon.length; i < len; i++) {
959
949
  var ring = polygon[i];
950
+ var j = 0;
951
+ var len1 = ring.length;
960
952
 
961
- for (var j = 0, len1 = ring.length; j < len1; j++) {
953
+ while (j < len1) {
962
954
  var v1 = ring[j];
963
955
  var v2 = ring[j + 1];
964
956
 
965
957
  if (j === len1 - 1) {
966
958
  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
-
959
+ }
972
960
 
973
961
  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);
962
+ var x1 = v1[0],
963
+ y1 = v1[1],
964
+ x2 = v2[0],
965
+ y2 = v2[1];
966
+ points.push(x1, y1, 0, x2, y2, 0, x1, y1, z, x2, y2, z);
975
967
  var a = idx,
976
968
  b = idx + 1,
977
969
  c = idx + 2,
978
970
  d = idx + 3; // points.push(p3, p4, p1, p2);
979
971
 
980
- index.push(a, c, b);
981
- index.push(c, d, b);
972
+ index.push(a, c, b, c, d, b); // index.push(c, d, b);
973
+
982
974
  generateSideWallUV(uvs, points, a, b, c, d);
975
+ j++;
983
976
  }
984
977
  }
985
978
  }
@@ -1018,7 +1011,10 @@
1018
1011
  holes.push(idx0 / 2);
1019
1012
  }
1020
1013
 
1021
- for (var j = 0, len1 = ring.length; j < len1; j++) {
1014
+ var j = 0;
1015
+ var len1 = ring.length;
1016
+
1017
+ while (j < len1) {
1022
1018
  var c = ring[j];
1023
1019
  var x = c[0],
1024
1020
  y = c[1];
@@ -1038,6 +1034,7 @@
1038
1034
  uvs[uOffset + idx2 + 1] = y;
1039
1035
  idx1 += 3;
1040
1036
  idx2 += 2;
1037
+ j++;
1041
1038
  }
1042
1039
  }
1043
1040
 
@@ -1050,6 +1047,23 @@
1050
1047
  };
1051
1048
  }
1052
1049
 
1050
+ function valiateRing(ring) {
1051
+ if (!isClosedRing(ring)) {
1052
+ ring.push(ring[0]);
1053
+ }
1054
+ }
1055
+
1056
+ function isClosedRing(ring) {
1057
+ var len = ring.length;
1058
+ var _ring$ = ring[0],
1059
+ x1 = _ring$[0],
1060
+ y1 = _ring$[1],
1061
+ _ring = ring[len - 1],
1062
+ x2 = _ring[0],
1063
+ y2 = _ring[1];
1064
+ return x1 === x2 && y1 === y2;
1065
+ }
1066
+
1053
1067
  function extrudePolylines(lines, options) {
1054
1068
  options = Object.assign({}, {
1055
1069
  depth: 2,
@@ -1078,8 +1092,10 @@
1078
1092
  uvs = [];
1079
1093
  var leftPoints = result.leftPoints,
1080
1094
  rightPoints = result.rightPoints;
1095
+ var i = 0,
1096
+ len = leftPoints.length;
1081
1097
 
1082
- for (var i = 0, len = leftPoints.length; i < len; i++) {
1098
+ while (i < len) {
1083
1099
  // top left
1084
1100
  var idx0 = i * 3;
1085
1101
  var _leftPoints$i = leftPoints[i],
@@ -1106,32 +1122,41 @@
1106
1122
  points[idx3] = x2;
1107
1123
  points[idx3 + 1] = y2;
1108
1124
  points[idx3 + 2] = 0;
1125
+ i++;
1109
1126
  }
1110
1127
 
1111
- for (var _i = 0, _len = points.length; _i < _len; _i += 3) {
1112
- var x = points[_i],
1113
- y = points[_i + 1];
1128
+ i = 0;
1129
+ len = points.length;
1130
+
1131
+ while (i < len) {
1132
+ var x = points[i],
1133
+ y = points[i + 1];
1114
1134
  uvs.push(x, y);
1135
+ i += 3;
1115
1136
  }
1116
1137
 
1117
- for (var _i2 = 0, _len2 = leftPoints.length; _i2 < _len2 - 1; _i2++) {
1138
+ i = 0;
1139
+ len = leftPoints.length;
1140
+
1141
+ while (i < len - 1) {
1118
1142
  // top
1119
1143
  // left1 left2 right1,right2
1120
- var a1 = _i2,
1121
- b1 = _i2 + 1,
1122
- c1 = a1 + _len2,
1123
- d1 = b1 + _len2;
1144
+ var a1 = i,
1145
+ b1 = i + 1,
1146
+ c1 = a1 + len,
1147
+ d1 = b1 + len;
1124
1148
  index.push(a1, c1, b1);
1125
1149
  index.push(c1, d1, b1); // bottom
1126
1150
  // left1 left2 right1,right2
1127
1151
 
1128
- var len2 = _len2 * 2;
1129
- var a2 = _i2 + len2,
1152
+ var len2 = len * 2;
1153
+ var a2 = i + len2,
1130
1154
  b2 = a2 + 1,
1131
- c2 = a2 + _len2,
1132
- d2 = b2 + _len2;
1155
+ c2 = a2 + len,
1156
+ d2 = b2 + len;
1133
1157
  index.push(a2, c2, b2);
1134
1158
  index.push(c2, d2, b2);
1159
+ i++;
1135
1160
  }
1136
1161
 
1137
1162
  result.index = index;
@@ -1154,14 +1179,12 @@
1154
1179
  var a = idx,
1155
1180
  b = idx + 1,
1156
1181
  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);
1182
+ d = idx + 3;
1183
+ index.push(a, c, b, c, d, b);
1161
1184
  generateSideWallUV(uvs, points, a, b, c, d);
1162
1185
  }
1163
1186
 
1164
- for (var i = 0, _len3 = rings.length; i < _len3; i++) {
1187
+ for (var i = 0, _len = rings.length; i < _len; i++) {
1165
1188
  var ring = rings[i];
1166
1189
 
1167
1190
  if (i > 0) {
@@ -1171,19 +1194,23 @@
1171
1194
  ring = ring.reverse();
1172
1195
  }
1173
1196
 
1174
- for (var j = 0, len1 = ring.length - 1; j < len1; j++) {
1197
+ var j = 0;
1198
+ var len1 = ring.length - 1;
1199
+
1200
+ while (j < len1) {
1175
1201
  var v1 = ring[j];
1176
1202
  var v2 = ring[j + 1];
1177
1203
  addOneSideIndex(v1, v2);
1204
+ j++;
1178
1205
  }
1179
1206
  }
1180
1207
 
1181
1208
  var len = leftPoints.length;
1182
1209
  var vs = [rightPoints[0], leftPoints[0], leftPoints[len - 1], rightPoints[len - 1]];
1183
1210
 
1184
- for (var _i3 = 0; _i3 < vs.length; _i3 += 2) {
1185
- var _v = vs[_i3],
1186
- _v2 = vs[_i3 + 1];
1211
+ for (var _i = 0; _i < vs.length; _i += 2) {
1212
+ var _v = vs[_i],
1213
+ _v2 = vs[_i + 1];
1187
1214
  addOneSideIndex(_v, _v2);
1188
1215
  }
1189
1216
  }
@@ -1204,8 +1231,9 @@
1204
1231
  leftPoints = [],
1205
1232
  rightPoints = [];
1206
1233
  var len = line.length;
1234
+ var i = 0;
1207
1235
 
1208
- for (var i = 0; i < len - 1; i++) {
1236
+ while (i < len - 1) {
1209
1237
  var _p = line[i],
1210
1238
  _p2 = line[i + 1];
1211
1239
  var dy = _p2[1] - _p[1],
@@ -1243,6 +1271,8 @@
1243
1271
  leftPoints.push(_op2);
1244
1272
  rightPoints.push(_op);
1245
1273
  }
1274
+
1275
+ i++;
1246
1276
  }
1247
1277
 
1248
1278
  var rAngle = preAngle;
@@ -1311,7 +1341,5 @@
1311
1341
 
1312
1342
  Object.defineProperty(exports, '__esModule', { value: true });
1313
1343
 
1314
- typeof console !== 'undefined' && console.log('poly-extrude v0.0.2');
1315
-
1316
1344
  }));
1317
1345
  //# sourceMappingURL=poly-extrude.js.map