@tscircuit/3d-viewer 0.0.201 → 0.0.202
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.
- package/dist/index.js +388 -134
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -195,9 +195,9 @@ var require_trigonometry = __commonJS({
|
|
|
195
195
|
"use strict";
|
|
196
196
|
var { NEPS } = require_constants();
|
|
197
197
|
var rezero = (n) => Math.abs(n) < NEPS ? 0 : n;
|
|
198
|
-
var
|
|
199
|
-
var
|
|
200
|
-
module.exports = { sin, cos };
|
|
198
|
+
var sin2 = (radians) => rezero(Math.sin(radians));
|
|
199
|
+
var cos2 = (radians) => rezero(Math.cos(radians));
|
|
200
|
+
module.exports = { sin: sin2, cos: cos2 };
|
|
201
201
|
}
|
|
202
202
|
});
|
|
203
203
|
|
|
@@ -205,10 +205,10 @@ var require_trigonometry = __commonJS({
|
|
|
205
205
|
var require_fromAngleRadians = __commonJS({
|
|
206
206
|
"node_modules/@jscad/modeling/src/maths/vec2/fromAngleRadians.js"(exports, module) {
|
|
207
207
|
"use strict";
|
|
208
|
-
var { sin, cos } = require_trigonometry();
|
|
208
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
209
209
|
var fromAngleRadians = (out, radians) => {
|
|
210
|
-
out[0] =
|
|
211
|
-
out[1] =
|
|
210
|
+
out[0] = cos2(radians);
|
|
211
|
+
out[1] = sin2(radians);
|
|
212
212
|
return out;
|
|
213
213
|
};
|
|
214
214
|
module.exports = fromAngleRadians;
|
|
@@ -333,7 +333,7 @@ var require_negate = __commonJS({
|
|
|
333
333
|
var require_rotate = __commonJS({
|
|
334
334
|
"node_modules/@jscad/modeling/src/maths/vec2/rotate.js"(exports, module) {
|
|
335
335
|
"use strict";
|
|
336
|
-
var
|
|
336
|
+
var rotate2 = (out, vector, origin, radians) => {
|
|
337
337
|
const x = vector[0] - origin[0];
|
|
338
338
|
const y = vector[1] - origin[1];
|
|
339
339
|
const c = Math.cos(radians);
|
|
@@ -342,7 +342,7 @@ var require_rotate = __commonJS({
|
|
|
342
342
|
out[1] = x * s + y * c + origin[1];
|
|
343
343
|
return out;
|
|
344
344
|
};
|
|
345
|
-
module.exports =
|
|
345
|
+
module.exports = rotate2;
|
|
346
346
|
}
|
|
347
347
|
});
|
|
348
348
|
|
|
@@ -352,8 +352,8 @@ var require_normal = __commonJS({
|
|
|
352
352
|
"use strict";
|
|
353
353
|
var { TAU } = require_constants();
|
|
354
354
|
var create = require_create();
|
|
355
|
-
var
|
|
356
|
-
var normal = (out, vector) =>
|
|
355
|
+
var rotate2 = require_rotate();
|
|
356
|
+
var normal = (out, vector) => rotate2(out, vector, create(), TAU / 4);
|
|
357
357
|
module.exports = normal;
|
|
358
358
|
}
|
|
359
359
|
});
|
|
@@ -381,12 +381,12 @@ var require_normalize = __commonJS({
|
|
|
381
381
|
var require_scale = __commonJS({
|
|
382
382
|
"node_modules/@jscad/modeling/src/maths/vec2/scale.js"(exports, module) {
|
|
383
383
|
"use strict";
|
|
384
|
-
var
|
|
384
|
+
var scale2 = (out, vector, amount) => {
|
|
385
385
|
out[0] = vector[0] * amount;
|
|
386
386
|
out[1] = vector[1] * amount;
|
|
387
387
|
return out;
|
|
388
388
|
};
|
|
389
|
-
module.exports =
|
|
389
|
+
module.exports = scale2;
|
|
390
390
|
}
|
|
391
391
|
});
|
|
392
392
|
|
|
@@ -455,14 +455,14 @@ var require_toString = __commonJS({
|
|
|
455
455
|
var require_transform = __commonJS({
|
|
456
456
|
"node_modules/@jscad/modeling/src/maths/vec2/transform.js"(exports, module) {
|
|
457
457
|
"use strict";
|
|
458
|
-
var
|
|
458
|
+
var transform2 = (out, vector, matrix) => {
|
|
459
459
|
const x = vector[0];
|
|
460
460
|
const y = vector[1];
|
|
461
461
|
out[0] = matrix[0] * x + matrix[4] * y + matrix[12];
|
|
462
462
|
out[1] = matrix[1] * x + matrix[5] * y + matrix[13];
|
|
463
463
|
return out;
|
|
464
464
|
};
|
|
465
|
-
module.exports =
|
|
465
|
+
module.exports = transform2;
|
|
466
466
|
}
|
|
467
467
|
});
|
|
468
468
|
|
|
@@ -754,7 +754,7 @@ var require_fromRotation = __commonJS({
|
|
|
754
754
|
"node_modules/@jscad/modeling/src/maths/mat4/fromRotation.js"(exports, module) {
|
|
755
755
|
"use strict";
|
|
756
756
|
var { EPS } = require_constants();
|
|
757
|
-
var { sin, cos } = require_trigonometry();
|
|
757
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
758
758
|
var identity = require_identity();
|
|
759
759
|
var fromRotation = (out, rad, axis) => {
|
|
760
760
|
let [x, y, z] = axis;
|
|
@@ -766,8 +766,8 @@ var require_fromRotation = __commonJS({
|
|
|
766
766
|
x *= len;
|
|
767
767
|
y *= len;
|
|
768
768
|
z *= len;
|
|
769
|
-
const s =
|
|
770
|
-
const c =
|
|
769
|
+
const s = sin2(rad);
|
|
770
|
+
const c = cos2(rad);
|
|
771
771
|
const t = 1 - c;
|
|
772
772
|
out[0] = x * x * t + c;
|
|
773
773
|
out[1] = y * x * t + z * s;
|
|
@@ -822,14 +822,14 @@ var require_fromScaling = __commonJS({
|
|
|
822
822
|
var require_fromTaitBryanRotation = __commonJS({
|
|
823
823
|
"node_modules/@jscad/modeling/src/maths/mat4/fromTaitBryanRotation.js"(exports, module) {
|
|
824
824
|
"use strict";
|
|
825
|
-
var { sin, cos } = require_trigonometry();
|
|
825
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
826
826
|
var fromTaitBryanRotation = (out, yaw, pitch, roll) => {
|
|
827
|
-
const sy =
|
|
828
|
-
const cy =
|
|
829
|
-
const sp =
|
|
830
|
-
const cp =
|
|
831
|
-
const sr =
|
|
832
|
-
const cr =
|
|
827
|
+
const sy = sin2(yaw);
|
|
828
|
+
const cy = cos2(yaw);
|
|
829
|
+
const sp = sin2(pitch);
|
|
830
|
+
const cp = cos2(pitch);
|
|
831
|
+
const sr = sin2(roll);
|
|
832
|
+
const cr = cos2(roll);
|
|
833
833
|
out[0] = cp * cy;
|
|
834
834
|
out[1] = cp * sy;
|
|
835
835
|
out[2] = -sp;
|
|
@@ -1298,13 +1298,13 @@ var require_rotateZ = __commonJS({
|
|
|
1298
1298
|
var require_scale2 = __commonJS({
|
|
1299
1299
|
"node_modules/@jscad/modeling/src/maths/vec3/scale.js"(exports, module) {
|
|
1300
1300
|
"use strict";
|
|
1301
|
-
var
|
|
1301
|
+
var scale2 = (out, vector, amount) => {
|
|
1302
1302
|
out[0] = vector[0] * amount;
|
|
1303
1303
|
out[1] = vector[1] * amount;
|
|
1304
1304
|
out[2] = vector[2] * amount;
|
|
1305
1305
|
return out;
|
|
1306
1306
|
};
|
|
1307
|
-
module.exports =
|
|
1307
|
+
module.exports = scale2;
|
|
1308
1308
|
}
|
|
1309
1309
|
});
|
|
1310
1310
|
|
|
@@ -1377,7 +1377,7 @@ var require_toString2 = __commonJS({
|
|
|
1377
1377
|
var require_transform2 = __commonJS({
|
|
1378
1378
|
"node_modules/@jscad/modeling/src/maths/vec3/transform.js"(exports, module) {
|
|
1379
1379
|
"use strict";
|
|
1380
|
-
var
|
|
1380
|
+
var transform2 = (out, vector, matrix) => {
|
|
1381
1381
|
const x = vector[0];
|
|
1382
1382
|
const y = vector[1];
|
|
1383
1383
|
const z = vector[2];
|
|
@@ -1388,7 +1388,7 @@ var require_transform2 = __commonJS({
|
|
|
1388
1388
|
out[2] = (matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]) / w;
|
|
1389
1389
|
return out;
|
|
1390
1390
|
};
|
|
1391
|
-
module.exports =
|
|
1391
|
+
module.exports = transform2;
|
|
1392
1392
|
}
|
|
1393
1393
|
});
|
|
1394
1394
|
|
|
@@ -1472,10 +1472,10 @@ var require_fromVectorRotation = __commonJS({
|
|
|
1472
1472
|
var require_fromXRotation = __commonJS({
|
|
1473
1473
|
"node_modules/@jscad/modeling/src/maths/mat4/fromXRotation.js"(exports, module) {
|
|
1474
1474
|
"use strict";
|
|
1475
|
-
var { sin, cos } = require_trigonometry();
|
|
1475
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1476
1476
|
var fromXRotation = (out, radians) => {
|
|
1477
|
-
const s =
|
|
1478
|
-
const c =
|
|
1477
|
+
const s = sin2(radians);
|
|
1478
|
+
const c = cos2(radians);
|
|
1479
1479
|
out[0] = 1;
|
|
1480
1480
|
out[1] = 0;
|
|
1481
1481
|
out[2] = 0;
|
|
@@ -1502,10 +1502,10 @@ var require_fromXRotation = __commonJS({
|
|
|
1502
1502
|
var require_fromYRotation = __commonJS({
|
|
1503
1503
|
"node_modules/@jscad/modeling/src/maths/mat4/fromYRotation.js"(exports, module) {
|
|
1504
1504
|
"use strict";
|
|
1505
|
-
var { sin, cos } = require_trigonometry();
|
|
1505
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1506
1506
|
var fromYRotation = (out, radians) => {
|
|
1507
|
-
const s =
|
|
1508
|
-
const c =
|
|
1507
|
+
const s = sin2(radians);
|
|
1508
|
+
const c = cos2(radians);
|
|
1509
1509
|
out[0] = c;
|
|
1510
1510
|
out[1] = 0;
|
|
1511
1511
|
out[2] = -s;
|
|
@@ -1532,10 +1532,10 @@ var require_fromYRotation = __commonJS({
|
|
|
1532
1532
|
var require_fromZRotation = __commonJS({
|
|
1533
1533
|
"node_modules/@jscad/modeling/src/maths/mat4/fromZRotation.js"(exports, module) {
|
|
1534
1534
|
"use strict";
|
|
1535
|
-
var { sin, cos } = require_trigonometry();
|
|
1535
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1536
1536
|
var fromZRotation = (out, radians) => {
|
|
1537
|
-
const s =
|
|
1538
|
-
const c =
|
|
1537
|
+
const s = sin2(radians);
|
|
1538
|
+
const c = cos2(radians);
|
|
1539
1539
|
out[0] = c;
|
|
1540
1540
|
out[1] = s;
|
|
1541
1541
|
out[2] = 0;
|
|
@@ -1687,9 +1687,9 @@ var require_rotate2 = __commonJS({
|
|
|
1687
1687
|
"node_modules/@jscad/modeling/src/maths/mat4/rotate.js"(exports, module) {
|
|
1688
1688
|
"use strict";
|
|
1689
1689
|
var { EPS } = require_constants();
|
|
1690
|
-
var { sin, cos } = require_trigonometry();
|
|
1690
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1691
1691
|
var copy = require_copy2();
|
|
1692
|
-
var
|
|
1692
|
+
var rotate2 = (out, matrix, radians, axis) => {
|
|
1693
1693
|
let [x, y, z] = axis;
|
|
1694
1694
|
const lengthSquared = x * x + y * y + z * z;
|
|
1695
1695
|
if (Math.abs(lengthSquared) < EPS) {
|
|
@@ -1699,8 +1699,8 @@ var require_rotate2 = __commonJS({
|
|
|
1699
1699
|
x *= len;
|
|
1700
1700
|
y *= len;
|
|
1701
1701
|
z *= len;
|
|
1702
|
-
const s =
|
|
1703
|
-
const c =
|
|
1702
|
+
const s = sin2(radians);
|
|
1703
|
+
const c = cos2(radians);
|
|
1704
1704
|
const t = 1 - c;
|
|
1705
1705
|
const a00 = matrix[0];
|
|
1706
1706
|
const a01 = matrix[1];
|
|
@@ -1743,7 +1743,7 @@ var require_rotate2 = __commonJS({
|
|
|
1743
1743
|
}
|
|
1744
1744
|
return out;
|
|
1745
1745
|
};
|
|
1746
|
-
module.exports =
|
|
1746
|
+
module.exports = rotate2;
|
|
1747
1747
|
}
|
|
1748
1748
|
});
|
|
1749
1749
|
|
|
@@ -1751,10 +1751,10 @@ var require_rotate2 = __commonJS({
|
|
|
1751
1751
|
var require_rotateX2 = __commonJS({
|
|
1752
1752
|
"node_modules/@jscad/modeling/src/maths/mat4/rotateX.js"(exports, module) {
|
|
1753
1753
|
"use strict";
|
|
1754
|
-
var { sin, cos } = require_trigonometry();
|
|
1754
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1755
1755
|
var rotateX = (out, matrix, radians) => {
|
|
1756
|
-
const s =
|
|
1757
|
-
const c =
|
|
1756
|
+
const s = sin2(radians);
|
|
1757
|
+
const c = cos2(radians);
|
|
1758
1758
|
const a10 = matrix[4];
|
|
1759
1759
|
const a11 = matrix[5];
|
|
1760
1760
|
const a12 = matrix[6];
|
|
@@ -1791,10 +1791,10 @@ var require_rotateX2 = __commonJS({
|
|
|
1791
1791
|
var require_rotateY2 = __commonJS({
|
|
1792
1792
|
"node_modules/@jscad/modeling/src/maths/mat4/rotateY.js"(exports, module) {
|
|
1793
1793
|
"use strict";
|
|
1794
|
-
var { sin, cos } = require_trigonometry();
|
|
1794
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1795
1795
|
var rotateY = (out, matrix, radians) => {
|
|
1796
|
-
const s =
|
|
1797
|
-
const c =
|
|
1796
|
+
const s = sin2(radians);
|
|
1797
|
+
const c = cos2(radians);
|
|
1798
1798
|
const a00 = matrix[0];
|
|
1799
1799
|
const a01 = matrix[1];
|
|
1800
1800
|
const a02 = matrix[2];
|
|
@@ -1831,10 +1831,10 @@ var require_rotateY2 = __commonJS({
|
|
|
1831
1831
|
var require_rotateZ2 = __commonJS({
|
|
1832
1832
|
"node_modules/@jscad/modeling/src/maths/mat4/rotateZ.js"(exports, module) {
|
|
1833
1833
|
"use strict";
|
|
1834
|
-
var { sin, cos } = require_trigonometry();
|
|
1834
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
1835
1835
|
var rotateZ = (out, matrix, radians) => {
|
|
1836
|
-
const s =
|
|
1837
|
-
const c =
|
|
1836
|
+
const s = sin2(radians);
|
|
1837
|
+
const c = cos2(radians);
|
|
1838
1838
|
const a00 = matrix[0];
|
|
1839
1839
|
const a01 = matrix[1];
|
|
1840
1840
|
const a02 = matrix[2];
|
|
@@ -1871,7 +1871,7 @@ var require_rotateZ2 = __commonJS({
|
|
|
1871
1871
|
var require_scale3 = __commonJS({
|
|
1872
1872
|
"node_modules/@jscad/modeling/src/maths/mat4/scale.js"(exports, module) {
|
|
1873
1873
|
"use strict";
|
|
1874
|
-
var
|
|
1874
|
+
var scale2 = (out, matrix, dimensions) => {
|
|
1875
1875
|
const x = dimensions[0];
|
|
1876
1876
|
const y = dimensions[1];
|
|
1877
1877
|
const z = dimensions[2];
|
|
@@ -1893,7 +1893,7 @@ var require_scale3 = __commonJS({
|
|
|
1893
1893
|
out[15] = matrix[15];
|
|
1894
1894
|
return out;
|
|
1895
1895
|
};
|
|
1896
|
-
module.exports =
|
|
1896
|
+
module.exports = scale2;
|
|
1897
1897
|
}
|
|
1898
1898
|
});
|
|
1899
1899
|
|
|
@@ -1937,7 +1937,7 @@ var require_toString3 = __commonJS({
|
|
|
1937
1937
|
var require_translate = __commonJS({
|
|
1938
1938
|
"node_modules/@jscad/modeling/src/maths/mat4/translate.js"(exports, module) {
|
|
1939
1939
|
"use strict";
|
|
1940
|
-
var
|
|
1940
|
+
var translate4 = (out, matrix, offsets) => {
|
|
1941
1941
|
const x = offsets[0];
|
|
1942
1942
|
const y = offsets[1];
|
|
1943
1943
|
const z = offsets[2];
|
|
@@ -1990,7 +1990,7 @@ var require_translate = __commonJS({
|
|
|
1990
1990
|
}
|
|
1991
1991
|
return out;
|
|
1992
1992
|
};
|
|
1993
|
-
module.exports =
|
|
1993
|
+
module.exports = translate4;
|
|
1994
1994
|
}
|
|
1995
1995
|
});
|
|
1996
1996
|
|
|
@@ -2515,11 +2515,11 @@ var require_transform3 = __commonJS({
|
|
|
2515
2515
|
"node_modules/@jscad/modeling/src/geometries/path2/transform.js"(exports, module) {
|
|
2516
2516
|
"use strict";
|
|
2517
2517
|
var mat4 = require_mat4();
|
|
2518
|
-
var
|
|
2518
|
+
var transform2 = (matrix, geometry) => {
|
|
2519
2519
|
const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms);
|
|
2520
2520
|
return Object.assign({}, geometry, { transforms });
|
|
2521
2521
|
};
|
|
2522
|
-
module.exports =
|
|
2522
|
+
module.exports = transform2;
|
|
2523
2523
|
}
|
|
2524
2524
|
});
|
|
2525
2525
|
|
|
@@ -2992,7 +2992,7 @@ var require_transform4 = __commonJS({
|
|
|
2992
2992
|
"use strict";
|
|
2993
2993
|
var mat4 = require_mat4();
|
|
2994
2994
|
var reverse = require_reverse2();
|
|
2995
|
-
var
|
|
2995
|
+
var transform2 = (matrix, geometry) => {
|
|
2996
2996
|
const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms);
|
|
2997
2997
|
const transformed = Object.assign({}, geometry, { transforms });
|
|
2998
2998
|
if (matrix[0] * matrix[5] - matrix[4] * matrix[1] < 0) {
|
|
@@ -3000,7 +3000,7 @@ var require_transform4 = __commonJS({
|
|
|
3000
3000
|
}
|
|
3001
3001
|
return transformed;
|
|
3002
3002
|
};
|
|
3003
|
-
module.exports =
|
|
3003
|
+
module.exports = transform2;
|
|
3004
3004
|
}
|
|
3005
3005
|
});
|
|
3006
3006
|
|
|
@@ -3058,7 +3058,7 @@ var require_ellipse = __commonJS({
|
|
|
3058
3058
|
var { EPS, TAU } = require_constants();
|
|
3059
3059
|
var vec2 = require_vec2();
|
|
3060
3060
|
var geom2 = require_geom2();
|
|
3061
|
-
var { sin, cos } = require_trigonometry();
|
|
3061
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
3062
3062
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
3063
3063
|
var ellipse = (options) => {
|
|
3064
3064
|
const defaults = {
|
|
@@ -3095,7 +3095,7 @@ var require_ellipse = __commonJS({
|
|
|
3095
3095
|
segments = rotation < TAU ? segments + 1 : segments;
|
|
3096
3096
|
for (let i = 0; i < segments; i++) {
|
|
3097
3097
|
const angle = step * i + startAngle;
|
|
3098
|
-
const point = vec2.fromValues(radius[0] *
|
|
3098
|
+
const point = vec2.fromValues(radius[0] * cos2(angle), radius[1] * sin2(angle));
|
|
3099
3099
|
vec2.add(point, centerv, point);
|
|
3100
3100
|
points.push(point);
|
|
3101
3101
|
}
|
|
@@ -3405,7 +3405,7 @@ var require_Face = __commonJS({
|
|
|
3405
3405
|
var dot = require_dot2();
|
|
3406
3406
|
var length = require_length2();
|
|
3407
3407
|
var normalize = require_normalize2();
|
|
3408
|
-
var
|
|
3408
|
+
var scale2 = require_scale2();
|
|
3409
3409
|
var subtract3 = require_subtract2();
|
|
3410
3410
|
var HalfEdge = require_HalfEdge();
|
|
3411
3411
|
var VISIBLE = 0;
|
|
@@ -3453,7 +3453,7 @@ var require_Face = __commonJS({
|
|
|
3453
3453
|
this.nVertices += 1;
|
|
3454
3454
|
}
|
|
3455
3455
|
this.area = length(this.normal);
|
|
3456
|
-
this.normal =
|
|
3456
|
+
this.normal = scale2(this.normal, this.normal, 1 / this.area);
|
|
3457
3457
|
}
|
|
3458
3458
|
computeNormalMinArea(minArea) {
|
|
3459
3459
|
this.computeNormal();
|
|
@@ -3473,9 +3473,9 @@ var require_Face = __commonJS({
|
|
|
3473
3473
|
const p2 = maxEdge.head().point;
|
|
3474
3474
|
const maxVector = subtract3([], p2, p1);
|
|
3475
3475
|
const maxLength = Math.sqrt(maxSquaredLength);
|
|
3476
|
-
|
|
3476
|
+
scale2(maxVector, maxVector, 1 / maxLength);
|
|
3477
3477
|
const maxProjection = dot(this.normal, maxVector);
|
|
3478
|
-
|
|
3478
|
+
scale2(maxVector, maxVector, -maxProjection);
|
|
3479
3479
|
add(this.normal, this.normal, maxVector);
|
|
3480
3480
|
normalize(this.normal, this.normal);
|
|
3481
3481
|
}
|
|
@@ -3487,7 +3487,7 @@ var require_Face = __commonJS({
|
|
|
3487
3487
|
add(this.centroid, this.centroid, edge.head().point);
|
|
3488
3488
|
edge = edge.next;
|
|
3489
3489
|
} while (edge !== this.edge);
|
|
3490
|
-
|
|
3490
|
+
scale2(this.centroid, this.centroid, 1 / this.nVertices);
|
|
3491
3491
|
}
|
|
3492
3492
|
computeNormalAndCentroid(minArea) {
|
|
3493
3493
|
if (typeof minArea !== "undefined") {
|
|
@@ -4518,7 +4518,7 @@ var require_transform5 = __commonJS({
|
|
|
4518
4518
|
var vec3 = require_vec3();
|
|
4519
4519
|
var fromPoints = require_fromPoints4();
|
|
4520
4520
|
var flip = require_flip();
|
|
4521
|
-
var
|
|
4521
|
+
var transform2 = (out, plane, matrix) => {
|
|
4522
4522
|
const ismirror = mat4.isMirroring(matrix);
|
|
4523
4523
|
const r = vec3.orthogonal(vec3.create(), plane);
|
|
4524
4524
|
const u = vec3.cross(r, plane, r);
|
|
@@ -4536,7 +4536,7 @@ var require_transform5 = __commonJS({
|
|
|
4536
4536
|
}
|
|
4537
4537
|
return out;
|
|
4538
4538
|
};
|
|
4539
|
-
module.exports =
|
|
4539
|
+
module.exports = transform2;
|
|
4540
4540
|
}
|
|
4541
4541
|
});
|
|
4542
4542
|
|
|
@@ -4788,7 +4788,7 @@ var require_fromScalar3 = __commonJS({
|
|
|
4788
4788
|
var require_transform6 = __commonJS({
|
|
4789
4789
|
"node_modules/@jscad/modeling/src/maths/vec4/transform.js"(exports, module) {
|
|
4790
4790
|
"use strict";
|
|
4791
|
-
var
|
|
4791
|
+
var transform2 = (out, vector, matrix) => {
|
|
4792
4792
|
const [x, y, z, w] = vector;
|
|
4793
4793
|
out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12] * w;
|
|
4794
4794
|
out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13] * w;
|
|
@@ -4796,7 +4796,7 @@ var require_transform6 = __commonJS({
|
|
|
4796
4796
|
out[3] = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15] * w;
|
|
4797
4797
|
return out;
|
|
4798
4798
|
};
|
|
4799
|
-
module.exports =
|
|
4799
|
+
module.exports = transform2;
|
|
4800
4800
|
}
|
|
4801
4801
|
});
|
|
4802
4802
|
|
|
@@ -4917,14 +4917,14 @@ var require_transform7 = __commonJS({
|
|
|
4917
4917
|
var mat4 = require_mat4();
|
|
4918
4918
|
var vec3 = require_vec3();
|
|
4919
4919
|
var create = require_create7();
|
|
4920
|
-
var
|
|
4920
|
+
var transform2 = (matrix, polygon2) => {
|
|
4921
4921
|
const vertices = polygon2.vertices.map((vertex) => vec3.transform(vec3.create(), vertex, matrix));
|
|
4922
4922
|
if (mat4.isMirroring(matrix)) {
|
|
4923
4923
|
vertices.reverse();
|
|
4924
4924
|
}
|
|
4925
4925
|
return create(vertices);
|
|
4926
4926
|
};
|
|
4927
|
-
module.exports =
|
|
4927
|
+
module.exports = transform2;
|
|
4928
4928
|
}
|
|
4929
4929
|
});
|
|
4930
4930
|
|
|
@@ -5231,11 +5231,11 @@ var require_transform8 = __commonJS({
|
|
|
5231
5231
|
"node_modules/@jscad/modeling/src/geometries/geom3/transform.js"(exports, module) {
|
|
5232
5232
|
"use strict";
|
|
5233
5233
|
var mat4 = require_mat4();
|
|
5234
|
-
var
|
|
5234
|
+
var transform2 = (matrix, geometry) => {
|
|
5235
5235
|
const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms);
|
|
5236
5236
|
return Object.assign({}, geometry, { transforms });
|
|
5237
5237
|
};
|
|
5238
|
-
module.exports =
|
|
5238
|
+
module.exports = transform2;
|
|
5239
5239
|
}
|
|
5240
5240
|
});
|
|
5241
5241
|
|
|
@@ -5377,7 +5377,7 @@ var require_cylinderElliptic = __commonJS({
|
|
|
5377
5377
|
var vec3 = require_vec3();
|
|
5378
5378
|
var geom3 = require_geom3();
|
|
5379
5379
|
var poly3 = require_poly3();
|
|
5380
|
-
var { sin, cos } = require_trigonometry();
|
|
5380
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
5381
5381
|
var { isGT, isGTE, isNumberArray } = require_commonChecks();
|
|
5382
5382
|
var cylinderElliptic = (options) => {
|
|
5383
5383
|
const defaults = {
|
|
@@ -5423,8 +5423,8 @@ var require_cylinderElliptic = __commonJS({
|
|
|
5423
5423
|
const v3 = vec3.create();
|
|
5424
5424
|
const point = (stack, slice, radius) => {
|
|
5425
5425
|
const angle = slice * rotation + startAngle;
|
|
5426
|
-
vec3.scale(v1, axisX, radius[0] *
|
|
5427
|
-
vec3.scale(v2, axisY, radius[1] *
|
|
5426
|
+
vec3.scale(v1, axisX, radius[0] * cos2(angle));
|
|
5427
|
+
vec3.scale(v2, axisY, radius[1] * sin2(angle));
|
|
5428
5428
|
vec3.add(v1, v1, v2);
|
|
5429
5429
|
vec3.scale(v3, ray, stack);
|
|
5430
5430
|
vec3.add(v3, v3, start);
|
|
@@ -5509,7 +5509,7 @@ var require_ellipsoid = __commonJS({
|
|
|
5509
5509
|
var vec3 = require_vec3();
|
|
5510
5510
|
var geom3 = require_geom3();
|
|
5511
5511
|
var poly3 = require_poly3();
|
|
5512
|
-
var { sin, cos } = require_trigonometry();
|
|
5512
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
5513
5513
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
5514
5514
|
var ellipsoid = (options) => {
|
|
5515
5515
|
const defaults = {
|
|
@@ -5534,13 +5534,13 @@ var require_ellipsoid = __commonJS({
|
|
|
5534
5534
|
const p2 = vec3.create();
|
|
5535
5535
|
for (let slice1 = 0; slice1 <= segments; slice1++) {
|
|
5536
5536
|
const angle = TAU * slice1 / segments;
|
|
5537
|
-
const cylinderpoint = vec3.add(vec3.create(), vec3.scale(p1, xvector,
|
|
5537
|
+
const cylinderpoint = vec3.add(vec3.create(), vec3.scale(p1, xvector, cos2(angle)), vec3.scale(p2, yvector, sin2(angle)));
|
|
5538
5538
|
if (slice1 > 0) {
|
|
5539
5539
|
let prevcospitch, prevsinpitch;
|
|
5540
5540
|
for (let slice2 = 0; slice2 <= qsegments; slice2++) {
|
|
5541
5541
|
const pitch = TAU / 4 * slice2 / qsegments;
|
|
5542
|
-
const cospitch =
|
|
5543
|
-
const sinpitch =
|
|
5542
|
+
const cospitch = cos2(pitch);
|
|
5543
|
+
const sinpitch = sin2(pitch);
|
|
5544
5544
|
if (slice2 > 0) {
|
|
5545
5545
|
let points = [];
|
|
5546
5546
|
let point;
|
|
@@ -5864,13 +5864,13 @@ var require_roundedCuboid = __commonJS({
|
|
|
5864
5864
|
var vec3 = require_vec3();
|
|
5865
5865
|
var geom3 = require_geom3();
|
|
5866
5866
|
var poly3 = require_poly3();
|
|
5867
|
-
var { sin, cos } = require_trigonometry();
|
|
5867
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
5868
5868
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
5869
5869
|
var cuboid4 = require_cuboid();
|
|
5870
5870
|
var createCorners = (center, size, radius, segments, slice, positive) => {
|
|
5871
5871
|
const pitch = TAU / 4 * slice / segments;
|
|
5872
|
-
const cospitch =
|
|
5873
|
-
const sinpitch =
|
|
5872
|
+
const cospitch = cos2(pitch);
|
|
5873
|
+
const sinpitch = sin2(pitch);
|
|
5874
5874
|
const layersegments = segments - slice;
|
|
5875
5875
|
let layerradius = radius * cospitch;
|
|
5876
5876
|
let layeroffset = size[2] - (radius - radius * sinpitch);
|
|
@@ -6016,7 +6016,7 @@ var require_roundedCylinder = __commonJS({
|
|
|
6016
6016
|
var vec3 = require_vec3();
|
|
6017
6017
|
var geom3 = require_geom3();
|
|
6018
6018
|
var poly3 = require_poly3();
|
|
6019
|
-
var { sin, cos } = require_trigonometry();
|
|
6019
|
+
var { sin: sin2, cos: cos2 } = require_trigonometry();
|
|
6020
6020
|
var { isGTE, isNumberArray } = require_commonChecks();
|
|
6021
6021
|
var cylinder3 = require_cylinder();
|
|
6022
6022
|
var roundedCylinder = (options) => {
|
|
@@ -6063,7 +6063,7 @@ var require_roundedCylinder = __commonJS({
|
|
|
6063
6063
|
let prevcylinderpoint;
|
|
6064
6064
|
for (let slice1 = 0; slice1 <= segments; slice1++) {
|
|
6065
6065
|
const angle = TAU * slice1 / segments;
|
|
6066
|
-
const cylinderpoint = vec3.add(vec3.create(), vec3.scale(v1, xvector,
|
|
6066
|
+
const cylinderpoint = vec3.add(vec3.create(), vec3.scale(v1, xvector, cos2(angle)), vec3.scale(v2, yvector, sin2(angle)));
|
|
6067
6067
|
if (slice1 > 0) {
|
|
6068
6068
|
let points = [];
|
|
6069
6069
|
points.push(vec3.add(vec3.create(), start, cylinderpoint));
|
|
@@ -6074,8 +6074,8 @@ var require_roundedCylinder = __commonJS({
|
|
|
6074
6074
|
let prevcospitch, prevsinpitch;
|
|
6075
6075
|
for (let slice2 = 0; slice2 <= qsegments; slice2++) {
|
|
6076
6076
|
const pitch = TAU / 4 * slice2 / qsegments;
|
|
6077
|
-
const cospitch =
|
|
6078
|
-
const sinpitch =
|
|
6077
|
+
const cospitch = cos2(pitch);
|
|
6078
|
+
const sinpitch = sin2(pitch);
|
|
6079
6079
|
if (slice2 > 0) {
|
|
6080
6080
|
points = [];
|
|
6081
6081
|
let point;
|
|
@@ -6792,10 +6792,10 @@ var require_eliminateHoles = __commonJS({
|
|
|
6792
6792
|
p = m;
|
|
6793
6793
|
do {
|
|
6794
6794
|
if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
|
|
6795
|
-
const
|
|
6796
|
-
if (locallyInside(p, hole) && (
|
|
6795
|
+
const tan2 = Math.abs(hy - p.y) / (hx - p.x);
|
|
6796
|
+
if (locallyInside(p, hole) && (tan2 < tanMin || tan2 === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {
|
|
6797
6797
|
m = p;
|
|
6798
|
-
tanMin =
|
|
6798
|
+
tanMin = tan2;
|
|
6799
6799
|
}
|
|
6800
6800
|
}
|
|
6801
6801
|
p = p.next;
|
|
@@ -7346,11 +7346,11 @@ var require_transform9 = __commonJS({
|
|
|
7346
7346
|
"use strict";
|
|
7347
7347
|
var vec3 = require_vec3();
|
|
7348
7348
|
var create = require_create9();
|
|
7349
|
-
var
|
|
7349
|
+
var transform2 = (matrix, slice) => {
|
|
7350
7350
|
const edges = slice.edges.map((edge) => [vec3.transform(vec3.create(), edge[0], matrix), vec3.transform(vec3.create(), edge[1], matrix)]);
|
|
7351
7351
|
return create(edges);
|
|
7352
7352
|
};
|
|
7353
|
-
module.exports =
|
|
7353
|
+
module.exports = transform2;
|
|
7354
7354
|
}
|
|
7355
7355
|
});
|
|
7356
7356
|
|
|
@@ -7660,7 +7660,7 @@ var require_rotate3 = __commonJS({
|
|
|
7660
7660
|
var geom2 = require_geom2();
|
|
7661
7661
|
var geom3 = require_geom3();
|
|
7662
7662
|
var path2 = require_path2();
|
|
7663
|
-
var
|
|
7663
|
+
var rotate2 = (angles, ...objects) => {
|
|
7664
7664
|
if (!Array.isArray(angles)) throw new Error("angles must be an array");
|
|
7665
7665
|
objects = flatten(objects);
|
|
7666
7666
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
@@ -7678,11 +7678,11 @@ var require_rotate3 = __commonJS({
|
|
|
7678
7678
|
});
|
|
7679
7679
|
return results.length === 1 ? results[0] : results;
|
|
7680
7680
|
};
|
|
7681
|
-
var rotateX = (angle, ...objects) =>
|
|
7682
|
-
var rotateY = (angle, ...objects) =>
|
|
7683
|
-
var rotateZ = (angle, ...objects) =>
|
|
7681
|
+
var rotateX = (angle, ...objects) => rotate2([angle, 0, 0], objects);
|
|
7682
|
+
var rotateY = (angle, ...objects) => rotate2([0, angle, 0], objects);
|
|
7683
|
+
var rotateZ = (angle, ...objects) => rotate2([0, 0, angle], objects);
|
|
7684
7684
|
module.exports = {
|
|
7685
|
-
rotate,
|
|
7685
|
+
rotate: rotate2,
|
|
7686
7686
|
rotateX,
|
|
7687
7687
|
rotateY,
|
|
7688
7688
|
rotateZ
|
|
@@ -7699,7 +7699,7 @@ var require_translate2 = __commonJS({
|
|
|
7699
7699
|
var geom2 = require_geom2();
|
|
7700
7700
|
var geom3 = require_geom3();
|
|
7701
7701
|
var path2 = require_path2();
|
|
7702
|
-
var
|
|
7702
|
+
var translate4 = (offset, ...objects) => {
|
|
7703
7703
|
if (!Array.isArray(offset)) throw new Error("offset must be an array");
|
|
7704
7704
|
objects = flatten(objects);
|
|
7705
7705
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
@@ -7714,11 +7714,11 @@ var require_translate2 = __commonJS({
|
|
|
7714
7714
|
});
|
|
7715
7715
|
return results.length === 1 ? results[0] : results;
|
|
7716
7716
|
};
|
|
7717
|
-
var translateX = (offset, ...objects) =>
|
|
7718
|
-
var translateY = (offset, ...objects) =>
|
|
7719
|
-
var translateZ = (offset, ...objects) =>
|
|
7717
|
+
var translateX = (offset, ...objects) => translate4([offset, 0, 0], objects);
|
|
7718
|
+
var translateY = (offset, ...objects) => translate4([0, offset, 0], objects);
|
|
7719
|
+
var translateZ = (offset, ...objects) => translate4([0, 0, offset], objects);
|
|
7720
7720
|
module.exports = {
|
|
7721
|
-
translate:
|
|
7721
|
+
translate: translate4,
|
|
7722
7722
|
translateX,
|
|
7723
7723
|
translateY,
|
|
7724
7724
|
translateZ
|
|
@@ -7732,8 +7732,8 @@ var require_torus = __commonJS({
|
|
|
7732
7732
|
"use strict";
|
|
7733
7733
|
var { TAU } = require_constants();
|
|
7734
7734
|
var extrudeRotate = require_extrudeRotate();
|
|
7735
|
-
var { rotate } = require_rotate3();
|
|
7736
|
-
var { translate:
|
|
7735
|
+
var { rotate: rotate2 } = require_rotate3();
|
|
7736
|
+
var { translate: translate4 } = require_translate2();
|
|
7737
7737
|
var circle = require_circle();
|
|
7738
7738
|
var { isGT, isGTE } = require_commonChecks();
|
|
7739
7739
|
var torus = (options) => {
|
|
@@ -7756,9 +7756,9 @@ var require_torus = __commonJS({
|
|
|
7756
7756
|
if (innerRadius >= outerRadius) throw new Error("inner circle is too large to rotate about the outer circle");
|
|
7757
7757
|
let innerCircle = circle({ radius: innerRadius, segments: innerSegments });
|
|
7758
7758
|
if (innerRotation !== 0) {
|
|
7759
|
-
innerCircle =
|
|
7759
|
+
innerCircle = rotate2([0, 0, innerRotation], innerCircle);
|
|
7760
7760
|
}
|
|
7761
|
-
innerCircle =
|
|
7761
|
+
innerCircle = translate4([outerRadius, 0], innerCircle);
|
|
7762
7762
|
const extrudeOptions = {
|
|
7763
7763
|
startAngle,
|
|
7764
7764
|
angle: outerRotation,
|
|
@@ -8687,14 +8687,14 @@ var require_transform10 = __commonJS({
|
|
|
8687
8687
|
var fromPoints = require_fromPoints7();
|
|
8688
8688
|
var origin = require_origin();
|
|
8689
8689
|
var direction = require_direction();
|
|
8690
|
-
var
|
|
8690
|
+
var transform2 = (out, line2, matrix) => {
|
|
8691
8691
|
const org = origin(line2);
|
|
8692
8692
|
const dir = direction(line2);
|
|
8693
8693
|
vec2.transform(org, org, matrix);
|
|
8694
8694
|
vec2.transform(dir, dir, matrix);
|
|
8695
8695
|
return fromPoints(out, org, dir);
|
|
8696
8696
|
};
|
|
8697
|
-
module.exports =
|
|
8697
|
+
module.exports = transform2;
|
|
8698
8698
|
}
|
|
8699
8699
|
});
|
|
8700
8700
|
|
|
@@ -10922,7 +10922,7 @@ var require_align = __commonJS({
|
|
|
10922
10922
|
var flatten = require_flatten();
|
|
10923
10923
|
var padArrayToLength = require_padArrayToLength();
|
|
10924
10924
|
var measureAggregateBoundingBox = require_measureAggregateBoundingBox();
|
|
10925
|
-
var { translate:
|
|
10925
|
+
var { translate: translate4 } = require_translate2();
|
|
10926
10926
|
var validateOptions = (options) => {
|
|
10927
10927
|
if (!Array.isArray(options.modes) || options.modes.length > 3) throw new Error("align(): modes must be an array of length <= 3");
|
|
10928
10928
|
options.modes = padArrayToLength(options.modes, "none", 3);
|
|
@@ -10959,7 +10959,7 @@ var require_align = __commonJS({
|
|
|
10959
10959
|
translation[i] = relativeTo[i] - bounds[0][i];
|
|
10960
10960
|
}
|
|
10961
10961
|
}
|
|
10962
|
-
return
|
|
10962
|
+
return translate4(translation, geometry);
|
|
10963
10963
|
};
|
|
10964
10964
|
var align = (options, ...geometries) => {
|
|
10965
10965
|
const defaults = {
|
|
@@ -10996,7 +10996,7 @@ var require_center = __commonJS({
|
|
|
10996
10996
|
var geom3 = require_geom3();
|
|
10997
10997
|
var path2 = require_path2();
|
|
10998
10998
|
var measureBoundingBox = require_measureBoundingBox2();
|
|
10999
|
-
var { translate:
|
|
10999
|
+
var { translate: translate4 } = require_translate2();
|
|
11000
11000
|
var centerGeometry = (options, object) => {
|
|
11001
11001
|
const defaults = {
|
|
11002
11002
|
axes: [true, true, true],
|
|
@@ -11008,7 +11008,7 @@ var require_center = __commonJS({
|
|
|
11008
11008
|
if (axes[0]) offset[0] = relativeTo[0] - (bounds[0][0] + (bounds[1][0] - bounds[0][0]) / 2);
|
|
11009
11009
|
if (axes[1]) offset[1] = relativeTo[1] - (bounds[0][1] + (bounds[1][1] - bounds[0][1]) / 2);
|
|
11010
11010
|
if (axes[2]) offset[2] = relativeTo[2] - (bounds[0][2] + (bounds[1][2] - bounds[0][2]) / 2);
|
|
11011
|
-
return
|
|
11011
|
+
return translate4(offset, object);
|
|
11012
11012
|
};
|
|
11013
11013
|
var center = (options, ...objects) => {
|
|
11014
11014
|
const defaults = {
|
|
@@ -11050,7 +11050,7 @@ var require_scale4 = __commonJS({
|
|
|
11050
11050
|
var geom2 = require_geom2();
|
|
11051
11051
|
var geom3 = require_geom3();
|
|
11052
11052
|
var path2 = require_path2();
|
|
11053
|
-
var
|
|
11053
|
+
var scale2 = (factors, ...objects) => {
|
|
11054
11054
|
if (!Array.isArray(factors)) throw new Error("factors must be an array");
|
|
11055
11055
|
objects = flatten(objects);
|
|
11056
11056
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
@@ -11066,11 +11066,11 @@ var require_scale4 = __commonJS({
|
|
|
11066
11066
|
});
|
|
11067
11067
|
return results.length === 1 ? results[0] : results;
|
|
11068
11068
|
};
|
|
11069
|
-
var scaleX = (factor, ...objects) =>
|
|
11070
|
-
var scaleY = (factor, ...objects) =>
|
|
11071
|
-
var scaleZ = (factor, ...objects) =>
|
|
11069
|
+
var scaleX = (factor, ...objects) => scale2([factor, 1, 1], objects);
|
|
11070
|
+
var scaleY = (factor, ...objects) => scale2([1, factor, 1], objects);
|
|
11071
|
+
var scaleZ = (factor, ...objects) => scale2([1, 1, factor], objects);
|
|
11072
11072
|
module.exports = {
|
|
11073
|
-
scale,
|
|
11073
|
+
scale: scale2,
|
|
11074
11074
|
scaleX,
|
|
11075
11075
|
scaleY,
|
|
11076
11076
|
scaleZ
|
|
@@ -11086,7 +11086,7 @@ var require_transform11 = __commonJS({
|
|
|
11086
11086
|
var geom2 = require_geom2();
|
|
11087
11087
|
var geom3 = require_geom3();
|
|
11088
11088
|
var path2 = require_path2();
|
|
11089
|
-
var
|
|
11089
|
+
var transform2 = (matrix, ...objects) => {
|
|
11090
11090
|
objects = flatten(objects);
|
|
11091
11091
|
if (objects.length === 0) throw new Error("wrong number of arguments");
|
|
11092
11092
|
const results = objects.map((object) => {
|
|
@@ -11097,7 +11097,7 @@ var require_transform11 = __commonJS({
|
|
|
11097
11097
|
});
|
|
11098
11098
|
return results.length === 1 ? results[0] : results;
|
|
11099
11099
|
};
|
|
11100
|
-
module.exports =
|
|
11100
|
+
module.exports = transform2;
|
|
11101
11101
|
}
|
|
11102
11102
|
});
|
|
11103
11103
|
|
|
@@ -12259,7 +12259,7 @@ var require_transform12 = __commonJS({
|
|
|
12259
12259
|
"use strict";
|
|
12260
12260
|
var vec3 = require_vec3();
|
|
12261
12261
|
var fromPointAndDirection = require_fromPointAndDirection();
|
|
12262
|
-
var
|
|
12262
|
+
var transform2 = (out, line2, matrix) => {
|
|
12263
12263
|
const point = line2[0];
|
|
12264
12264
|
const direction = line2[1];
|
|
12265
12265
|
const pointPlusDirection = vec3.add(vec3.create(), point, direction);
|
|
@@ -12268,7 +12268,7 @@ var require_transform12 = __commonJS({
|
|
|
12268
12268
|
const newdirection = vec3.subtract(newPointPlusDirection, newPointPlusDirection, newpoint);
|
|
12269
12269
|
return fromPointAndDirection(out, newpoint, newdirection);
|
|
12270
12270
|
};
|
|
12271
|
-
module.exports =
|
|
12271
|
+
module.exports = transform2;
|
|
12272
12272
|
}
|
|
12273
12273
|
});
|
|
12274
12274
|
|
|
@@ -15509,15 +15509,15 @@ var GLTFWriter = class {
|
|
|
15509
15509
|
if (options.trs) {
|
|
15510
15510
|
const rotation = object.quaternion.toArray();
|
|
15511
15511
|
const position = object.position.toArray();
|
|
15512
|
-
const
|
|
15512
|
+
const scale2 = object.scale.toArray();
|
|
15513
15513
|
if (!equalArray(rotation, [0, 0, 0, 1])) {
|
|
15514
15514
|
nodeDef.rotation = rotation;
|
|
15515
15515
|
}
|
|
15516
15516
|
if (!equalArray(position, [0, 0, 0])) {
|
|
15517
15517
|
nodeDef.translation = position;
|
|
15518
15518
|
}
|
|
15519
|
-
if (!equalArray(
|
|
15520
|
-
nodeDef.scale =
|
|
15519
|
+
if (!equalArray(scale2, [1, 1, 1])) {
|
|
15520
|
+
nodeDef.scale = scale2;
|
|
15521
15521
|
}
|
|
15522
15522
|
} else {
|
|
15523
15523
|
if (object.matrixAutoUpdate) {
|
|
@@ -16982,7 +16982,7 @@ import { Canvas, useFrame as useFrame2 } from "@react-three/fiber";
|
|
|
16982
16982
|
// package.json
|
|
16983
16983
|
var package_default = {
|
|
16984
16984
|
name: "@tscircuit/3d-viewer",
|
|
16985
|
-
version: "0.0.
|
|
16985
|
+
version: "0.0.201",
|
|
16986
16986
|
main: "./dist/index.js",
|
|
16987
16987
|
module: "./dist/index.js",
|
|
16988
16988
|
type: "module",
|
|
@@ -17512,11 +17512,224 @@ var import_expansions = __toESM(require_expansions(), 1);
|
|
|
17512
17512
|
|
|
17513
17513
|
// src/geoms/create-geoms-for-silkscreen-text.ts
|
|
17514
17514
|
var import_text = __toESM(require_text(), 1);
|
|
17515
|
+
|
|
17516
|
+
// node_modules/transformation-matrix/src/applyToPoint.js
|
|
17517
|
+
function applyToPoint(matrix, point) {
|
|
17518
|
+
return Array.isArray(point) ? [
|
|
17519
|
+
matrix.a * point[0] + matrix.c * point[1] + matrix.e,
|
|
17520
|
+
matrix.b * point[0] + matrix.d * point[1] + matrix.f
|
|
17521
|
+
] : {
|
|
17522
|
+
x: matrix.a * point.x + matrix.c * point.y + matrix.e,
|
|
17523
|
+
y: matrix.b * point.x + matrix.d * point.y + matrix.f
|
|
17524
|
+
};
|
|
17525
|
+
}
|
|
17526
|
+
|
|
17527
|
+
// node_modules/transformation-matrix/src/utils.js
|
|
17528
|
+
function isUndefined(val) {
|
|
17529
|
+
return typeof val === "undefined";
|
|
17530
|
+
}
|
|
17531
|
+
|
|
17532
|
+
// node_modules/transformation-matrix/src/translate.js
|
|
17533
|
+
function translate2(tx, ty = 0) {
|
|
17534
|
+
return {
|
|
17535
|
+
a: 1,
|
|
17536
|
+
c: 0,
|
|
17537
|
+
e: tx,
|
|
17538
|
+
b: 0,
|
|
17539
|
+
d: 1,
|
|
17540
|
+
f: ty
|
|
17541
|
+
};
|
|
17542
|
+
}
|
|
17543
|
+
|
|
17544
|
+
// node_modules/transformation-matrix/src/transform.js
|
|
17545
|
+
function transform(...matrices) {
|
|
17546
|
+
matrices = Array.isArray(matrices[0]) ? matrices[0] : matrices;
|
|
17547
|
+
const multiply = (m1, m2) => {
|
|
17548
|
+
return {
|
|
17549
|
+
a: m1.a * m2.a + m1.c * m2.b,
|
|
17550
|
+
c: m1.a * m2.c + m1.c * m2.d,
|
|
17551
|
+
e: m1.a * m2.e + m1.c * m2.f + m1.e,
|
|
17552
|
+
b: m1.b * m2.a + m1.d * m2.b,
|
|
17553
|
+
d: m1.b * m2.c + m1.d * m2.d,
|
|
17554
|
+
f: m1.b * m2.e + m1.d * m2.f + m1.f
|
|
17555
|
+
};
|
|
17556
|
+
};
|
|
17557
|
+
switch (matrices.length) {
|
|
17558
|
+
case 0:
|
|
17559
|
+
throw new Error("no matrices provided");
|
|
17560
|
+
case 1:
|
|
17561
|
+
return matrices[0];
|
|
17562
|
+
case 2:
|
|
17563
|
+
return multiply(matrices[0], matrices[1]);
|
|
17564
|
+
default: {
|
|
17565
|
+
const [m1, m2, ...rest] = matrices;
|
|
17566
|
+
const m = multiply(m1, m2);
|
|
17567
|
+
return transform(m, ...rest);
|
|
17568
|
+
}
|
|
17569
|
+
}
|
|
17570
|
+
}
|
|
17571
|
+
function compose(...matrices) {
|
|
17572
|
+
return transform(...matrices);
|
|
17573
|
+
}
|
|
17574
|
+
|
|
17575
|
+
// node_modules/transformation-matrix/src/rotate.js
|
|
17576
|
+
var { cos, sin, PI } = Math;
|
|
17577
|
+
function rotate(angle, cx, cy) {
|
|
17578
|
+
const cosAngle = cos(angle);
|
|
17579
|
+
const sinAngle = sin(angle);
|
|
17580
|
+
const rotationMatrix = {
|
|
17581
|
+
a: cosAngle,
|
|
17582
|
+
c: -sinAngle,
|
|
17583
|
+
e: 0,
|
|
17584
|
+
b: sinAngle,
|
|
17585
|
+
d: cosAngle,
|
|
17586
|
+
f: 0
|
|
17587
|
+
};
|
|
17588
|
+
if (isUndefined(cx) || isUndefined(cy)) {
|
|
17589
|
+
return rotationMatrix;
|
|
17590
|
+
}
|
|
17591
|
+
return transform([
|
|
17592
|
+
translate2(cx, cy),
|
|
17593
|
+
rotationMatrix,
|
|
17594
|
+
translate2(-cx, -cy)
|
|
17595
|
+
]);
|
|
17596
|
+
}
|
|
17597
|
+
|
|
17598
|
+
// node_modules/transformation-matrix/src/skew.js
|
|
17599
|
+
var { tan } = Math;
|
|
17600
|
+
|
|
17601
|
+
// node_modules/transformation-matrix/src/fromTransformAttribute.autogenerated.js
|
|
17602
|
+
function peg$subclass(child, parent) {
|
|
17603
|
+
function C() {
|
|
17604
|
+
this.constructor = child;
|
|
17605
|
+
}
|
|
17606
|
+
C.prototype = parent.prototype;
|
|
17607
|
+
child.prototype = new C();
|
|
17608
|
+
}
|
|
17609
|
+
function peg$SyntaxError(message, expected, found, location) {
|
|
17610
|
+
var self = Error.call(this, message);
|
|
17611
|
+
if (Object.setPrototypeOf) {
|
|
17612
|
+
Object.setPrototypeOf(self, peg$SyntaxError.prototype);
|
|
17613
|
+
}
|
|
17614
|
+
self.expected = expected;
|
|
17615
|
+
self.found = found;
|
|
17616
|
+
self.location = location;
|
|
17617
|
+
self.name = "SyntaxError";
|
|
17618
|
+
return self;
|
|
17619
|
+
}
|
|
17620
|
+
peg$subclass(peg$SyntaxError, Error);
|
|
17621
|
+
function peg$padEnd(str, targetLength, padString) {
|
|
17622
|
+
padString = padString || " ";
|
|
17623
|
+
if (str.length > targetLength) {
|
|
17624
|
+
return str;
|
|
17625
|
+
}
|
|
17626
|
+
targetLength -= str.length;
|
|
17627
|
+
padString += padString.repeat(targetLength);
|
|
17628
|
+
return str + padString.slice(0, targetLength);
|
|
17629
|
+
}
|
|
17630
|
+
peg$SyntaxError.prototype.format = function(sources) {
|
|
17631
|
+
var str = "Error: " + this.message;
|
|
17632
|
+
if (this.location) {
|
|
17633
|
+
var src = null;
|
|
17634
|
+
var k;
|
|
17635
|
+
for (k = 0; k < sources.length; k++) {
|
|
17636
|
+
if (sources[k].source === this.location.source) {
|
|
17637
|
+
src = sources[k].text.split(/\r\n|\n|\r/g);
|
|
17638
|
+
break;
|
|
17639
|
+
}
|
|
17640
|
+
}
|
|
17641
|
+
var s = this.location.start;
|
|
17642
|
+
var offset_s = this.location.source && typeof this.location.source.offset === "function" ? this.location.source.offset(s) : s;
|
|
17643
|
+
var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
|
|
17644
|
+
if (src) {
|
|
17645
|
+
var e = this.location.end;
|
|
17646
|
+
var filler = peg$padEnd("", offset_s.line.toString().length, " ");
|
|
17647
|
+
var line2 = src[s.line - 1];
|
|
17648
|
+
var last = s.line === e.line ? e.column : line2.length + 1;
|
|
17649
|
+
var hatLen = last - s.column || 1;
|
|
17650
|
+
str += "\n --> " + loc + "\n" + filler + " |\n" + offset_s.line + " | " + line2 + "\n" + filler + " | " + peg$padEnd("", s.column - 1, " ") + peg$padEnd("", hatLen, "^");
|
|
17651
|
+
} else {
|
|
17652
|
+
str += "\n at " + loc;
|
|
17653
|
+
}
|
|
17654
|
+
}
|
|
17655
|
+
return str;
|
|
17656
|
+
};
|
|
17657
|
+
peg$SyntaxError.buildMessage = function(expected, found) {
|
|
17658
|
+
var DESCRIBE_EXPECTATION_FNS = {
|
|
17659
|
+
literal: function(expectation) {
|
|
17660
|
+
return '"' + literalEscape(expectation.text) + '"';
|
|
17661
|
+
},
|
|
17662
|
+
class: function(expectation) {
|
|
17663
|
+
var escapedParts = expectation.parts.map(function(part) {
|
|
17664
|
+
return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
|
|
17665
|
+
});
|
|
17666
|
+
return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
|
|
17667
|
+
},
|
|
17668
|
+
any: function() {
|
|
17669
|
+
return "any character";
|
|
17670
|
+
},
|
|
17671
|
+
end: function() {
|
|
17672
|
+
return "end of input";
|
|
17673
|
+
},
|
|
17674
|
+
other: function(expectation) {
|
|
17675
|
+
return expectation.description;
|
|
17676
|
+
}
|
|
17677
|
+
};
|
|
17678
|
+
function hex(ch) {
|
|
17679
|
+
return ch.charCodeAt(0).toString(16).toUpperCase();
|
|
17680
|
+
}
|
|
17681
|
+
function literalEscape(s) {
|
|
17682
|
+
return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
|
|
17683
|
+
return "\\x0" + hex(ch);
|
|
17684
|
+
}).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
|
|
17685
|
+
return "\\x" + hex(ch);
|
|
17686
|
+
});
|
|
17687
|
+
}
|
|
17688
|
+
function classEscape(s) {
|
|
17689
|
+
return s.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
|
|
17690
|
+
return "\\x0" + hex(ch);
|
|
17691
|
+
}).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
|
|
17692
|
+
return "\\x" + hex(ch);
|
|
17693
|
+
});
|
|
17694
|
+
}
|
|
17695
|
+
function describeExpectation(expectation) {
|
|
17696
|
+
return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
|
|
17697
|
+
}
|
|
17698
|
+
function describeExpected(expected2) {
|
|
17699
|
+
var descriptions = expected2.map(describeExpectation);
|
|
17700
|
+
var i, j;
|
|
17701
|
+
descriptions.sort();
|
|
17702
|
+
if (descriptions.length > 0) {
|
|
17703
|
+
for (i = 1, j = 1; i < descriptions.length; i++) {
|
|
17704
|
+
if (descriptions[i - 1] !== descriptions[i]) {
|
|
17705
|
+
descriptions[j] = descriptions[i];
|
|
17706
|
+
j++;
|
|
17707
|
+
}
|
|
17708
|
+
}
|
|
17709
|
+
descriptions.length = j;
|
|
17710
|
+
}
|
|
17711
|
+
switch (descriptions.length) {
|
|
17712
|
+
case 1:
|
|
17713
|
+
return descriptions[0];
|
|
17714
|
+
case 2:
|
|
17715
|
+
return descriptions[0] + " or " + descriptions[1];
|
|
17716
|
+
default:
|
|
17717
|
+
return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
|
|
17718
|
+
}
|
|
17719
|
+
}
|
|
17720
|
+
function describeFound(found2) {
|
|
17721
|
+
return found2 ? '"' + literalEscape(found2) + '"' : "end of input";
|
|
17722
|
+
}
|
|
17723
|
+
return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
|
|
17724
|
+
};
|
|
17725
|
+
|
|
17726
|
+
// src/geoms/create-geoms-for-silkscreen-text.ts
|
|
17515
17727
|
function createSilkscreenTextGeoms(silkscreenText) {
|
|
17516
17728
|
const textOutlines = (0, import_text.vectorText)({
|
|
17517
17729
|
height: silkscreenText.font_size,
|
|
17518
17730
|
input: silkscreenText.text
|
|
17519
17731
|
});
|
|
17732
|
+
let rotationDegrees = silkscreenText.ccw_rotation ?? 0;
|
|
17520
17733
|
textOutlines.forEach((outline) => {
|
|
17521
17734
|
if (outline.length === 29) {
|
|
17522
17735
|
textOutlines.splice(
|
|
@@ -17563,7 +17776,39 @@ function createSilkscreenTextGeoms(silkscreenText) {
|
|
|
17563
17776
|
} else if (silkscreenText.anchor_alignment?.includes("bottom")) {
|
|
17564
17777
|
yOffset = -textBounds.minY;
|
|
17565
17778
|
}
|
|
17566
|
-
|
|
17779
|
+
const transforms = [];
|
|
17780
|
+
if (silkscreenText.layer === "bottom") {
|
|
17781
|
+
transforms.push(
|
|
17782
|
+
translate2(centerX, centerY),
|
|
17783
|
+
{ a: -1, b: 0, c: 0, d: 1, e: 0, f: 0 },
|
|
17784
|
+
// horizontal flip matrix
|
|
17785
|
+
translate2(-centerX, -centerY)
|
|
17786
|
+
);
|
|
17787
|
+
rotationDegrees = -rotationDegrees;
|
|
17788
|
+
}
|
|
17789
|
+
if (rotationDegrees) {
|
|
17790
|
+
const rad = rotationDegrees * Math.PI / 180;
|
|
17791
|
+
transforms.push(
|
|
17792
|
+
translate2(centerX, centerY),
|
|
17793
|
+
rotate(rad),
|
|
17794
|
+
translate2(-centerX, -centerY)
|
|
17795
|
+
);
|
|
17796
|
+
}
|
|
17797
|
+
let transformedOutlines = textOutlines;
|
|
17798
|
+
if (transforms.length > 0) {
|
|
17799
|
+
const matrix = compose(...transforms);
|
|
17800
|
+
transformedOutlines = textOutlines.map(
|
|
17801
|
+
(outline) => outline.map(([x, y]) => {
|
|
17802
|
+
const { x: nx, y: ny } = applyToPoint(matrix, { x, y });
|
|
17803
|
+
return [nx, ny];
|
|
17804
|
+
})
|
|
17805
|
+
);
|
|
17806
|
+
}
|
|
17807
|
+
return {
|
|
17808
|
+
textOutlines: transformedOutlines,
|
|
17809
|
+
xOffset,
|
|
17810
|
+
yOffset
|
|
17811
|
+
};
|
|
17567
17812
|
}
|
|
17568
17813
|
|
|
17569
17814
|
// src/BoardGeomBuilder.ts
|
|
@@ -17878,11 +18123,20 @@ var BoardGeomBuilder = class {
|
|
|
17878
18123
|
{ delta: expansionDelta, corners: "round" },
|
|
17879
18124
|
textPath
|
|
17880
18125
|
);
|
|
17881
|
-
let textGeom
|
|
17882
|
-
|
|
17883
|
-
|
|
17884
|
-
|
|
17885
|
-
|
|
18126
|
+
let textGeom;
|
|
18127
|
+
if (st.layer === "bottom") {
|
|
18128
|
+
textGeom = (0, import_transforms2.translate)(
|
|
18129
|
+
[0, 0, -this.ctx.pcbThickness / 2 - M],
|
|
18130
|
+
// Position above board
|
|
18131
|
+
(0, import_extrusions2.extrudeLinear)({ height: 0.012 }, expandedPath)
|
|
18132
|
+
);
|
|
18133
|
+
} else {
|
|
18134
|
+
textGeom = (0, import_transforms2.translate)(
|
|
18135
|
+
[0, 0, this.ctx.pcbThickness / 2 + M],
|
|
18136
|
+
// Position above board
|
|
18137
|
+
(0, import_extrusions2.extrudeLinear)({ height: 0.012 }, expandedPath)
|
|
18138
|
+
);
|
|
18139
|
+
}
|
|
17886
18140
|
textGeom = (0, import_colors3.colorize)([1, 1, 1], textGeom);
|
|
17887
18141
|
this.silkscreenGeoms.push(textGeom);
|
|
17888
18142
|
}
|
|
@@ -18727,8 +18981,8 @@ async function convertCircuitJsonTo3dSvg(circuitJson, options = {}) {
|
|
|
18727
18981
|
scene.position.sub(center);
|
|
18728
18982
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
18729
18983
|
if (maxDim > 0) {
|
|
18730
|
-
const
|
|
18731
|
-
scene.scale.multiplyScalar(
|
|
18984
|
+
const scale2 = (1 - padding / 100) / maxDim;
|
|
18985
|
+
scene.scale.multiplyScalar(scale2 * 100);
|
|
18732
18986
|
}
|
|
18733
18987
|
camera.updateProjectionMatrix();
|
|
18734
18988
|
renderer.render(scene, camera);
|