@jscad/modeling 3.0.0-alpha.0 → 3.0.1-alpha.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 (134) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +1 -1
  3. package/dist/jscad-modeling.es.js +2 -2
  4. package/dist/jscad-modeling.min.js +2 -2
  5. package/package.json +2 -2
  6. package/rollup.config.js +1 -1
  7. package/src/colors/colorize.js +1 -5
  8. package/src/colors/colorize.test.js +8 -8
  9. package/src/geometries/geom2/transform.js +9 -1
  10. package/src/geometries/geom2/transform.test.js +57 -0
  11. package/src/geometries/geom3/fromPointsConvex.d.ts +4 -0
  12. package/src/geometries/geom3/fromPointsConvex.js +25 -0
  13. package/src/geometries/geom3/fromPointsConvex.test.js +32 -0
  14. package/src/geometries/geom3/index.d.ts +1 -0
  15. package/src/geometries/geom3/index.js +1 -0
  16. package/src/geometries/index.js +3 -4
  17. package/src/geometries/poly3/type.d.ts +1 -1
  18. package/src/geometries/slice/validate.js +1 -2
  19. package/src/maths/index.js +1 -0
  20. package/src/maths/mat4/isOnlyTransformScale.js +1 -1
  21. package/src/measurements/measureAggregateArea.js +0 -1
  22. package/src/measurements/measureAggregateBoundingBox.js +0 -1
  23. package/src/measurements/measureAggregateEpsilon.js +0 -1
  24. package/src/measurements/measureAggregateVolume.js +0 -1
  25. package/src/measurements/measureArea.js +0 -1
  26. package/src/measurements/measureBoundingBox.js +0 -1
  27. package/src/measurements/measureEpsilon.js +0 -1
  28. package/src/measurements/measureVolume.js +0 -1
  29. package/src/operations/booleans/index.d.ts +1 -0
  30. package/src/operations/booleans/intersect.js +5 -5
  31. package/src/operations/booleans/intersect.test.js +6 -7
  32. package/src/operations/booleans/intersectGeom2.js +2 -6
  33. package/src/operations/booleans/intersectGeom2.test.js +25 -1
  34. package/src/operations/booleans/intersectGeom3.js +2 -6
  35. package/src/operations/booleans/intersectGeom3.test.js +5 -1
  36. package/src/operations/booleans/mayOverlap.js +0 -1
  37. package/src/operations/booleans/scission.d.ts +5 -0
  38. package/src/operations/booleans/scission.js +3 -5
  39. package/src/operations/booleans/scission.test.js +6 -0
  40. package/src/operations/booleans/subtract.js +5 -5
  41. package/src/operations/booleans/subtract.test.js +6 -7
  42. package/src/operations/booleans/subtractGeom2.js +2 -6
  43. package/src/operations/booleans/subtractGeom2.test.js +25 -1
  44. package/src/operations/booleans/subtractGeom3.js +2 -6
  45. package/src/operations/booleans/subtractGeom3.test.js +5 -1
  46. package/src/operations/booleans/trees/splitPolygonByPlane.d.ts +33 -0
  47. package/src/operations/booleans/union.js +5 -5
  48. package/src/operations/booleans/union.test.js +6 -7
  49. package/src/operations/booleans/unionGeom2.js +2 -6
  50. package/src/operations/booleans/unionGeom2.test.js +25 -1
  51. package/src/operations/booleans/unionGeom3.js +2 -6
  52. package/src/operations/booleans/unionGeom3.test.js +6 -1
  53. package/src/operations/extrusions/extrudeFromSlices.test.js +8 -1
  54. package/src/operations/extrusions/extrudeHelical.js +2 -8
  55. package/src/operations/extrusions/extrudeLinear.js +1 -5
  56. package/src/operations/extrusions/extrudeLinear.test.js +7 -1
  57. package/src/operations/extrusions/extrudeRotate.js +3 -2
  58. package/src/operations/extrusions/extrudeRotate.test.js +13 -1
  59. package/src/operations/extrusions/project.js +1 -5
  60. package/src/operations/hulls/hull.js +6 -5
  61. package/src/operations/hulls/hull.test.js +56 -3
  62. package/src/operations/hulls/hullChain.js +11 -6
  63. package/src/operations/hulls/hullChain.test.js +12 -2
  64. package/src/operations/hulls/hullGeom2.js +5 -6
  65. package/src/operations/hulls/hullGeom3.js +9 -18
  66. package/src/operations/hulls/hullPath2.js +6 -7
  67. package/src/operations/hulls/hullPath2.test.js +1 -1
  68. package/src/operations/hulls/hullPoints2.d.ts +3 -0
  69. package/src/operations/hulls/hullPoints2.js +4 -2
  70. package/src/operations/hulls/hullPoints3.d.ts +4 -0
  71. package/src/operations/hulls/hullPoints3.js +21 -0
  72. package/src/operations/hulls/index.d.ts +2 -0
  73. package/src/operations/hulls/index.js +3 -1
  74. package/src/operations/modifiers/generalize.js +2 -6
  75. package/src/operations/modifiers/index.js +1 -1
  76. package/src/operations/modifiers/snap.js +2 -6
  77. package/src/operations/offsets/offset.js +1 -5
  78. package/src/operations/offsets/offsetFromPoints.test.js +0 -1
  79. package/src/operations/offsets/offsetGeom2.test.js +1 -0
  80. package/src/operations/offsets/offsetGeom3.js +0 -2
  81. package/src/operations/offsets/offsetGeom3.test.js +9 -1
  82. package/src/operations/offsets/offsetPath2.js +3 -3
  83. package/src/operations/transforms/align.js +8 -7
  84. package/src/operations/transforms/align.test.js +2 -2
  85. package/src/operations/transforms/center.js +6 -9
  86. package/src/operations/transforms/center.test.js +19 -1
  87. package/src/operations/transforms/mirror.js +5 -8
  88. package/src/operations/transforms/mirror.test.js +7 -7
  89. package/src/operations/transforms/rotate.js +5 -8
  90. package/src/operations/transforms/scale.js +5 -8
  91. package/src/operations/transforms/transform.js +2 -5
  92. package/src/operations/transforms/translate.js +5 -8
  93. package/src/primitives/arc.js +2 -0
  94. package/src/primitives/arc.test.js +11 -11
  95. package/src/primitives/circle.test.js +18 -8
  96. package/src/primitives/cube.test.js +10 -0
  97. package/src/primitives/cuboid.test.js +10 -0
  98. package/src/primitives/cylinder.test.js +12 -0
  99. package/src/primitives/cylinderElliptic.test.js +21 -1
  100. package/src/primitives/ellipse.test.js +18 -8
  101. package/src/primitives/ellipsoid.test.js +12 -0
  102. package/src/primitives/geodesicSphere.test.js +8 -0
  103. package/src/primitives/line.test.js +1 -1
  104. package/src/primitives/polygon.d.ts +1 -0
  105. package/src/primitives/polygon.js +13 -4
  106. package/src/primitives/polygon.test.js +15 -0
  107. package/src/primitives/polyhedron.js +1 -0
  108. package/src/primitives/polyhedron.test.js +8 -2
  109. package/src/primitives/rectangle.test.js +9 -3
  110. package/src/primitives/roundedCuboid.js +1 -1
  111. package/src/primitives/roundedCuboid.test.js +20 -4
  112. package/src/primitives/roundedCylinder.js +1 -1
  113. package/src/primitives/roundedCylinder.test.js +20 -0
  114. package/src/primitives/roundedRectangle.js +1 -1
  115. package/src/primitives/roundedRectangle.test.js +15 -6
  116. package/src/primitives/sphere.test.js +12 -0
  117. package/src/primitives/square.test.js +10 -4
  118. package/src/primitives/star.test.js +14 -6
  119. package/src/primitives/torus.js +1 -1
  120. package/src/primitives/torus.test.js +11 -1
  121. package/src/primitives/triangle.test.js +17 -9
  122. package/src/utils/coalesce.d.ts +3 -0
  123. package/src/utils/coalesce.js +20 -0
  124. package/src/utils/index.js +2 -2
  125. package/src/maths/mat4/leftMultiplyVec2.d.ts +0 -4
  126. package/src/maths/mat4/leftMultiplyVec2.js +0 -26
  127. package/src/maths/mat4/leftMultiplyVec3.d.ts +0 -4
  128. package/src/maths/mat4/leftMultiplyVec3.js +0 -27
  129. package/src/maths/mat4/mirror.d.ts +0 -4
  130. package/src/maths/mat4/mirror.js +0 -32
  131. package/src/maths/mat4/rightMultiplyVec2.d.ts +0 -4
  132. package/src/maths/mat4/rightMultiplyVec2.js +0 -27
  133. package/src/maths/mat4/rightMultiplyVec3.d.ts +0 -4
  134. package/src/maths/mat4/rightMultiplyVec3.js +0 -28
