@jscad/modeling 2.5.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/jscad-modeling.min.js +217 -202
  3. package/package.json +2 -2
  4. package/src/colors/colorize.js +4 -5
  5. package/src/colors/colorize.test.js +19 -12
  6. package/src/geometries/geom2/applyTransforms.js +1 -1
  7. package/src/geometries/geom2/clone.js +2 -12
  8. package/src/geometries/geom2/transform.js +2 -6
  9. package/src/geometries/geom3/applyTransforms.js +1 -1
  10. package/src/geometries/geom3/clone.js +2 -14
  11. package/src/geometries/geom3/clone.test.js +0 -2
  12. package/src/geometries/geom3/create.js +0 -2
  13. package/src/geometries/geom3/create.test.js +0 -2
  14. package/src/geometries/geom3/fromCompactBinary.js +4 -6
  15. package/src/geometries/geom3/fromToCompactBinary.test.js +0 -6
  16. package/src/geometries/geom3/invert.test.js +0 -2
  17. package/src/geometries/geom3/toCompactBinary.js +8 -10
  18. package/src/geometries/geom3/transform.js +2 -7
  19. package/src/geometries/geom3/transform.test.js +0 -1
  20. package/src/geometries/geom3/type.d.ts +0 -1
  21. package/src/geometries/path2/applyTransforms.js +1 -1
  22. package/src/geometries/path2/clone.js +2 -13
  23. package/src/geometries/path2/transform.js +2 -7
  24. package/src/geometries/poly3/isConvex.js +1 -1
  25. package/src/geometries/poly3/measureArea.js +12 -13
  26. package/src/geometries/poly3/measureArea.test.js +15 -0
  27. package/src/geometries/poly3/plane.js +1 -2
  28. package/src/maths/mat4/index.js +1 -0
  29. package/src/maths/mat4/isOnlyTransformScale.js +21 -0
  30. package/src/maths/mat4/isOnlyTransformScale.test.js +27 -0
  31. package/src/maths/plane/fromPoints.js +32 -10
  32. package/src/maths/plane/fromPoints.test.js +4 -0
  33. package/src/maths/utils/index.d.ts +0 -1
  34. package/src/maths/utils/index.js +0 -1
  35. package/src/maths/vec2/rotate.js +1 -1
  36. package/src/maths/vec2/rotate.test.js +3 -3
  37. package/src/measurements/index.js +4 -1
  38. package/src/measurements/measureBoundingBox.js +128 -38
  39. package/src/measurements/measureBoundingBox.test.js +8 -0
  40. package/src/measurements/measureBoundingSphere.js +146 -0
  41. package/src/measurements/measureBoundingSphere.test.js +59 -0
  42. package/src/measurements/measureCenter.js +28 -0
  43. package/src/measurements/measureCenter.test.js +58 -0
  44. package/src/measurements/measureCenterOfMass.js +106 -0
  45. package/src/measurements/measureCenterOfMass.test.js +58 -0
  46. package/src/measurements/measureDimensions.js +28 -0
  47. package/src/measurements/measureDimensions.test.js +58 -0
  48. package/src/measurements/measureEpsilon.js +3 -9
  49. package/src/operations/booleans/reTesselateCoplanarPolygons.js +1 -1
  50. package/src/operations/booleans/trees/PolygonTreeNode.js +0 -1
  51. package/src/operations/expansions/expand.test.js +1 -1
  52. package/src/operations/extrusions/extrudeRotate.test.js +18 -10
  53. package/src/operations/modifiers/generalize.js +0 -1
  54. package/src/operations/modifiers/snapPolygons.js +2 -2
  55. package/src/operations/modifiers/snapPolygons.test.js +13 -5
  56. package/src/primitives/index.d.ts +1 -0
  57. package/src/primitives/index.js +2 -1
  58. package/src/primitives/triangle.d.ts +10 -0
  59. package/src/primitives/triangle.js +164 -0
  60. package/src/primitives/triangle.test.js +95 -0
  61. package/src/maths/utils/clamp.d.ts +0 -3
  62. package/src/maths/utils/clamp.js +0 -4
  63. package/src/maths/utils/quantizeForSpace.d.ts +0 -3
  64. package/src/maths/utils/quantizeForSpace.js +0 -6