@@ -1,4 +0,0 @@
1
- import type { Mat4 } from './type.d.ts'
2
- import type { Vec3 } from '../vec3/type.d.ts'
3
-
4
- export function mirror(out: Mat4, vec: Vec3, matrix: Mat4): Mat4
@@ -1,32 +0,0 @@
1
- /*
2
- * m the mat4 by the dimensions in the given vec3
3
- * create an affine matrix for mirroring into an arbitrary plane:
4
- *
5
- * @param {Mat4} out - the receiving matrix
6
- * @param {Vec3} vector - the vec3 to mirror the matrix by
7
- * @param {Mat4} matrix - the matrix to mirror
8
- * @returns {Mat4} out
9
- */
10
- export const mirror = (out, vector, matrix) => {
11
- const x = vector[0]
12
- const y = vector[1]
13
- const z = vector[2]
14
-
15
- out[0] = matrix[0] * x
16
- out[1] = matrix[1] * x
17
- out[2] = matrix[2] * x
18
- out[3] = matrix[3] * x
19
- out[4] = matrix[4] * y
20
- out[5] = matrix[5] * y
21
- out[6] = matrix[6] * y
22
- out[7] = matrix[7] * y
23
- out[8] = matrix[8] * z
24
- out[9] = matrix[9] * z
25
- out[10] = matrix[10] * z
26
- out[11] = matrix[11] * z
27
- out[12] = matrix[12]
28
- out[13] = matrix[13]
29
- out[14] = matrix[14]
30
- out[15] = matrix[15]
31
- return out
32
- }
@@ -1,4 +0,0 @@
1
- import type { Mat4 } from './type.d.ts'
2
- import type { Vec2 } from '../vec2/type.d.ts'
3
-
4
- export function rightMultiplyVec2(vector: Vec2, matrix: Mat4): Vec2
@@ -1,27 +0,0 @@
1
- import { fromValues } from '../vec2/index.js'
2
-
3
- /**
4
- * Multiply a 2D vector by a matrix (interpreted as 2 row, 1 column).
5
- *
6
- * Calculation: result = v*M, where the fourth element is set to 1.
7
- * @param {Vec2} vector - input vector
8
- * @param {Mat4} matrix - input matrix
9
- * @returns {Vec2} a new vector
10
- * @alias module:modeling/maths/mat4.rightMultiplyVec2
11
- */
12
- export const rightMultiplyVec2 = (vector, matrix) => {
13
- const [v0, v1] = vector
14
- const v2 = 0
15
- const v3 = 1
16
- let x = v0 * matrix[0] + v1 * matrix[1] + v2 * matrix[2] + v3 * matrix[3]
17
- let y = v0 * matrix[4] + v1 * matrix[5] + v2 * matrix[6] + v3 * matrix[7]
18
- const w = v0 * matrix[12] + v1 * matrix[13] + v2 * matrix[14] + v3 * matrix[15]
19
-
20
- // scale such that fourth element becomes 1:
21
- if (w !== 1) {
22
- const invw = 1.0 / w
23
- x *= invw
24
- y *= invw
25
- }
26
- return fromValues(x, y)
27
- }
@@ -1,4 +0,0 @@
1
- import type { Mat4 } from './type.d.ts'
2
- import type { Vec3 } from '../vec3/type.d.ts'
3
-
4
- export function rightMultiplyVec3(vector: Vec3, matrix: Mat4): Vec3
@@ -1,28 +0,0 @@
1
- import { fromValues } from '../vec3/index.js'
2
-
3
- /**
4
- * Multiply a 3D vector by a matrix (interpreted as 3 row, 1 column)
5
- *
6
- * Calculation: result = v*M, where the fourth element is set to 1.
7
- * @param {Vec3} vector - input vector
8
- * @param {Mat4} matrix - input matrix
9
- * @returns {Vec3} a new vector
10
- * @alias module:modeling/maths/mat4.rightMultiplyVec3
11
- */
12
- export const rightMultiplyVec3 = (vector, matrix) => {
13
- const [v0, v1, v2] = vector
14
- const v3 = 1
15
- let x = v0 * matrix[0] + v1 * matrix[1] + v2 * matrix[2] + v3 * matrix[3]
16
- let y = v0 * matrix[4] + v1 * matrix[5] + v2 * matrix[6] + v3 * matrix[7]
17
- let z = v0 * matrix[8] + v1 * matrix[9] + v2 * matrix[10] + v3 * matrix[11]
18
- const w = v0 * matrix[12] + v1 * matrix[13] + v2 * matrix[14] + v3 * matrix[15]
19
-
20
- // scale such that fourth element becomes 1:
21
- if (w !== 1) {
22
- const invw = 1.0 / w
23
- x *= invw
24
- y *= invw
25
- z *= invw
26
- }
27
- return fromValues(x, y, z)
28
- }