@@ -0,0 +1,95 @@
1
+ const test = require('ava')
2
+
3
+ const { triangle } = require('./index')
4
+
5
+ const degToRad = require('../utils/degToRad')
6
+ const geom2 = require('../geometries/geom2')
7
+
8
+ const comparePoints = require('../../test/helpers/comparePoints')
9
+
10
+ test('triangle (defaults)', (t) => {
11
+ const geometry = triangle()
12
+ const obs = geom2.toPoints(geometry)
13
+ const exp = [
14
+ [0, 0],
15
+ [1, 0],
16
+ [0.5000000000000002, 0.8660254037844387]
17
+ ]
18
+
19
+ t.deepEqual(obs.length, 3)
20
+ t.true(comparePoints(obs, exp))
21
+ })
22
+
23
+ test('triangle (options)', (t) => {
24
+ // test SSS
25
+ let geometry = triangle({ type: 'SSS', values: [7, 8, 6] })
26
+ let obs = geom2.toPoints(geometry)
27
+ let exp = [
28
+ [0, 0],
29
+ [7, 0],
30
+ [1.5, 5.809475019311125]
31
+ ]
32
+
33
+ t.deepEqual(obs.length, 3)
34
+ t.true(comparePoints(obs, exp))
35
+
36
+ // test AAA
37
+ geometry = triangle({ type: 'AAA', values: [Math.PI / 2, Math.PI / 4, Math.PI / 4] })
38
+ obs = geom2.toPoints(geometry)
39
+ exp = [
40
+ [0, 0],
41
+ [1, 0],
42
+ [0, 1.0000000000000002]
43
+ ]
44
+
45
+ t.deepEqual(obs.length, 3)
46
+ t.true(comparePoints(obs, exp))
47
+
48
+ // test AAS
49
+ geometry = triangle({ type: 'AAS', values: [degToRad(62), degToRad(35), 7] })
50
+ obs = geom2.toPoints(geometry)
51
+ exp = [
52
+ [0, 0],
53
+ [7.86889631692936, 0],
54
+ [2.1348320069064197, 4.015035054457325]
55
+ ]
56
+
57
+ t.deepEqual(obs.length, 3)
58
+ t.true(comparePoints(obs, exp))
59
+
60
+ // test ASA
61
+ geometry = triangle({ type: 'ASA', values: [degToRad(76), 9, degToRad(34)] })
62
+ obs = geom2.toPoints(geometry)
63
+ exp = [
64
+ [0, 0],
65
+ [9, 0],
66
+ [1.295667368233083, 5.196637976713814]
67
+ ]
68
+
69
+ t.deepEqual(obs.length, 3)
70
+ t.true(comparePoints(obs, exp))
71
+
72
+ // test SAS
73
+ geometry = triangle({ type: 'SAS', values: [5, degToRad(49), 7] })
74
+ obs = geom2.toPoints(geometry)
75
+ exp = [
76
+ [0, 0],
77
+ [5, 0],
78
+ [0.4075867970664495, 5.282967061559405]
79
+ ]
80
+
81
+ t.deepEqual(obs.length, 3)
82
+ t.true(comparePoints(obs, exp))
83
+
84
+ // test SSA
85
+ geometry = triangle({ type: 'SSA', values: [8, 13, degToRad(31)] })
86
+ obs = geom2.toPoints(geometry)
87
+ exp = [
88
+ [0, 0],
89
+ [8, 0],
90
+ [8.494946725906148, 12.990574573070846]
91
+ ]
92
+
93
+ t.deepEqual(obs.length, 3)
94
+ t.true(comparePoints(obs, exp))
95
+ })
@@ -1,3 +0,0 @@
1
- export default clamp
2
-
3
- declare function clamp(value: number, min: number, max: number): number
@@ -1,4 +0,0 @@
1
-
2
- const clamp = (value, min, max) => Math.min(Math.max(value, min), max)
3
-
4
- module.exports = clamp
@@ -1,3 +0,0 @@
1
- export default quantizeForSpace
2
-
3
- declare function quantizeForSpace(value: number): number
@@ -1,6 +0,0 @@
1
- const { spatialResolution } = require('../constants')
2
-
3
- // Quantize values for use in spatial coordinates, and so on.
4
- const quantizeForSpace = (value) => (Math.round(value * spatialResolution) / spatialResolution)
5
-
6
- module.exports = quantizeForSpace