@jscad/modeling 2.12.0 → 3.0.0-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 (1193) hide show
  1. package/CHANGELOG.md +26 -275
  2. package/README.md +5 -3
  3. package/dist/jscad-modeling.es.js +7 -0
  4. package/dist/jscad-modeling.min.js +7 -1205
  5. package/global.d.ts +15 -0
  6. package/package.json +22 -19
  7. package/rollup.config.js +21 -0
  8. package/src/colors/colorNameToRgb.d.ts +2 -4
  9. package/src/colors/colorNameToRgb.js +4 -6
  10. package/src/colors/colorNameToRgb.test.js +2 -2
  11. package/src/colors/colorize.d.ts +6 -8
  12. package/src/colors/colorize.js +20 -22
  13. package/src/colors/colorize.test.js +6 -8
  14. package/src/colors/cssColors.d.ts +1 -1
  15. package/src/colors/cssColors.js +2 -4
  16. package/src/colors/hexToRgb.d.ts +2 -4
  17. package/src/colors/hexToRgb.js +3 -5
  18. package/src/colors/hexToRgb.test.js +2 -2
  19. package/src/colors/hslToRgb.d.ts +5 -7
  20. package/src/colors/hslToRgb.js +4 -6
  21. package/src/colors/hslToRgb.test.js +2 -2
  22. package/src/colors/hsvToRgb.d.ts +5 -7
  23. package/src/colors/hsvToRgb.js +3 -5
  24. package/src/colors/hsvToRgb.test.js +2 -2
  25. package/src/colors/hueToColorComponent.d.ts +1 -3
  26. package/src/colors/hueToColorComponent.js +2 -4
  27. package/src/colors/index.d.ts +11 -12
  28. package/src/colors/index.js +12 -13
  29. package/src/colors/rgbToHex.d.ts +3 -5
  30. package/src/colors/rgbToHex.js +2 -4
  31. package/src/colors/rgbToHex.test.js +2 -2
  32. package/src/colors/rgbToHsl.d.ts +5 -7
  33. package/src/colors/rgbToHsl.js +2 -4
  34. package/src/colors/rgbToHsl.test.js +2 -2
  35. package/src/colors/rgbToHsv.d.ts +5 -7
  36. package/src/colors/rgbToHsv.js +2 -4
  37. package/src/colors/rgbToHsv.test.js +2 -2
  38. package/src/connectors/create.js +3 -5
  39. package/src/connectors/create.test.js +3 -3
  40. package/src/connectors/extends.js +7 -8
  41. package/src/connectors/fromPointAxisNormal.js +6 -8
  42. package/src/connectors/fromPointAxisNormal.test.js +3 -3
  43. package/src/connectors/index.js +7 -9
  44. package/src/connectors/normalize.js +7 -9
  45. package/src/connectors/toString.js +1 -3
  46. package/src/connectors/transform.js +10 -12
  47. package/src/connectors/transform.test.js +3 -3
  48. package/src/connectors/transformationBetween.js +25 -27
  49. package/src/connectors/transformationBetween.test.js +13 -13
  50. package/src/curves/bezier/arcLengthToT.d.ts +2 -4
  51. package/src/curves/bezier/arcLengthToT.js +6 -8
  52. package/src/curves/bezier/arcLengthToT.test.js +13 -13
  53. package/src/curves/bezier/create.d.ts +2 -4
  54. package/src/curves/bezier/create.js +3 -5
  55. package/src/curves/bezier/create.test.js +2 -2
  56. package/src/curves/bezier/index.d.ts +7 -8
  57. package/src/curves/bezier/index.js +9 -8
  58. package/src/curves/bezier/length.d.ts +2 -4
  59. package/src/curves/bezier/length.js +4 -6
  60. package/src/curves/bezier/length.test.js +12 -12
  61. package/src/curves/bezier/lengths.d.ts +2 -4
  62. package/src/curves/bezier/lengths.js +5 -7
  63. package/src/curves/bezier/lengths.test.js +12 -12
  64. package/src/curves/bezier/tangentAt.d.ts +2 -4
  65. package/src/curves/bezier/tangentAt.js +2 -4
  66. package/src/curves/bezier/tangentAt.test.js +2 -2
  67. package/src/curves/bezier/type.d.ts +1 -3
  68. package/src/curves/bezier/valueAt.d.ts +2 -4
  69. package/src/curves/bezier/valueAt.js +2 -4
  70. package/src/curves/bezier/valueAt.test.js +2 -2
  71. package/src/curves/index.d.ts +1 -3
  72. package/src/curves/index.js +4 -6
  73. package/src/geometries/geom2/applyTransforms.js +7 -13
  74. package/src/geometries/geom2/applyTransforms.test.js +6 -6
  75. package/src/geometries/geom2/clone.d.ts +2 -4
  76. package/src/geometries/geom2/clone.js +3 -5
  77. package/src/geometries/geom2/clone.test.js +5 -5
  78. package/src/geometries/geom2/create.d.ts +3 -5
  79. package/src/geometries/geom2/create.js +19 -19
  80. package/src/geometries/geom2/create.test.js +6 -6
  81. package/src/geometries/geom2/fromCompactBinary.d.ts +2 -4
  82. package/src/geometries/geom2/fromCompactBinary.js +19 -11
  83. package/src/geometries/geom2/fromSides.d.ts +4 -0
  84. package/src/geometries/geom2/fromSides.js +115 -0
  85. package/src/geometries/geom2/fromToCompactBinary.test.js +16 -38
  86. package/src/geometries/geom2/index.d.ts +14 -15
  87. package/src/geometries/geom2/index.js +17 -24
  88. package/src/geometries/geom2/isA.d.ts +2 -4
  89. package/src/geometries/geom2/isA.js +4 -6
  90. package/src/geometries/geom2/isA.test.js +5 -3
  91. package/src/geometries/geom2/reverse.d.ts +2 -4
  92. package/src/geometries/geom2/reverse.js +12 -14
  93. package/src/geometries/geom2/reverse.test.js +29 -9
  94. package/src/geometries/geom2/toCompactBinary.d.ts +2 -4
  95. package/src/geometries/geom2/toCompactBinary.js +18 -15
  96. package/src/geometries/geom2/toOutlines.d.ts +3 -5
  97. package/src/geometries/geom2/toOutlines.js +3 -109
  98. package/src/geometries/geom2/toOutlines.test.js +34 -61
  99. package/src/geometries/geom2/toPoints.d.ts +3 -5
  100. package/src/geometries/geom2/toPoints.js +10 -13
  101. package/src/geometries/geom2/toPoints.test.js +8 -8
  102. package/src/geometries/geom2/toSides.d.ts +3 -5
  103. package/src/geometries/geom2/toSides.js +13 -6
  104. package/src/geometries/geom2/toString.d.ts +2 -4
  105. package/src/geometries/geom2/toString.js +9 -11
  106. package/src/geometries/geom2/toString.test.js +17 -0
  107. package/src/geometries/geom2/transform.d.ts +3 -5
  108. package/src/geometries/geom2/transform.js +8 -10
  109. package/src/geometries/geom2/transform.test.js +21 -22
  110. package/src/geometries/geom2/type.d.ts +5 -7
  111. package/src/geometries/geom2/validate.d.ts +1 -3
  112. package/src/geometries/geom2/validate.js +34 -13
  113. package/src/geometries/geom2/validate.test.js +39 -0
  114. package/src/geometries/geom3/applyTransforms.js +5 -7
  115. package/src/geometries/geom3/applyTransforms.test.js +6 -6
  116. package/src/geometries/geom3/clone.d.ts +2 -4
  117. package/src/geometries/geom3/clone.js +3 -5
  118. package/src/geometries/geom3/clone.test.js +5 -5
  119. package/src/geometries/geom3/create.d.ts +3 -5
  120. package/src/geometries/geom3/create.js +17 -8
  121. package/src/geometries/geom3/create.test.js +5 -5
  122. package/src/geometries/geom3/fromCompactBinary.d.ts +2 -4
  123. package/src/geometries/geom3/fromCompactBinary.js +6 -8
  124. package/src/geometries/geom3/fromPoints.d.ts +3 -5
  125. package/src/geometries/geom3/fromPoints.js +11 -19
  126. package/src/geometries/geom3/fromPoints.test.js +6 -6
  127. package/src/geometries/geom3/fromToCompactBinary.test.js +7 -7
  128. package/src/geometries/geom3/index.d.ts +13 -14
  129. package/src/geometries/geom3/index.js +21 -29
  130. package/src/geometries/geom3/invert.d.ts +2 -4
  131. package/src/geometries/geom3/invert.js +8 -10
  132. package/src/geometries/geom3/invert.test.js +5 -5
  133. package/src/geometries/geom3/isA.d.ts +2 -4
  134. package/src/geometries/geom3/isA.js +2 -4
  135. package/src/geometries/geom3/isA.test.js +2 -2
  136. package/src/geometries/geom3/toCompactBinary.d.ts +2 -4
  137. package/src/geometries/geom3/toCompactBinary.js +10 -12
  138. package/src/geometries/geom3/toPoints.d.ts +3 -5
  139. package/src/geometries/geom3/toPoints.js +5 -8
  140. package/src/geometries/geom3/toPoints.test.js +9 -9
  141. package/src/geometries/geom3/toPolygons.d.ts +3 -5
  142. package/src/geometries/geom3/toPolygons.js +4 -6
  143. package/src/geometries/geom3/toString.d.ts +2 -4
  144. package/src/geometries/geom3/toString.js +5 -7
  145. package/src/geometries/geom3/toString.test.js +17 -0
  146. package/src/geometries/geom3/transform.d.ts +3 -5
  147. package/src/geometries/geom3/transform.js +6 -8
  148. package/src/geometries/geom3/transform.test.js +6 -6
  149. package/src/geometries/geom3/type.d.ts +4 -6
  150. package/src/geometries/geom3/validate.d.ts +1 -3
  151. package/src/geometries/geom3/validate.js +5 -6
  152. package/src/geometries/geom3/validate.test.js +26 -0
  153. package/src/geometries/index.d.ts +6 -7
  154. package/src/geometries/index.js +10 -9
  155. package/src/geometries/path2/appendArc.d.ts +4 -6
  156. package/src/geometries/path2/appendArc.js +58 -60
  157. package/src/geometries/path2/appendArc.test.js +8 -7
  158. package/src/geometries/path2/appendBezier.d.ts +3 -5
  159. package/src/geometries/path2/appendBezier.js +41 -43
  160. package/src/geometries/path2/appendBezier.test.js +3 -3
  161. package/src/geometries/path2/appendPoints.d.ts +3 -5
  162. package/src/geometries/path2/appendPoints.js +6 -8
  163. package/src/geometries/path2/appendPoints.test.js +2 -2
  164. package/src/geometries/path2/applyTransforms.js +3 -5
  165. package/src/geometries/path2/applyTransforms.test.js +4 -4
  166. package/src/geometries/path2/clone.d.ts +2 -4
  167. package/src/geometries/path2/clone.js +3 -5
  168. package/src/geometries/path2/close.d.ts +2 -4
  169. package/src/geometries/path2/close.js +6 -8
  170. package/src/geometries/path2/close.test.js +2 -2
  171. package/src/geometries/path2/concat.d.ts +2 -4
  172. package/src/geometries/path2/concat.js +11 -13
  173. package/src/geometries/path2/concat.test.js +2 -2
  174. package/src/geometries/path2/create.d.ts +3 -5
  175. package/src/geometries/path2/create.js +12 -9
  176. package/src/geometries/path2/create.test.js +2 -2
  177. package/src/geometries/path2/equals.d.ts +2 -4
  178. package/src/geometries/path2/equals.js +9 -11
  179. package/src/geometries/path2/equals.test.js +2 -2
  180. package/src/geometries/path2/fromCompactBinary.d.ts +2 -4
  181. package/src/geometries/path2/fromCompactBinary.js +5 -7
  182. package/src/geometries/path2/fromPoints.d.ts +3 -5
  183. package/src/geometries/path2/fromPoints.js +9 -11
  184. package/src/geometries/path2/fromPoints.test.js +3 -3
  185. package/src/geometries/path2/fromToCompactBinary.test.js +2 -2
  186. package/src/geometries/path2/index.d.ts +18 -19
  187. package/src/geometries/path2/index.js +19 -28
  188. package/src/geometries/path2/isA.d.ts +2 -4
  189. package/src/geometries/path2/isA.js +2 -4
  190. package/src/geometries/path2/isA.test.js +2 -2
  191. package/src/geometries/path2/reverse.d.ts +2 -4
  192. package/src/geometries/path2/reverse.js +5 -7
  193. package/src/geometries/path2/reverse.test.js +2 -2
  194. package/src/geometries/path2/toCompactBinary.d.ts +2 -4
  195. package/src/geometries/path2/toCompactBinary.js +2 -4
  196. package/src/geometries/path2/toPoints.d.ts +3 -5
  197. package/src/geometries/path2/toPoints.js +4 -6
  198. package/src/geometries/path2/toPoints.test.js +3 -3
  199. package/src/geometries/path2/toString.d.ts +2 -4
  200. package/src/geometries/path2/toString.js +5 -7
  201. package/src/geometries/path2/transform.d.ts +3 -5
  202. package/src/geometries/path2/transform.js +6 -8
  203. package/src/geometries/path2/transform.test.js +5 -5
  204. package/src/geometries/path2/type.d.ts +4 -6
  205. package/src/geometries/path2/validate.d.ts +1 -3
  206. package/src/geometries/path2/validate.js +6 -7
  207. package/src/geometries/poly2/arePointsInside.d.ts +3 -5
  208. package/src/geometries/poly2/arePointsInside.js +21 -24
  209. package/src/geometries/poly2/arePointsInside.test.js +2 -2
  210. package/src/geometries/poly2/clone.d.ts +3 -0
  211. package/src/geometries/poly2/clone.js +8 -0
  212. package/src/geometries/poly2/clone.test.js +17 -0
  213. package/src/geometries/poly2/create.d.ts +3 -5
  214. package/src/geometries/poly2/create.js +11 -12
  215. package/src/geometries/poly2/create.test.js +4 -4
  216. package/src/geometries/poly2/index.d.ts +14 -6
  217. package/src/geometries/poly2/index.js +16 -11
  218. package/src/geometries/poly2/isA.d.ts +3 -0
  219. package/src/geometries/poly2/isA.js +16 -0
  220. package/src/geometries/poly2/isA.test.js +30 -0
  221. package/src/geometries/poly2/isConvex.d.ts +3 -0
  222. package/src/geometries/poly2/isConvex.js +37 -0
  223. package/src/geometries/poly2/isConvex.test.js +27 -0
  224. package/src/geometries/poly2/isSimple.d.ts +3 -0
  225. package/src/geometries/poly2/isSimple.js +38 -0
  226. package/src/geometries/poly2/isSimple.test.js +31 -0
  227. package/src/geometries/poly2/measureArea.d.ts +2 -4
  228. package/src/geometries/poly2/measureArea.js +5 -7
  229. package/src/geometries/poly2/measureArea.test.js +2 -2
  230. package/src/geometries/poly2/measureBoundingBox.d.ts +4 -0
  231. package/src/geometries/poly2/measureBoundingBox.js +18 -0
  232. package/src/geometries/poly2/measureBoundingBox.test.js +71 -0
  233. package/src/geometries/poly2/reverse.d.ts +3 -0
  234. package/src/geometries/poly2/reverse.js +13 -0
  235. package/src/geometries/poly2/reverse.test.js +27 -0
  236. package/src/geometries/poly2/toPoints.d.ts +4 -0
  237. package/src/geometries/poly2/toPoints.js +8 -0
  238. package/src/geometries/poly2/toPoints.test.js +18 -0
  239. package/src/geometries/poly2/toString.d.ts +3 -0
  240. package/src/geometries/poly2/toString.js +9 -0
  241. package/src/geometries/poly2/toString.test.js +10 -0
  242. package/src/geometries/poly2/transform.d.ts +4 -0
  243. package/src/geometries/poly2/transform.js +20 -0
  244. package/src/geometries/poly2/transform.test.js +62 -0
  245. package/src/geometries/poly2/type.d.ts +5 -5
  246. package/src/geometries/poly2/validate.d.ts +2 -0
  247. package/src/geometries/poly2/validate.js +46 -0
  248. package/src/geometries/poly2/validate.test.js +31 -0
  249. package/src/geometries/poly3/clone.d.ts +3 -5
  250. package/src/geometries/poly3/clone.js +6 -8
  251. package/src/geometries/poly3/clone.test.js +6 -5
  252. package/src/geometries/poly3/create.d.ts +3 -5
  253. package/src/geometries/poly3/create.js +6 -6
  254. package/src/geometries/poly3/create.test.js +15 -3
  255. package/src/geometries/poly3/fromVerticesAndPlane.d.ts +5 -0
  256. package/src/geometries/poly3/{fromPointsAndPlane.js → fromVerticesAndPlane.js} +5 -7
  257. package/src/geometries/poly3/index.d.ts +16 -18
  258. package/src/geometries/poly3/index.js +17 -22
  259. package/src/geometries/poly3/invert.d.ts +2 -4
  260. package/src/geometries/poly3/invert.js +6 -7
  261. package/src/geometries/poly3/invert.test.js +5 -5
  262. package/src/geometries/poly3/isA.d.ts +2 -4
  263. package/src/geometries/poly3/isA.js +2 -4
  264. package/src/geometries/poly3/isA.test.js +3 -3
  265. package/src/geometries/poly3/isConvex.d.ts +2 -4
  266. package/src/geometries/poly3/isConvex.js +21 -23
  267. package/src/geometries/poly3/isConvex.test.js +9 -9
  268. package/src/geometries/poly3/measureArea.d.ts +2 -4
  269. package/src/geometries/poly3/measureArea.js +4 -6
  270. package/src/geometries/poly3/measureArea.test.js +12 -11
  271. package/src/geometries/poly3/measureBoundingBox.d.ts +3 -5
  272. package/src/geometries/poly3/measureBoundingBox.js +6 -8
  273. package/src/geometries/poly3/measureBoundingBox.test.js +9 -8
  274. package/src/geometries/poly3/measureBoundingSphere.d.ts +3 -5
  275. package/src/geometries/poly3/measureBoundingSphere.js +4 -6
  276. package/src/geometries/poly3/measureBoundingSphere.test.js +8 -7
  277. package/src/geometries/poly3/measureSignedVolume.d.ts +2 -4
  278. package/src/geometries/poly3/measureSignedVolume.js +4 -6
  279. package/src/geometries/poly3/measureSignedVolume.test.js +8 -8
  280. package/src/geometries/poly3/plane.d.ts +3 -5
  281. package/src/geometries/poly3/plane.js +2 -4
  282. package/src/geometries/poly3/toString.d.ts +2 -4
  283. package/src/geometries/poly3/toString.js +4 -12
  284. package/src/geometries/poly3/toString.test.js +10 -0
  285. package/src/geometries/poly3/toVertices.d.ts +4 -0
  286. package/src/geometries/poly3/toVertices.js +8 -0
  287. package/src/geometries/poly3/transform.d.ts +3 -5
  288. package/src/geometries/poly3/transform.js +7 -9
  289. package/src/geometries/poly3/transform.test.js +7 -7
  290. package/src/geometries/poly3/type.d.ts +7 -5
  291. package/src/geometries/poly3/validate.d.ts +1 -3
  292. package/src/geometries/poly3/validate.js +14 -15
  293. package/src/geometries/slice/calculatePlane.d.ts +5 -0
  294. package/src/geometries/slice/calculatePlane.js +65 -0
  295. package/src/geometries/slice/calculatePlane.test.js +43 -0
  296. package/src/geometries/slice/clone.d.ts +3 -0
  297. package/src/geometries/slice/clone.js +9 -0
  298. package/src/geometries/slice/clone.test.js +14 -0
  299. package/src/geometries/slice/create.d.ts +4 -0
  300. package/src/geometries/slice/create.js +18 -0
  301. package/src/{operations/extrusions → geometries}/slice/create.test.js +3 -3
  302. package/src/{operations/extrusions → geometries/slice}/earcut/assignHoles.js +6 -8
  303. package/src/geometries/slice/earcut/assignHoles.test.js +75 -0
  304. package/src/{operations/extrusions → geometries/slice}/earcut/eliminateHoles.js +3 -5
  305. package/src/{operations/extrusions → geometries/slice}/earcut/index.js +7 -8
  306. package/src/{operations/extrusions → geometries/slice}/earcut/linkedList.js +3 -6
  307. package/src/{operations/extrusions → geometries/slice}/earcut/linkedListSort.js +1 -4
  308. package/src/{operations/extrusions → geometries/slice}/earcut/linkedPolygon.js +8 -10
  309. package/src/{operations/extrusions → geometries/slice}/earcut/polygonHierarchy.js +13 -13
  310. package/src/{operations/extrusions → geometries/slice}/earcut/triangle.js +2 -5
  311. package/src/geometries/slice/equals.d.ts +3 -0
  312. package/src/geometries/slice/equals.js +27 -0
  313. package/src/geometries/slice/equals.test.js +17 -0
  314. package/src/geometries/slice/fromGeom2.d.ts +5 -0
  315. package/src/geometries/slice/fromGeom2.js +17 -0
  316. package/src/geometries/slice/fromVertices.d.ts +7 -0
  317. package/src/geometries/slice/fromVertices.js +34 -0
  318. package/src/geometries/slice/fromVertices.test.js +11 -0
  319. package/src/geometries/slice/index.d.ts +16 -0
  320. package/src/geometries/slice/index.js +23 -0
  321. package/src/geometries/slice/isA.d.ts +3 -0
  322. package/src/geometries/slice/isA.js +16 -0
  323. package/src/{operations/extrusions → geometries}/slice/isA.test.js +3 -3
  324. package/src/geometries/slice/reverse.d.ts +3 -0
  325. package/src/geometries/slice/reverse.js +14 -0
  326. package/src/geometries/slice/toEdges.d.ts +3 -0
  327. package/src/geometries/slice/toEdges.js +20 -0
  328. package/src/geometries/slice/toPolygons.d.ts +5 -0
  329. package/src/{operations/extrusions → geometries}/slice/toPolygons.js +9 -10
  330. package/src/geometries/slice/toString.d.ts +3 -0
  331. package/src/geometries/slice/toString.js +16 -0
  332. package/src/geometries/slice/toString.test.js +17 -0
  333. package/src/geometries/slice/toVertices.d.ts +4 -0
  334. package/src/geometries/slice/toVertices.js +19 -0
  335. package/src/geometries/slice/transform.d.ts +5 -0
  336. package/src/geometries/slice/transform.js +19 -0
  337. package/src/{operations/extrusions → geometries}/slice/transform.test.js +11 -21
  338. package/src/geometries/slice/type.d.ts +7 -0
  339. package/src/geometries/slice/validate.d.ts +1 -0
  340. package/src/geometries/slice/validate.js +49 -0
  341. package/src/geometries/slice/validate.test.js +36 -0
  342. package/src/geometries/types.d.ts +12 -10
  343. package/src/index.d.ts +2 -4
  344. package/src/index.js +14 -16
  345. package/src/index.test-d.ts +3 -3
  346. package/src/maths/constants.d.ts +1 -1
  347. package/src/maths/constants.js +10 -20
  348. package/src/maths/index.d.ts +9 -11
  349. package/src/maths/index.js +10 -13
  350. package/src/maths/line2/clone.d.ts +2 -4
  351. package/src/maths/line2/clone.js +4 -6
  352. package/src/maths/line2/clone.test.js +4 -3
  353. package/src/maths/line2/closestPoint.d.ts +3 -5
  354. package/src/maths/line2/closestPoint.js +7 -9
  355. package/src/maths/line2/closestPoint.test.js +4 -3
  356. package/src/maths/line2/copy.d.ts +2 -4
  357. package/src/maths/line2/copy.js +4 -6
  358. package/src/maths/line2/copy.test.js +4 -3
  359. package/src/maths/line2/create.d.ts +2 -4
  360. package/src/maths/line2/create.js +5 -8
  361. package/src/maths/line2/create.test.js +3 -3
  362. package/src/maths/line2/direction.d.ts +3 -5
  363. package/src/maths/line2/direction.js +4 -6
  364. package/src/maths/line2/direction.test.js +3 -3
  365. package/src/maths/line2/distanceToPoint.d.ts +3 -5
  366. package/src/maths/line2/distanceToPoint.js +5 -7
  367. package/src/maths/line2/distanceToPoint.test.js +6 -4
  368. package/src/maths/line2/equals.d.ts +2 -4
  369. package/src/maths/line2/equals.js +4 -6
  370. package/src/maths/line2/equals.test.js +3 -2
  371. package/src/maths/line2/fromPoints.d.ts +3 -5
  372. package/src/maths/line2/fromPoints.js +6 -8
  373. package/src/maths/line2/fromPoints.test.js +4 -3
  374. package/src/maths/line2/fromValues.d.ts +2 -4
  375. package/src/maths/line2/fromValues.js +6 -8
  376. package/src/maths/line2/fromValues.test.js +4 -3
  377. package/src/maths/line2/index.d.ts +16 -17
  378. package/src/maths/line2/index.js +16 -18
  379. package/src/maths/line2/intersectPointOfLines.d.ts +3 -5
  380. package/src/maths/line2/intersectPointOfLines.js +7 -8
  381. package/src/maths/line2/intersectPointOfLines.test.js +4 -3
  382. package/src/maths/line2/origin.d.ts +3 -5
  383. package/src/maths/line2/origin.js +4 -6
  384. package/src/maths/line2/origin.test.js +4 -3
  385. package/src/maths/line2/reverse.d.ts +2 -4
  386. package/src/maths/line2/reverse.js +7 -9
  387. package/src/maths/line2/reverse.test.js +4 -3
  388. package/src/maths/line2/toString.d.ts +2 -4
  389. package/src/maths/line2/toString.js +3 -5
  390. package/src/maths/line2/transform.d.ts +3 -5
  391. package/src/maths/line2/transform.js +9 -11
  392. package/src/maths/line2/transform.test.js +4 -3
  393. package/src/maths/line2/type.d.ts +1 -3
  394. package/src/maths/line2/xAtY.d.ts +2 -4
  395. package/src/maths/line2/xAtY.js +5 -7
  396. package/src/maths/line2/xAtY.test.js +6 -4
  397. package/src/maths/line3/clone.d.ts +2 -4
  398. package/src/maths/line3/clone.js +5 -7
  399. package/src/maths/line3/clone.test.js +4 -3
  400. package/src/maths/line3/closestPoint.d.ts +3 -5
  401. package/src/maths/line3/closestPoint.js +12 -14
  402. package/src/maths/line3/closestPoint.test.js +4 -3
  403. package/src/maths/line3/copy.d.ts +2 -4
  404. package/src/maths/line3/copy.js +5 -7
  405. package/src/maths/line3/copy.test.js +4 -3
  406. package/src/maths/line3/create.d.ts +2 -4
  407. package/src/maths/line3/create.js +4 -7
  408. package/src/maths/line3/create.test.js +3 -3
  409. package/src/maths/line3/direction.d.ts +3 -5
  410. package/src/maths/line3/direction.js +3 -5
  411. package/src/maths/line3/direction.test.js +4 -3
  412. package/src/maths/line3/distanceToPoint.d.ts +3 -5
  413. package/src/maths/line3/distanceToPoint.js +8 -10
  414. package/src/maths/line3/distanceToPoint.test.js +6 -4
  415. package/src/maths/line3/equals.d.ts +2 -4
  416. package/src/maths/line3/equals.js +4 -6
  417. package/src/maths/line3/equals.test.js +3 -2
  418. package/src/maths/line3/fromPlanes.d.ts +3 -5
  419. package/src/maths/line3/fromPlanes.js +14 -17
  420. package/src/maths/line3/fromPlanes.test.js +4 -4
  421. package/src/maths/line3/fromPointAndDirection.d.ts +3 -5
  422. package/src/maths/line3/fromPointAndDirection.js +6 -8
  423. package/src/maths/line3/fromPointAndDirection.test.js +4 -3
  424. package/src/maths/line3/fromPoints.d.ts +3 -5
  425. package/src/maths/line3/fromPoints.js +7 -9
  426. package/src/maths/line3/fromPoints.test.js +4 -3
  427. package/src/maths/line3/index.d.ts +16 -17
  428. package/src/maths/line3/index.js +16 -18
  429. package/src/maths/line3/intersectPointOfLineAndPlane.d.ts +4 -6
  430. package/src/maths/line3/intersectPointOfLineAndPlane.js +10 -13
  431. package/src/maths/line3/intersectPointOfLineAndPlane.test.js +4 -4
  432. package/src/maths/line3/origin.d.ts +3 -5
  433. package/src/maths/line3/origin.js +3 -5
  434. package/src/maths/line3/origin.test.js +4 -3
  435. package/src/maths/line3/reverse.d.ts +2 -4
  436. package/src/maths/line3/reverse.js +6 -8
  437. package/src/maths/line3/reverse.test.js +4 -3
  438. package/src/maths/line3/toString.d.ts +2 -4
  439. package/src/maths/line3/toString.js +3 -5
  440. package/src/maths/line3/transform.d.ts +3 -5
  441. package/src/maths/line3/transform.js +10 -12
  442. package/src/maths/line3/transform.test.js +4 -3
  443. package/src/maths/line3/type.d.ts +2 -4
  444. package/src/maths/mat4/add.d.ts +2 -4
  445. package/src/maths/mat4/add.js +5 -7
  446. package/src/maths/mat4/add.test.js +4 -3
  447. package/src/maths/mat4/clone.d.ts +2 -4
  448. package/src/maths/mat4/clone.js +4 -6
  449. package/src/maths/mat4/clone.test.js +4 -3
  450. package/src/maths/mat4/copy.d.ts +2 -4
  451. package/src/maths/mat4/copy.js +4 -6
  452. package/src/maths/mat4/copy.test.js +4 -3
  453. package/src/maths/mat4/create.d.ts +2 -4
  454. package/src/maths/mat4/create.js +2 -5
  455. package/src/maths/mat4/create.test.js +3 -3
  456. package/src/maths/mat4/equals.d.ts +2 -4
  457. package/src/maths/mat4/equals.js +4 -6
  458. package/src/maths/mat4/equals.test.js +3 -2
  459. package/src/maths/mat4/fromRotation.d.ts +3 -5
  460. package/src/maths/mat4/fromRotation.js +8 -10
  461. package/src/maths/mat4/fromRotation.test.js +4 -3
  462. package/src/maths/mat4/fromScaling.d.ts +3 -5
  463. package/src/maths/mat4/fromScaling.js +4 -6
  464. package/src/maths/mat4/fromScaling.test.js +4 -3
  465. package/src/maths/mat4/fromTaitBryanRotation.d.ts +2 -4
  466. package/src/maths/mat4/fromTaitBryanRotation.js +7 -9
  467. package/src/maths/mat4/fromTaitBryanRotation.test.js +3 -3
  468. package/src/maths/mat4/fromTranslation.d.ts +3 -5
  469. package/src/maths/mat4/fromTranslation.js +4 -6
  470. package/src/maths/mat4/fromTranslation.test.js +4 -3
  471. package/src/maths/mat4/fromValues.d.ts +2 -4
  472. package/src/maths/mat4/fromValues.js +19 -21
  473. package/src/maths/mat4/fromValues.test.js +4 -3
  474. package/src/maths/mat4/fromVectorRotation.d.ts +3 -5
  475. package/src/maths/mat4/fromVectorRotation.js +8 -10
  476. package/src/maths/mat4/fromVectorRotation.test.js +4 -5
  477. package/src/maths/mat4/fromXRotation.d.ts +2 -4
  478. package/src/maths/mat4/fromXRotation.js +5 -7
  479. package/src/maths/mat4/fromXRotation.test.js +4 -3
  480. package/src/maths/mat4/fromYRotation.d.ts +2 -4
  481. package/src/maths/mat4/fromYRotation.js +5 -7
  482. package/src/maths/mat4/fromYRotation.test.js +4 -3
  483. package/src/maths/mat4/fromZRotation.d.ts +2 -4
  484. package/src/maths/mat4/fromZRotation.js +5 -7
  485. package/src/maths/mat4/fromZRotation.test.js +4 -3
  486. package/src/maths/mat4/identity.d.ts +2 -4
  487. package/src/maths/mat4/identity.js +3 -5
  488. package/src/maths/mat4/identity.test.js +4 -3
  489. package/src/maths/mat4/index.d.ts +30 -27
  490. package/src/maths/mat4/index.js +29 -31
  491. package/src/maths/mat4/invert.d.ts +3 -0
  492. package/src/maths/mat4/invert.js +7 -7
  493. package/src/maths/mat4/invert.test.js +6 -5
  494. package/src/maths/mat4/isIdentity.d.ts +3 -0
  495. package/src/maths/mat4/isIdentity.js +4 -6
  496. package/src/maths/mat4/isIdentity.test.js +2 -2
  497. package/src/maths/mat4/isMirroring.d.ts +2 -4
  498. package/src/maths/mat4/isMirroring.js +4 -6
  499. package/src/maths/mat4/isMirroring.test.js +3 -3
  500. package/src/maths/mat4/isOnlyTransformScale.d.ts +3 -0
  501. package/src/maths/mat4/isOnlyTransformScale.js +7 -5
  502. package/src/maths/mat4/isOnlyTransformScale.test.js +3 -3
  503. package/src/maths/mat4/leftMultiplyVec2.d.ts +3 -5
  504. package/src/maths/mat4/leftMultiplyVec2.js +5 -7
  505. package/src/maths/mat4/leftMultiplyVec3.d.ts +3 -5
  506. package/src/maths/mat4/leftMultiplyVec3.js +5 -7
  507. package/src/maths/mat4/mirror.d.ts +3 -5
  508. package/src/maths/mat4/mirror.js +5 -7
  509. package/src/maths/mat4/mirrorByPlane.d.ts +3 -5
  510. package/src/maths/mat4/mirrorByPlane.js +4 -6
  511. package/src/maths/mat4/mirrorByPlane.test.js +4 -4
  512. package/src/maths/mat4/multiply.d.ts +2 -4
  513. package/src/maths/mat4/multiply.js +5 -7
  514. package/src/maths/mat4/multiply.test.js +4 -3
  515. package/src/maths/mat4/rightMultiplyVec2.d.ts +3 -5
  516. package/src/maths/mat4/rightMultiplyVec2.js +5 -7
  517. package/src/maths/mat4/rightMultiplyVec3.d.ts +3 -5
  518. package/src/maths/mat4/rightMultiplyVec3.js +5 -7
  519. package/src/maths/mat4/rotate.d.ts +3 -5
  520. package/src/maths/mat4/rotate.js +9 -11
  521. package/src/maths/mat4/rotate.test.js +6 -5
  522. package/src/maths/mat4/rotateX.d.ts +2 -4
  523. package/src/maths/mat4/rotateX.js +6 -8
  524. package/src/maths/mat4/rotateX.test.js +4 -3
  525. package/src/maths/mat4/rotateY.d.ts +2 -4
  526. package/src/maths/mat4/rotateY.js +6 -8
  527. package/src/maths/mat4/rotateY.test.js +4 -3
  528. package/src/maths/mat4/rotateZ.d.ts +2 -4
  529. package/src/maths/mat4/rotateZ.js +6 -8
  530. package/src/maths/mat4/rotateZ.test.js +4 -3
  531. package/src/maths/mat4/scale.d.ts +3 -5
  532. package/src/maths/mat4/scale.js +5 -7
  533. package/src/maths/mat4/scale.test.js +4 -3
  534. package/src/maths/mat4/subtract.d.ts +2 -4
  535. package/src/maths/mat4/subtract.js +5 -7
  536. package/src/maths/mat4/subtract.test.js +4 -3
  537. package/src/maths/mat4/toString.d.ts +2 -4
  538. package/src/maths/mat4/toString.js +3 -5
  539. package/src/maths/mat4/translate.d.ts +3 -5
  540. package/src/maths/mat4/translate.js +5 -7
  541. package/src/maths/mat4/translate.test.js +11 -15
  542. package/src/maths/mat4/type.d.ts +1 -3
  543. package/src/maths/plane/clone.d.ts +2 -4
  544. package/src/maths/plane/clone.test.js +4 -3
  545. package/src/maths/plane/copy.d.ts +2 -4
  546. package/src/maths/plane/copy.test.js +4 -3
  547. package/src/maths/plane/create.d.ts +2 -4
  548. package/src/maths/plane/create.test.js +3 -3
  549. package/src/maths/plane/equals.d.ts +2 -4
  550. package/src/maths/plane/equals.test.js +3 -2
  551. package/src/maths/plane/flip.d.ts +2 -4
  552. package/src/maths/plane/flip.js +4 -6
  553. package/src/maths/plane/flip.test.js +4 -3
  554. package/src/maths/plane/fromNormalAndPoint.d.ts +3 -5
  555. package/src/maths/plane/fromNormalAndPoint.js +6 -9
  556. package/src/maths/plane/fromNormalAndPoint.test.js +4 -3
  557. package/src/maths/plane/fromPoints.d.ts +3 -5
  558. package/src/maths/plane/fromPoints.js +4 -6
  559. package/src/maths/plane/fromPoints.test.js +4 -3
  560. package/src/maths/plane/fromPointsRandom.d.ts +3 -5
  561. package/src/maths/plane/fromPointsRandom.js +8 -10
  562. package/src/maths/plane/fromValues.d.ts +2 -4
  563. package/src/maths/plane/index.d.ts +14 -15
  564. package/src/maths/plane/index.js +38 -39
  565. package/src/maths/plane/projectionOfPoint.d.ts +3 -5
  566. package/src/maths/plane/projectionOfPoint.js +5 -7
  567. package/src/maths/plane/projectionOfPoint.test.js +3 -3
  568. package/src/maths/plane/signedDistanceToPoint.d.ts +3 -5
  569. package/src/maths/plane/signedDistanceToPoint.js +5 -7
  570. package/src/maths/plane/signedDistanceToPoint.test.js +3 -2
  571. package/src/maths/plane/toString.d.ts +2 -4
  572. package/src/maths/plane/transform.d.ts +3 -5
  573. package/src/maths/plane/transform.js +11 -13
  574. package/src/maths/plane/transform.test.js +4 -3
  575. package/src/maths/plane/type.d.ts +1 -3
  576. package/src/maths/rotation.test.js +4 -4
  577. package/src/maths/types.d.ts +15 -8
  578. package/src/maths/utils/OrthonormalFormula.d.ts +9 -0
  579. package/src/maths/utils/OrthonormalFormula.js +82 -0
  580. package/src/maths/utils/OrthonormalFormula.test.js +72 -0
  581. package/src/maths/utils/aboutEqualNormals.d.ts +2 -4
  582. package/src/maths/utils/aboutEqualNormals.js +4 -6
  583. package/src/maths/utils/area.d.ts +2 -4
  584. package/src/maths/utils/area.js +2 -4
  585. package/src/maths/utils/interpolateBetween2DPointsForY.d.ts +2 -4
  586. package/src/maths/utils/interpolateBetween2DPointsForY.js +4 -6
  587. package/src/maths/utils/intersect.d.ts +2 -4
  588. package/src/maths/utils/intersect.js +14 -9
  589. package/src/maths/utils/intersect.test.js +40 -0
  590. package/src/maths/utils/solve2Linear.d.ts +2 -4
  591. package/src/maths/utils/solve2Linear.js +1 -3
  592. package/src/maths/utils/trigonometry.js +7 -9
  593. package/src/maths/utils/trigonometry.test.js +3 -3
  594. package/src/maths/vec1/type.d.ts +1 -3
  595. package/src/maths/vec2/abs.d.ts +2 -4
  596. package/src/maths/vec2/abs.js +4 -6
  597. package/src/maths/vec2/abs.test.js +4 -3
  598. package/src/maths/vec2/add.d.ts +2 -4
  599. package/src/maths/vec2/add.js +5 -7
  600. package/src/maths/vec2/add.test.js +4 -3
  601. package/src/maths/vec2/angle.d.ts +1 -3
  602. package/src/maths/vec2/angle.js +1 -1
  603. package/src/maths/vec2/angleDegrees.d.ts +2 -4
  604. package/src/maths/vec2/angleDegrees.js +4 -6
  605. package/src/maths/vec2/angleDegrees.test.js +6 -4
  606. package/src/maths/vec2/angleRadians.d.ts +2 -4
  607. package/src/maths/vec2/angleRadians.js +3 -5
  608. package/src/maths/vec2/angleRadians.test.js +6 -4
  609. package/src/maths/vec2/clone.d.ts +2 -4
  610. package/src/maths/vec2/clone.js +4 -6
  611. package/src/maths/vec2/clone.test.js +4 -3
  612. package/src/maths/vec2/copy.d.ts +2 -4
  613. package/src/maths/vec2/copy.js +4 -6
  614. package/src/maths/vec2/copy.test.js +4 -3
  615. package/src/maths/vec2/create.d.ts +2 -4
  616. package/src/maths/vec2/create.js +2 -5
  617. package/src/maths/vec2/create.test.js +3 -3
  618. package/src/maths/vec2/cross.d.ts +3 -5
  619. package/src/maths/vec2/cross.js +5 -7
  620. package/src/maths/vec2/cross.test.js +14 -12
  621. package/src/maths/vec2/distance.d.ts +2 -4
  622. package/src/maths/vec2/distance.js +4 -6
  623. package/src/maths/vec2/distance.test.js +6 -4
  624. package/src/maths/vec2/divide.d.ts +2 -4
  625. package/src/maths/vec2/divide.js +5 -7
  626. package/src/maths/vec2/divide.test.js +4 -3
  627. package/src/maths/vec2/dot.d.ts +2 -4
  628. package/src/maths/vec2/dot.js +4 -6
  629. package/src/maths/vec2/dot.test.js +3 -2
  630. package/src/maths/vec2/equals.d.ts +2 -4
  631. package/src/maths/vec2/equals.js +3 -5
  632. package/src/maths/vec2/equals.test.js +3 -2
  633. package/src/maths/vec2/fromAngleDegrees.d.ts +2 -4
  634. package/src/maths/vec2/fromAngleDegrees.js +5 -7
  635. package/src/maths/vec2/fromAngleDegrees.test.js +4 -3
  636. package/src/maths/vec2/fromAngleRadians.d.ts +2 -4
  637. package/src/maths/vec2/fromAngleRadians.js +5 -7
  638. package/src/maths/vec2/fromAngleRadians.test.js +4 -4
  639. package/src/maths/vec2/fromScalar.d.ts +2 -4
  640. package/src/maths/vec2/fromScalar.js +4 -6
  641. package/src/maths/vec2/fromScalar.test.js +4 -3
  642. package/src/maths/vec2/fromValues.d.ts +2 -4
  643. package/src/maths/vec2/fromValues.js +5 -7
  644. package/src/maths/vec2/index.d.ts +34 -35
  645. package/src/maths/vec2/index.js +33 -35
  646. package/src/maths/vec2/length.d.ts +2 -4
  647. package/src/maths/vec2/length.js +3 -5
  648. package/src/maths/vec2/length.test.js +6 -4
  649. package/src/maths/vec2/lerp.d.ts +2 -4
  650. package/src/maths/vec2/lerp.js +6 -8
  651. package/src/maths/vec2/lerp.test.js +4 -3
  652. package/src/maths/vec2/max.d.ts +2 -4
  653. package/src/maths/vec2/max.js +5 -7
  654. package/src/maths/vec2/max.test.js +4 -3
  655. package/src/maths/vec2/min.d.ts +2 -4
  656. package/src/maths/vec2/min.js +5 -7
  657. package/src/maths/vec2/min.test.js +4 -3
  658. package/src/maths/vec2/multiply.d.ts +2 -4
  659. package/src/maths/vec2/multiply.js +5 -7
  660. package/src/maths/vec2/multiply.test.js +4 -3
  661. package/src/maths/vec2/negate.d.ts +2 -4
  662. package/src/maths/vec2/negate.js +4 -6
  663. package/src/maths/vec2/negate.test.js +4 -3
  664. package/src/maths/vec2/normal.d.ts +2 -4
  665. package/src/maths/vec2/normal.js +7 -9
  666. package/src/maths/vec2/normal.test.js +4 -3
  667. package/src/maths/vec2/normalize.d.ts +2 -4
  668. package/src/maths/vec2/normalize.js +4 -8
  669. package/src/maths/vec2/normalize.test.js +4 -3
  670. package/src/maths/vec2/rotate.d.ts +2 -4
  671. package/src/maths/vec2/rotate.js +6 -8
  672. package/src/maths/vec2/rotate.test.js +4 -4
  673. package/src/maths/vec2/scale.d.ts +2 -4
  674. package/src/maths/vec2/scale.js +5 -7
  675. package/src/maths/vec2/scale.test.js +4 -3
  676. package/src/maths/vec2/snap.d.ts +2 -4
  677. package/src/maths/vec2/snap.js +5 -7
  678. package/src/maths/vec2/snap.test.js +4 -3
  679. package/src/maths/vec2/squaredDistance.d.ts +2 -4
  680. package/src/maths/vec2/squaredDistance.js +4 -6
  681. package/src/maths/vec2/squaredDistance.test.js +6 -4
  682. package/src/maths/vec2/squaredLength.d.ts +2 -4
  683. package/src/maths/vec2/squaredLength.js +3 -5
  684. package/src/maths/vec2/squaredLength.test.js +6 -4
  685. package/src/maths/vec2/subtract.d.ts +2 -4
  686. package/src/maths/vec2/subtract.js +5 -7
  687. package/src/maths/vec2/subtract.test.js +4 -3
  688. package/src/maths/vec2/toString.d.ts +2 -4
  689. package/src/maths/vec2/toString.js +3 -5
  690. package/src/maths/vec2/transform.d.ts +3 -5
  691. package/src/maths/vec2/transform.js +5 -7
  692. package/src/maths/vec2/transform.test.js +4 -3
  693. package/src/maths/vec2/type.d.ts +1 -3
  694. package/src/maths/vec3/abs.d.ts +2 -4
  695. package/src/maths/vec3/abs.js +4 -6
  696. package/src/maths/vec3/abs.test.js +4 -3
  697. package/src/maths/vec3/add.d.ts +2 -4
  698. package/src/maths/vec3/add.js +5 -7
  699. package/src/maths/vec3/add.test.js +4 -3
  700. package/src/maths/vec3/angle.d.ts +2 -4
  701. package/src/maths/vec3/angle.js +5 -7
  702. package/src/maths/vec3/angle.test.js +6 -4
  703. package/src/maths/vec3/clone.d.ts +2 -4
  704. package/src/maths/vec3/clone.js +4 -6
  705. package/src/maths/vec3/clone.test.js +4 -3
  706. package/src/maths/vec3/copy.d.ts +2 -4
  707. package/src/maths/vec3/copy.js +4 -6
  708. package/src/maths/vec3/copy.test.js +4 -3
  709. package/src/maths/vec3/create.d.ts +2 -4
  710. package/src/maths/vec3/create.js +2 -5
  711. package/src/maths/vec3/create.test.js +3 -3
  712. package/src/maths/vec3/cross.d.ts +2 -4
  713. package/src/maths/vec3/cross.js +5 -7
  714. package/src/maths/vec3/cross.test.js +4 -3
  715. package/src/maths/vec3/distance.d.ts +2 -4
  716. package/src/maths/vec3/distance.js +4 -6
  717. package/src/maths/vec3/distance.test.js +6 -4
  718. package/src/maths/vec3/divide.d.ts +2 -4
  719. package/src/maths/vec3/divide.js +5 -7
  720. package/src/maths/vec3/divide.test.js +4 -3
  721. package/src/maths/vec3/dot.d.ts +2 -4
  722. package/src/maths/vec3/dot.js +4 -6
  723. package/src/maths/vec3/dot.test.js +3 -2
  724. package/src/maths/vec3/equals.d.ts +2 -4
  725. package/src/maths/vec3/equals.js +3 -5
  726. package/src/maths/vec3/equals.test.js +3 -2
  727. package/src/maths/vec3/fromScalar.d.ts +2 -4
  728. package/src/maths/vec3/fromScalar.js +4 -6
  729. package/src/maths/vec3/fromScalar.test.js +4 -3
  730. package/src/maths/vec3/fromValues.d.ts +2 -4
  731. package/src/maths/vec3/fromValues.js +6 -8
  732. package/src/maths/vec3/fromValues.test.js +4 -3
  733. package/src/maths/vec3/fromVec2.d.ts +3 -5
  734. package/src/maths/vec3/fromVec2.js +4 -6
  735. package/src/maths/vec3/fromVec2.test.js +3 -3
  736. package/src/maths/vec3/index.d.ts +33 -34
  737. package/src/maths/vec3/index.js +32 -34
  738. package/src/maths/vec3/length.d.ts +2 -4
  739. package/src/maths/vec3/length.js +3 -5
  740. package/src/maths/vec3/length.test.js +6 -4
  741. package/src/maths/vec3/lerp.d.ts +2 -4
  742. package/src/maths/vec3/lerp.js +6 -8
  743. package/src/maths/vec3/lerp.test.js +4 -3
  744. package/src/maths/vec3/max.d.ts +2 -4
  745. package/src/maths/vec3/max.js +5 -7
  746. package/src/maths/vec3/max.test.js +4 -3
  747. package/src/maths/vec3/min.d.ts +2 -4
  748. package/src/maths/vec3/min.js +5 -7
  749. package/src/maths/vec3/min.test.js +4 -3
  750. package/src/maths/vec3/multiply.d.ts +2 -4
  751. package/src/maths/vec3/multiply.js +5 -7
  752. package/src/maths/vec3/multiply.test.js +4 -3
  753. package/src/maths/vec3/negate.d.ts +2 -4
  754. package/src/maths/vec3/negate.js +4 -6
  755. package/src/maths/vec3/negate.test.js +4 -3
  756. package/src/maths/vec3/normalize.d.ts +2 -4
  757. package/src/maths/vec3/normalize.js +4 -6
  758. package/src/maths/vec3/normalize.test.js +4 -3
  759. package/src/maths/vec3/orthogonal.d.ts +2 -4
  760. package/src/maths/vec3/orthogonal.js +7 -9
  761. package/src/maths/vec3/orthogonal.test.js +4 -3
  762. package/src/maths/vec3/rotateX.d.ts +2 -4
  763. package/src/maths/vec3/rotateX.js +6 -8
  764. package/src/maths/vec3/rotateX.test.js +4 -4
  765. package/src/maths/vec3/rotateY.d.ts +2 -4
  766. package/src/maths/vec3/rotateY.js +6 -8
  767. package/src/maths/vec3/rotateY.test.js +4 -4
  768. package/src/maths/vec3/rotateZ.d.ts +2 -4
  769. package/src/maths/vec3/rotateZ.js +6 -8
  770. package/src/maths/vec3/rotateZ.test.js +4 -4
  771. package/src/maths/vec3/scale.d.ts +2 -4
  772. package/src/maths/vec3/scale.js +5 -7
  773. package/src/maths/vec3/scale.test.js +4 -3
  774. package/src/maths/vec3/snap.d.ts +2 -4
  775. package/src/maths/vec3/snap.js +5 -7
  776. package/src/maths/vec3/snap.test.js +4 -3
  777. package/src/maths/vec3/squaredDistance.d.ts +2 -4
  778. package/src/maths/vec3/squaredDistance.js +4 -6
  779. package/src/maths/vec3/squaredDistance.test.js +6 -4
  780. package/src/maths/vec3/squaredLength.d.ts +2 -4
  781. package/src/maths/vec3/squaredLength.js +3 -5
  782. package/src/maths/vec3/squaredLength.test.js +6 -4
  783. package/src/maths/vec3/subtract.d.ts +2 -4
  784. package/src/maths/vec3/subtract.js +5 -7
  785. package/src/maths/vec3/subtract.test.js +4 -3
  786. package/src/maths/vec3/toString.d.ts +2 -4
  787. package/src/maths/vec3/toString.js +3 -5
  788. package/src/maths/vec3/transform.d.ts +3 -5
  789. package/src/maths/vec3/transform.js +5 -7
  790. package/src/maths/vec3/transform.test.js +12 -15
  791. package/src/maths/vec3/type.d.ts +1 -3
  792. package/src/maths/vec4/clone.d.ts +2 -4
  793. package/src/maths/vec4/clone.js +4 -6
  794. package/src/maths/vec4/clone.test.js +4 -3
  795. package/src/maths/vec4/copy.d.ts +2 -4
  796. package/src/maths/vec4/copy.js +4 -6
  797. package/src/maths/vec4/copy.test.js +4 -3
  798. package/src/maths/vec4/create.d.ts +2 -4
  799. package/src/maths/vec4/create.js +2 -5
  800. package/src/maths/vec4/create.test.js +3 -3
  801. package/src/maths/vec4/dot.d.ts +2 -4
  802. package/src/maths/vec4/dot.js +4 -6
  803. package/src/maths/vec4/dot.test.js +2 -2
  804. package/src/maths/vec4/equals.d.ts +2 -4
  805. package/src/maths/vec4/equals.js +3 -5
  806. package/src/maths/vec4/equals.test.js +3 -2
  807. package/src/maths/vec4/fromScalar.d.ts +2 -4
  808. package/src/maths/vec4/fromScalar.js +3 -5
  809. package/src/maths/vec4/fromScalar.test.js +4 -3
  810. package/src/maths/vec4/fromValues.d.ts +2 -4
  811. package/src/maths/vec4/fromValues.js +7 -9
  812. package/src/maths/vec4/fromValues.test.js +4 -3
  813. package/src/maths/vec4/index.d.ts +10 -11
  814. package/src/maths/vec4/index.js +9 -11
  815. package/src/maths/vec4/toString.d.ts +2 -4
  816. package/src/maths/vec4/toString.js +3 -5
  817. package/src/maths/vec4/transform.d.ts +3 -5
  818. package/src/maths/vec4/transform.js +6 -7
  819. package/src/maths/vec4/transform.test.js +4 -3
  820. package/src/maths/vec4/type.d.ts +1 -3
  821. package/src/measurements/calculateEpsilonFromBounds.js +2 -4
  822. package/src/measurements/calculateEpsilonFromBounds.test.js +4 -3
  823. package/src/measurements/index.d.ts +13 -14
  824. package/src/measurements/index.js +13 -15
  825. package/src/measurements/measureAggregateArea.d.ts +3 -5
  826. package/src/measurements/measureAggregateArea.js +4 -6
  827. package/src/measurements/measureAggregateArea.test.js +4 -3
  828. package/src/measurements/measureAggregateBoundingBox.d.ts +4 -6
  829. package/src/measurements/measureAggregateBoundingBox.js +6 -8
  830. package/src/measurements/measureAggregateBoundingBox.test.js +4 -4
  831. package/src/measurements/measureAggregateEpsilon.d.ts +3 -5
  832. package/src/measurements/measureAggregateEpsilon.js +10 -8
  833. package/src/measurements/measureAggregateEpsilon.test.js +6 -4
  834. package/src/measurements/measureAggregateVolume.d.ts +3 -5
  835. package/src/measurements/measureAggregateVolume.js +4 -6
  836. package/src/measurements/measureAggregateVolume.test.js +4 -3
  837. package/src/measurements/measureArea.d.ts +5 -7
  838. package/src/measurements/measureArea.js +37 -19
  839. package/src/measurements/measureArea.test.js +14 -4
  840. package/src/measurements/measureBoundingBox.d.ts +6 -8
  841. package/src/measurements/measureBoundingBox.js +81 -81
  842. package/src/measurements/measureBoundingBox.test.js +26 -5
  843. package/src/measurements/measureBoundingSphere.d.ts +4 -7
  844. package/src/measurements/measureBoundingSphere.js +83 -64
  845. package/src/measurements/measureBoundingSphere.test.js +7 -4
  846. package/src/measurements/measureCenter.d.ts +4 -6
  847. package/src/measurements/measureCenter.js +4 -6
  848. package/src/measurements/measureCenter.test.js +7 -4
  849. package/src/measurements/measureCenterOfMass.d.ts +4 -6
  850. package/src/measurements/measureCenterOfMass.js +6 -8
  851. package/src/measurements/measureCenterOfMass.test.js +7 -4
  852. package/src/measurements/measureDimensions.d.ts +4 -6
  853. package/src/measurements/measureDimensions.js +3 -5
  854. package/src/measurements/measureDimensions.test.js +7 -4
  855. package/src/measurements/measureEpsilon.d.ts +5 -7
  856. package/src/measurements/measureEpsilon.js +14 -29
  857. package/src/measurements/measureEpsilon.test.js +7 -4
  858. package/src/measurements/measureVolume.d.ts +5 -7
  859. package/src/measurements/measureVolume.js +7 -30
  860. package/src/measurements/measureVolume.test.js +7 -4
  861. package/src/measurements/types.d.ts +2 -1
  862. package/src/operations/booleans/index.d.ts +3 -5
  863. package/src/operations/booleans/index.js +5 -7
  864. package/src/operations/booleans/intersect.d.ts +5 -6
  865. package/src/operations/booleans/intersect.js +12 -14
  866. package/src/operations/booleans/intersect.test.js +25 -0
  867. package/src/operations/booleans/intersectGeom2.js +10 -16
  868. package/src/operations/booleans/intersectGeom2.test.js +23 -17
  869. package/src/operations/booleans/intersectGeom3.js +9 -11
  870. package/src/operations/booleans/intersectGeom3.test.js +13 -17
  871. package/src/operations/booleans/intersectGeom3Sub.js +10 -11
  872. package/src/operations/booleans/martinez/compareEvents.js +45 -0
  873. package/src/operations/booleans/martinez/compareSegments.js +51 -0
  874. package/src/operations/booleans/martinez/computeFields.js +109 -0
  875. package/src/operations/booleans/martinez/connectEdges.js +189 -0
  876. package/src/operations/booleans/martinez/contour.js +12 -0
  877. package/src/operations/booleans/martinez/divideSegment.js +32 -0
  878. package/src/operations/booleans/martinez/edgeType.js +4 -0
  879. package/src/operations/booleans/martinez/fillQueue.js +80 -0
  880. package/src/operations/booleans/martinez/index.js +154 -0
  881. package/src/operations/booleans/martinez/operation.js +4 -0
  882. package/src/operations/booleans/martinez/possibleIntersection.js +113 -0
  883. package/src/operations/booleans/martinez/segmentIntersection.js +132 -0
  884. package/src/operations/booleans/martinez/signedArea.js +16 -0
  885. package/src/operations/booleans/martinez/splaytree.js +599 -0
  886. package/src/operations/booleans/martinez/subdivideSegments.js +82 -0
  887. package/src/operations/booleans/martinez/sweepEvent.js +132 -0
  888. package/src/operations/booleans/martinez/tinyqueue.js +76 -0
  889. package/src/operations/booleans/mayOverlap.js +6 -7
  890. package/src/operations/booleans/mayOverlap.test.js +6 -6
  891. package/src/operations/booleans/scission.js +5 -9
  892. package/src/operations/booleans/scission.test.js +4 -4
  893. package/src/operations/booleans/scissionGeom3.js +15 -16
  894. package/src/operations/booleans/subtract.d.ts +5 -6
  895. package/src/operations/booleans/subtract.js +12 -14
  896. package/src/operations/booleans/subtract.test.js +25 -0
  897. package/src/operations/booleans/subtractGeom2.js +10 -16
  898. package/src/operations/booleans/subtractGeom2.test.js +22 -17
  899. package/src/operations/booleans/subtractGeom3.js +9 -11
  900. package/src/operations/booleans/subtractGeom3.test.js +12 -6
  901. package/src/operations/booleans/subtractGeom3Sub.js +10 -11
  902. package/src/operations/booleans/trees/Node.js +45 -48
  903. package/src/operations/booleans/trees/PolygonTreeNode.js +35 -37
  904. package/src/operations/booleans/trees/Tree.js +9 -12
  905. package/src/operations/booleans/trees/index.js +1 -3
  906. package/src/operations/booleans/trees/splitLineSegmentByPlane.js +2 -4
  907. package/src/operations/booleans/trees/splitPolygonByPlane.js +55 -57
  908. package/src/operations/booleans/union.d.ts +5 -6
  909. package/src/operations/booleans/union.js +12 -14
  910. package/src/operations/booleans/union.test.js +25 -0
  911. package/src/operations/booleans/unionGeom2.js +10 -16
  912. package/src/operations/booleans/unionGeom2.test.js +129 -84
  913. package/src/operations/booleans/unionGeom3.js +9 -11
  914. package/src/operations/booleans/unionGeom3.test.js +17 -9
  915. package/src/operations/booleans/unionGeom3Sub.js +10 -12
  916. package/src/operations/extrusions/extrudeFromSlices.d.ts +3 -6
  917. package/src/operations/extrusions/extrudeFromSlices.js +19 -31
  918. package/src/operations/extrusions/extrudeFromSlices.test.js +47 -48
  919. package/src/operations/extrusions/extrudeHelical.d.ts +2 -4
  920. package/src/operations/extrusions/extrudeHelical.js +19 -26
  921. package/src/operations/extrusions/extrudeHelical.test.js +6 -6
  922. package/src/operations/extrusions/extrudeLinear.d.ts +4 -6
  923. package/src/operations/extrusions/extrudeLinear.js +10 -12
  924. package/src/operations/extrusions/extrudeLinear.test.js +84 -67
  925. package/src/operations/extrusions/extrudeLinearGeom2.js +18 -23
  926. package/src/operations/extrusions/extrudeLinearPath2.js +11 -12
  927. package/src/operations/extrusions/extrudeRotate.d.ts +2 -4
  928. package/src/operations/extrusions/extrudeRotate.js +27 -32
  929. package/src/operations/extrusions/extrudeRotate.test.js +58 -34
  930. package/src/operations/extrusions/extrudeWalls.js +11 -14
  931. package/src/operations/extrusions/extrudeWalls.test.js +24 -48
  932. package/src/operations/extrusions/index.d.ts +5 -9
  933. package/src/operations/extrusions/index.js +6 -10
  934. package/src/operations/extrusions/project.d.ts +6 -8
  935. package/src/operations/extrusions/project.js +36 -29
  936. package/src/operations/extrusions/project.test.js +116 -83
  937. package/src/operations/hulls/hull.d.ts +5 -7
  938. package/src/operations/hulls/hull.js +10 -12
  939. package/src/operations/hulls/hull.test.js +56 -58
  940. package/src/operations/hulls/hullChain.d.ts +5 -7
  941. package/src/operations/hulls/hullChain.js +10 -10
  942. package/src/operations/hulls/hullChain.test.js +17 -8
  943. package/src/operations/hulls/hullGeom2.js +7 -9
  944. package/src/operations/hulls/hullGeom3.js +8 -10
  945. package/src/operations/hulls/hullPath2.js +6 -8
  946. package/src/operations/hulls/hullPath2.test.js +3 -3
  947. package/src/operations/hulls/hullPoints2.js +2 -4
  948. package/src/operations/hulls/hullPoints2.test.js +2 -2
  949. package/src/operations/hulls/index.d.ts +2 -4
  950. package/src/operations/hulls/index.js +3 -5
  951. package/src/operations/hulls/quickhull/Face.js +7 -21
  952. package/src/operations/hulls/quickhull/HalfEdge.js +2 -5
  953. package/src/operations/hulls/quickhull/QuickHull.js +14 -16
  954. package/src/operations/hulls/quickhull/Vertex.js +1 -3
  955. package/src/operations/hulls/quickhull/VertexList.js +1 -4
  956. package/src/operations/hulls/quickhull/index.js +2 -4
  957. package/src/operations/hulls/quickhull/point-line-distance.js +2 -6
  958. package/src/operations/hulls/toUniquePoints.js +4 -6
  959. package/src/operations/modifiers/generalize.d.ts +2 -2
  960. package/src/operations/modifiers/generalize.js +14 -16
  961. package/src/operations/modifiers/generalize.test.js +6 -6
  962. package/src/operations/modifiers/index.d.ts +3 -3
  963. package/src/operations/modifiers/index.js +4 -6
  964. package/src/operations/modifiers/insertTjunctions.js +164 -165
  965. package/src/operations/modifiers/insertTjunctions.test.js +5 -5
  966. package/src/operations/modifiers/mergePolygons.js +35 -36
  967. package/src/operations/modifiers/reTesselateCoplanarPolygons.js +235 -236
  968. package/src/operations/modifiers/reTesselateCoplanarPolygons.test.js +4 -4
  969. package/src/operations/modifiers/retessellate.d.ts +2 -2
  970. package/src/operations/modifiers/retessellate.js +7 -7
  971. package/src/operations/modifiers/retessellate.test.js +4 -4
  972. package/src/operations/modifiers/snap.d.ts +2 -2
  973. package/src/operations/modifiers/snap.js +30 -19
  974. package/src/operations/modifiers/snap.test.js +32 -10
  975. package/src/operations/modifiers/snapPolygons.js +14 -16
  976. package/src/operations/modifiers/snapPolygons.test.js +3 -3
  977. package/src/operations/modifiers/triangulatePolygons.js +5 -6
  978. package/src/operations/offsets/extrudePolygon.js +32 -0
  979. package/src/operations/offsets/index.d.ts +2 -0
  980. package/src/operations/offsets/index.js +9 -0
  981. package/src/operations/offsets/offset.d.ts +12 -0
  982. package/src/operations/offsets/offset.js +36 -0
  983. package/src/operations/offsets/offsetFromPoints.d.ts +10 -0
  984. package/src/operations/{expansions → offsets}/offsetFromPoints.js +29 -28
  985. package/src/operations/offsets/offsetFromPoints.test.js +317 -0
  986. package/src/operations/offsets/offsetGeom2.js +55 -0
  987. package/src/operations/offsets/offsetGeom2.test.js +268 -0
  988. package/src/operations/offsets/offsetGeom3.js +33 -0
  989. package/src/operations/{expansions/expandGeom3.test.js → offsets/offsetGeom3.test.js} +63 -5
  990. package/src/operations/{expansions/expandPath2.js → offsets/offsetPath2.js} +27 -33
  991. package/src/operations/offsets/offsetPath2.test.js +103 -0
  992. package/src/operations/{expansions/expandShell.js → offsets/offsetShell.js} +54 -56
  993. package/src/operations/transforms/align.d.ts +5 -7
  994. package/src/operations/transforms/align.js +9 -9
  995. package/src/operations/transforms/align.test.js +7 -6
  996. package/src/operations/transforms/center.d.ts +3 -3
  997. package/src/operations/transforms/center.js +11 -18
  998. package/src/operations/transforms/center.test.js +16 -6
  999. package/src/operations/transforms/index.d.ts +7 -9
  1000. package/src/operations/transforms/index.js +8 -29
  1001. package/src/operations/transforms/mirror.d.ts +3 -3
  1002. package/src/operations/transforms/mirror.js +11 -18
  1003. package/src/operations/transforms/mirror.test.js +18 -6
  1004. package/src/operations/transforms/rotate.d.ts +6 -6
  1005. package/src/operations/transforms/rotate.js +13 -20
  1006. package/src/operations/transforms/rotate.test.js +18 -7
  1007. package/src/operations/transforms/scale.d.ts +6 -6
  1008. package/src/operations/transforms/scale.js +12 -19
  1009. package/src/operations/transforms/scale.test.js +21 -6
  1010. package/src/operations/transforms/transform.d.ts +3 -3
  1011. package/src/operations/transforms/transform.js +7 -9
  1012. package/src/operations/transforms/transform.test.js +7 -7
  1013. package/src/operations/transforms/translate.d.ts +3 -5
  1014. package/src/operations/transforms/translate.js +13 -20
  1015. package/src/operations/transforms/translate.test.js +18 -6
  1016. package/src/primitives/arc.d.ts +3 -5
  1017. package/src/primitives/arc.js +26 -28
  1018. package/src/primitives/arc.test.js +6 -5
  1019. package/src/primitives/circle.d.ts +3 -5
  1020. package/src/primitives/circle.js +10 -12
  1021. package/src/primitives/circle.test.js +6 -5
  1022. package/src/primitives/commonChecks.js +3 -9
  1023. package/src/primitives/cube.d.ts +3 -5
  1024. package/src/primitives/cube.js +6 -9
  1025. package/src/primitives/cube.test.js +4 -4
  1026. package/src/primitives/cuboid.d.ts +3 -5
  1027. package/src/primitives/cuboid.js +8 -10
  1028. package/src/primitives/cuboid.test.js +4 -4
  1029. package/src/primitives/cylinder.d.ts +3 -5
  1030. package/src/primitives/cylinder.js +11 -15
  1031. package/src/primitives/cylinder.test.js +4 -4
  1032. package/src/primitives/cylinderElliptic.d.ts +3 -5
  1033. package/src/primitives/cylinderElliptic.js +33 -35
  1034. package/src/primitives/cylinderElliptic.test.js +6 -5
  1035. package/src/primitives/ellipse.d.ts +3 -5
  1036. package/src/primitives/ellipse.js +19 -21
  1037. package/src/primitives/ellipse.test.js +6 -5
  1038. package/src/primitives/ellipsoid.d.ts +3 -5
  1039. package/src/primitives/ellipsoid.js +48 -51
  1040. package/src/primitives/ellipsoid.test.js +4 -4
  1041. package/src/primitives/geodesicSphere.d.ts +2 -4
  1042. package/src/primitives/geodesicSphere.js +14 -17
  1043. package/src/primitives/geodesicSphere.test.js +4 -4
  1044. package/src/primitives/index.d.ts +21 -23
  1045. package/src/primitives/index.js +22 -24
  1046. package/src/primitives/line.d.ts +3 -5
  1047. package/src/primitives/line.js +3 -5
  1048. package/src/primitives/line.test.js +4 -4
  1049. package/src/primitives/polygon.d.ts +3 -5
  1050. package/src/primitives/polygon.js +17 -20
  1051. package/src/primitives/polygon.test.js +7 -7
  1052. package/src/primitives/polyhedron.d.ts +4 -6
  1053. package/src/primitives/polyhedron.js +15 -17
  1054. package/src/primitives/polyhedron.test.js +4 -4
  1055. package/src/primitives/rectangle.d.ts +3 -5
  1056. package/src/primitives/rectangle.js +10 -12
  1057. package/src/primitives/rectangle.test.js +4 -4
  1058. package/src/primitives/roundedCuboid.d.ts +3 -5
  1059. package/src/primitives/roundedCuboid.js +57 -58
  1060. package/src/primitives/roundedCuboid.test.js +4 -4
  1061. package/src/primitives/roundedCylinder.d.ts +3 -5
  1062. package/src/primitives/roundedCylinder.js +73 -76
  1063. package/src/primitives/roundedCylinder.test.js +4 -4
  1064. package/src/primitives/roundedRectangle.d.ts +3 -5
  1065. package/src/primitives/roundedRectangle.js +16 -16
  1066. package/src/primitives/roundedRectangle.test.js +4 -4
  1067. package/src/primitives/sphere.d.ts +3 -5
  1068. package/src/primitives/sphere.js +8 -11
  1069. package/src/primitives/sphere.test.js +4 -4
  1070. package/src/primitives/square.d.ts +3 -5
  1071. package/src/primitives/square.js +6 -9
  1072. package/src/primitives/square.test.js +4 -4
  1073. package/src/primitives/star.d.ts +3 -5
  1074. package/src/primitives/star.js +16 -18
  1075. package/src/primitives/star.test.js +4 -4
  1076. package/src/primitives/torus.d.ts +2 -4
  1077. package/src/primitives/torus.js +16 -18
  1078. package/src/primitives/torus.test.js +8 -6
  1079. package/src/primitives/triangle.d.ts +2 -4
  1080. package/src/primitives/triangle.js +9 -11
  1081. package/src/primitives/triangle.test.js +8 -6
  1082. package/src/text/fonts/single-line/hershey/simplex.js +1 -1
  1083. package/src/text/index.d.ts +2 -4
  1084. package/src/text/index.js +3 -5
  1085. package/src/text/vectorChar.d.ts +2 -8
  1086. package/src/text/vectorChar.js +51 -39
  1087. package/src/text/vectorChar.test.js +63 -0
  1088. package/src/text/vectorText.d.ts +2 -8
  1089. package/src/text/vectorText.js +100 -72
  1090. package/src/text/vectorText.test.js +267 -0
  1091. package/src/utils/areAllShapesTheSameType.d.ts +2 -4
  1092. package/src/utils/areAllShapesTheSameType.js +4 -6
  1093. package/src/utils/areAllShapesTheSameType.test.js +3 -3
  1094. package/src/utils/degToRad.d.ts +1 -3
  1095. package/src/utils/degToRad.js +3 -5
  1096. package/src/utils/degToRad.test.js +3 -3
  1097. package/src/utils/flatten.d.ts +2 -4
  1098. package/src/utils/flatten.js +1 -3
  1099. package/src/utils/fnNumberSort.d.ts +1 -3
  1100. package/src/utils/fnNumberSort.js +1 -3
  1101. package/src/utils/index.d.ts +4 -9
  1102. package/src/utils/index.js +5 -10
  1103. package/src/utils/insertSorted.d.ts +1 -3
  1104. package/src/utils/insertSorted.js +11 -13
  1105. package/src/utils/padArrayToLength.d.ts +1 -3
  1106. package/src/utils/padArrayToLength.js +2 -4
  1107. package/src/utils/padArrayToLength.test.js +2 -2
  1108. package/src/utils/radToDeg.d.ts +1 -3
  1109. package/src/utils/radToDeg.js +3 -5
  1110. package/src/utils/radToDeg.test.js +3 -3
  1111. package/src/utils/radiusToSegments.d.ts +1 -3
  1112. package/src/utils/radiusToSegments.js +6 -8
  1113. package/src/utils/radiusToSegments.test.js +3 -3
  1114. package/src/utils/recursiveArray.d.ts +1 -3
  1115. package/test/helpers/asserts.js +9 -16
  1116. package/test/helpers/comparePoints.js +2 -4
  1117. package/test/helpers/comparePolygonLists.js +2 -4
  1118. package/test/helpers/comparePolygons.js +4 -6
  1119. package/test/helpers/comparePolygonsAsPoints.js +4 -6
  1120. package/test/helpers/compareVectors.js +5 -6
  1121. package/test/helpers/index.js +6 -8
  1122. package/test/helpers/nearlyEqual.js +1 -3
  1123. package/tsconfig.json +17 -0
  1124. package/src/geometries/geom2/fromPoints.d.ts +0 -6
  1125. package/src/geometries/geom2/fromPoints.js +0 -35
  1126. package/src/geometries/geom2/fromPoints.test.js +0 -22
  1127. package/src/geometries/poly2/flip.d.ts +0 -5
  1128. package/src/geometries/poly2/flip.js +0 -15
  1129. package/src/geometries/poly3/fromPoints.d.ts +0 -6
  1130. package/src/geometries/poly3/fromPoints.js +0 -25
  1131. package/src/geometries/poly3/fromPoints.test.js +0 -15
  1132. package/src/geometries/poly3/fromPointsAndPlane.d.ts +0 -7
  1133. package/src/geometries/poly3/toPoints.d.ts +0 -6
  1134. package/src/geometries/poly3/toPoints.js +0 -10
  1135. package/src/maths/OrthoNormalBasis.js +0 -207
  1136. package/src/maths/utils/index.d.ts +0 -8
  1137. package/src/maths/utils/index.js +0 -15
  1138. package/src/operations/booleans/fromFakePolygons.js +0 -52
  1139. package/src/operations/booleans/to3DWalls.js +0 -36
  1140. package/src/operations/expansions/expand.d.ts +0 -18
  1141. package/src/operations/expansions/expand.js +0 -42
  1142. package/src/operations/expansions/expand.test.js +0 -188
  1143. package/src/operations/expansions/expandGeom2.js +0 -43
  1144. package/src/operations/expansions/expandGeom3.js +0 -36
  1145. package/src/operations/expansions/extrudePolygon.js +0 -34
  1146. package/src/operations/expansions/index.d.ts +0 -4
  1147. package/src/operations/expansions/index.js +0 -11
  1148. package/src/operations/expansions/offset.d.ts +0 -15
  1149. package/src/operations/expansions/offset.js +0 -36
  1150. package/src/operations/expansions/offset.test.js +0 -503
  1151. package/src/operations/expansions/offsetGeom2.js +0 -47
  1152. package/src/operations/expansions/offsetPath2.js +0 -32
  1153. package/src/operations/extrusions/earcut/assignHoles.test.js +0 -74
  1154. package/src/operations/extrusions/extrudeRectangular.d.ts +0 -17
  1155. package/src/operations/extrusions/extrudeRectangular.js +0 -45
  1156. package/src/operations/extrusions/extrudeRectangular.test.js +0 -72
  1157. package/src/operations/extrusions/extrudeRectangularGeom2.js +0 -46
  1158. package/src/operations/extrusions/extrudeRectangularPath2.js +0 -33
  1159. package/src/operations/extrusions/slice/calculatePlane.d.ts +0 -7
  1160. package/src/operations/extrusions/slice/calculatePlane.js +0 -41
  1161. package/src/operations/extrusions/slice/calculatePlane.test.js +0 -35
  1162. package/src/operations/extrusions/slice/clone.d.ts +0 -6
  1163. package/src/operations/extrusions/slice/clone.js +0 -28
  1164. package/src/operations/extrusions/slice/clone.test.js +0 -34
  1165. package/src/operations/extrusions/slice/create.d.ts +0 -5
  1166. package/src/operations/extrusions/slice/create.js +0 -20
  1167. package/src/operations/extrusions/slice/equals.d.ts +0 -5
  1168. package/src/operations/extrusions/slice/equals.js +0 -27
  1169. package/src/operations/extrusions/slice/equals.test.js +0 -17
  1170. package/src/operations/extrusions/slice/fromPoints.d.ts +0 -9
  1171. package/src/operations/extrusions/slice/fromPoints.js +0 -35
  1172. package/src/operations/extrusions/slice/fromPoints.test.js +0 -15
  1173. package/src/operations/extrusions/slice/fromSides.d.ts +0 -7
  1174. package/src/operations/extrusions/slice/fromSides.js +0 -27
  1175. package/src/operations/extrusions/slice/fromSides.test.js +0 -15
  1176. package/src/operations/extrusions/slice/index.d.ts +0 -16
  1177. package/src/operations/extrusions/slice/index.js +0 -19
  1178. package/src/operations/extrusions/slice/isA.d.ts +0 -5
  1179. package/src/operations/extrusions/slice/isA.js +0 -18
  1180. package/src/operations/extrusions/slice/repair.js +0 -62
  1181. package/src/operations/extrusions/slice/reverse.d.ts +0 -6
  1182. package/src/operations/extrusions/slice/reverse.js +0 -26
  1183. package/src/operations/extrusions/slice/toEdges.d.ts +0 -5
  1184. package/src/operations/extrusions/slice/toEdges.js +0 -13
  1185. package/src/operations/extrusions/slice/toPolygons.d.ts +0 -7
  1186. package/src/operations/extrusions/slice/toString.d.ts +0 -5
  1187. package/src/operations/extrusions/slice/toString.js +0 -15
  1188. package/src/operations/extrusions/slice/transform.d.ts +0 -7
  1189. package/src/operations/extrusions/slice/transform.js +0 -21
  1190. package/src/operations/extrusions/slice/type.d.ts +0 -7
  1191. package/src/operations/hulls/quickhull/get-plane-normal.js +0 -20
  1192. package/src/text/text.test.js +0 -187
  1193. package/src/text/vectorParams.js +0 -26
@@ -1,17 +1,17 @@
1
- const poly3 = require('../poly3')
1
+ import * as poly3 from '../poly3/index.js'
2
2
 
3
- const toPolygons = require('./toPolygons')
3
+ import { toPolygons } from './toPolygons.js'
4
4
 
5
5
  /**
6
6
  * Create a string representing the contents of the given geometry.
7
- * @param {geom3} geometry - the geometry
8
- * @returns {String} a representative string
7
+ * @param {Geom3} geometry - the geometry
8
+ * @returns {string} a representative string
9
9
  * @alias module:modeling/geometries/geom3.toString
10
10
  *
11
11
  * @example
12
12
  * console.out(toString(geometry))
13
13
  */
14
- const toString = (geometry) => {
14
+ export const toString = (geometry) => {
15
15
  const polygons = toPolygons(geometry)
16
16
  let result = 'geom3 (' + polygons.length + ' polygons):\n'
17
17
  polygons.forEach((polygon) => {
@@ -19,5 +19,3 @@ const toString = (geometry) => {
19
19
  })
20
20
  return result
21
21
  }
22
-
23
- module.exports = toString
@@ -0,0 +1,17 @@
1
+ import test from 'ava'
2
+
3
+ import { create, fromPoints, toString } from './index.js'
4
+
5
+ test('toString: serialize empty geom3 into a string', (t) => {
6
+ const geometry = create()
7
+ const result = toString(geometry)
8
+ const expected = 'geom3 (0 polygons):\n'
9
+ t.is(result, expected)
10
+ })
11
+
12
+ test('toString: serialize geom3 into a string', (t) => {
13
+ const geometry = fromPoints([[[0, 0, 3], [0, 1, 3], [2, 0, 3]]])
14
+ const result = toString(geometry)
15
+ const expected = 'geom3 (1 polygons):\n poly3: [[0.0000000, 0.0000000, 3.0000000], [0.0000000, 1.0000000, 3.0000000], [2.0000000, 0.0000000, 3.0000000]]\n'
16
+ t.is(result, expected)
17
+ })
@@ -1,6 +1,4 @@
1
- import Geom3 from './type'
2
- import Mat4 from '../../maths/mat4/type'
1
+ import type { Geom3 } from './type.d.ts'
2
+ import type { Mat4 } from '../../maths/mat4/type.d.ts'
3
3
 
4
- export default transform
5
-
6
- declare function transform(matrix: Mat4, geometry: Geom3): Geom3
4
+ export function transform(matrix: Mat4, geometry: Geom3): Geom3
@@ -1,20 +1,18 @@
1
- const mat4 = require('../../maths/mat4')
1
+ import * as mat4 from '../../maths/mat4/index.js'
2
2
 
3
3
  /**
4
4
  * Transform the given geometry using the given matrix.
5
5
  * This is a lazy transform of the polygons, as this function only adjusts the transforms.
6
6
  * See applyTransforms() for the actual application of the transforms to the polygons.
7
- * @param {mat4} matrix - the matrix to transform with
8
- * @param {geom3} geometry - the geometry to transform
9
- * @returns {geom3} a new geometry
7
+ * @param {Mat4} matrix - the matrix to transform with
8
+ * @param {Geom3} geometry - the geometry to transform
9
+ * @returns {Geom3} a new geometry
10
10
  * @alias module:modeling/geometries/geom3.transform
11
11
  *
12
12
  * @example
13
- * let newgeometry = transform(fromXRotation(degToRad(90)), geometry)
13
+ * let newGeometry = transform(fromXRotation(TAU / 4), geometry)
14
14
  */
15
- const transform = (matrix, geometry) => {
15
+ export const transform = (matrix, geometry) => {
16
16
  const transforms = mat4.multiply(mat4.create(), matrix, geometry.transforms)
17
17
  return Object.assign({}, geometry, { transforms })
18
18
  }
19
-
20
- module.exports = transform
@@ -1,13 +1,13 @@
1
- const test = require('ava')
1
+ import test from 'ava'
2
2
 
3
- const mat4 = require('../../maths/mat4')
3
+ import { mat4 } from '../../maths/index.js'
4
4
 
5
- const { transform, fromPoints, toPolygons } = require('./index')
5
+ import { transform, fromPoints, toPolygons } from './index.js'
6
6
 
7
- const { comparePolygons, compareVectors } = require('../../../test/helpers/')
7
+ import { comparePolygons, compareVectors } from '../../../test/helpers/index.js'
8
8
 
9
9
  test('transform: Adjusts the transforms of a populated geom3', (t) => {
10
- const points = [[[0, 0, 0], [1, 0, 0], [1, 0, 1]]]
10
+ const vertices = [[[0, 0, 0], [1, 0, 0], [1, 0, 1]]]
11
11
  const rotation = 90 * 0.017453292519943295
12
12
  const rotate90 = mat4.fromZRotation(mat4.create(), rotation)
13
13
 
@@ -20,7 +20,7 @@ test('transform: Adjusts the transforms of a populated geom3', (t) => {
20
20
  ],
21
21
  transforms: [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
22
22
  }
23
- const geometry = fromPoints(points)
23
+ const geometry = fromPoints(vertices)
24
24
  let another = transform(rotate90, geometry)
25
25
  t.not(geometry, another)
26
26
  t.true(comparePolygons(another.polygons[0], expected.polygons[0]))
@@ -1,10 +1,8 @@
1
- import Poly3 from '../poly3/type'
2
- import Mat4 from '../../maths/mat4/type'
3
- import { Color } from '../types'
1
+ import type { Poly3 } from '../poly3/type.d.ts'
2
+ import type { Mat4 } from '../../maths/mat4/type.d.ts'
3
+ import type { Color } from '../types.d.ts'
4
4
 
5
- export default Geom3
6
-
7
- declare interface Geom3 {
5
+ export interface Geom3 {
8
6
  polygons: Array<Poly3>
9
7
  transforms: Mat4
10
8
  color?: Color
@@ -1,3 +1 @@
1
- export default validate
2
-
3
- declare function validate(object: any): void
1
+ export function validate(object: any): void
@@ -1,5 +1,6 @@
1
- const poly3 = require('../poly3')
2
- const isA = require('./isA')
1
+ import * as poly3 from '../poly3/index.js'
2
+
3
+ import { isA } from './isA.js'
3
4
 
4
5
  /**
5
6
  * Determine if the given object is a valid 3D geometry.
@@ -7,11 +8,11 @@ const isA = require('./isA')
7
8
  *
8
9
  * **If the geometry is not valid, an exception will be thrown with details of the geometry error.**
9
10
  *
10
- * @param {Object} object - the object to interrogate
11
+ * @param {object} object - the object to interrogate
11
12
  * @throws {Error} error if the geometry is not valid
12
13
  * @alias module:modeling/geometries/geom3.validate
13
14
  */
14
- const validate = (object) => {
15
+ export const validate = (object) => {
15
16
  if (!isA(object)) {
16
17
  throw new Error('invalid geom3 structure')
17
18
  }
@@ -58,5 +59,3 @@ const validateManifold = (object) => {
58
59
  throw new Error(`non-manifold edges ${nonManifold.length}\n${nonManifold.join('\n')}`)
59
60
  }
60
61
  }
61
-
62
- module.exports = validate
@@ -0,0 +1,26 @@
1
+ import test from 'ava'
2
+
3
+ import * as vec3 from '../../maths/vec3/index.js'
4
+ import { fromPoints, validate } from './index.js'
5
+
6
+ // tetrahedron
7
+ const a = vec3.fromValues(-1, -1, 1)
8
+ const b = vec3.fromValues(-1, 1, -1)
9
+ const c = vec3.fromValues(1, -1, -1)
10
+ const d = vec3.fromValues(1, 1, 1)
11
+
12
+ test('validate: allow valid geom3', (t) => {
13
+ // simplest valid geometry
14
+ const geometry = fromPoints([[a, b, c], [d, b, a], [d, a, c], [c, b, d]])
15
+ t.notThrows(() => validate(geometry))
16
+ })
17
+
18
+ test('validate: throw exception for nan', (t) => {
19
+ const geometry = fromPoints([[a, b, c], [d, b, a], [d, a, c], [c, b, [1, 1, NaN]]])
20
+ t.throws(() => validate(geometry))
21
+ })
22
+
23
+ test('validate: throw exception for infinity', (t) => {
24
+ const geometry = fromPoints([[a, b, c], [d, b, a], [d, a, c], [c, b, [1, 1, Infinity]]])
25
+ t.throws(() => validate(geometry))
26
+ })
@@ -1,7 +1,6 @@
1
- export * as geom2 from './geom2'
2
- export * as geom3 from './geom3'
3
- export * as path2 from './path2'
4
- export * as poly2 from './poly2'
5
- export * as poly3 from './poly3'
6
-
7
- export as namespace geometries
1
+ export * as geom2 from './geom2/index.js'
2
+ export * as geom3 from './geom3/index.js'
3
+ export * as path2 from './path2/index.js'
4
+ export * as poly2 from './poly2/index.js'
5
+ export * as poly3 from './poly3/index.js'
6
+ export * as slice from './slice/index.js'
@@ -2,20 +2,21 @@
2
2
  * Geometries are objects that represent the contents of primitives or the results of operations.
3
3
  * Note: Geometries are considered immutable, so never change the contents directly.
4
4
  *
5
- * @see {@link geom2} - 2D geometry consisting of sides
5
+ * @see {@link geom2} - 2D geometry consisting of 2D outlines
6
6
  * @see {@link geom3} - 3D geometry consisting of polygons
7
7
  * @see {@link path2} - 2D geometry consisting of ordered points
8
8
  * @see {@link poly2} - 2D polygon consisting of ordered vertices
9
9
  * @see {@link poly3} - 3D polygon consisting of ordered vertices
10
+ * @see {@link slice} - 3D geometry consisting of 3D outlines
10
11
  *
11
12
  * @module modeling/geometries
12
13
  * @example
13
- * const { geom2, geom3, path2, poly2, poly3 } = require('@jscad/modeling').geometries
14
+ * import { geometries } from '@jscad/modeling'
15
+ * const { geom2, geom3, path2, poly2, poly3 } = geometries
14
16
  */
15
- module.exports = {
16
- geom2: require('./geom2'),
17
- geom3: require('./geom3'),
18
- path2: require('./path2'),
19
- poly2: require('./poly2'),
20
- poly3: require('./poly3')
21
- }
17
+ export * as geom2 from './geom2/index.js'
18
+ export * as geom3 from './geom3/index.js'
19
+ export * as path2 from './path2/index.js'
20
+ export * as poly2 from './poly2/index.js'
21
+ export * as poly3 from './poly3/index.js'
22
+ export * as slice from './slice/index.js'
@@ -1,15 +1,13 @@
1
- import Path2 from './type'
2
- import Vec2 from '../../maths/vec2/type'
3
-
4
- export default appendArc
1
+ import type { Path2 } from './type.d.ts'
2
+ import type { Vec2 } from '../../maths/vec2/type.d.ts'
5
3
 
6
4
  export interface AppendArcOptions {
7
5
  endpoint: Vec2
8
6
  radius?: Vec2
9
- xaxisrotation?: number
7
+ xaxisRotation?: number
10
8
  clockwise?: boolean
11
9
  large?: boolean
12
10
  segments?: number
13
11
  }
14
12
 
15
- declare function appendArc(options: AppendArcOptions, geometry: Path2): Path2
13
+ export function appendArc(options: AppendArcOptions, geometry: Path2): Path2
@@ -1,38 +1,38 @@
1
- const { TAU } = require('../../maths/constants')
2
- const vec2 = require('../../maths/vec2')
1
+ import { TAU } from '../../maths/constants.js'
2
+ import * as vec2 from '../../maths/vec2/index.js'
3
3
 
4
- const fromPoints = require('./fromPoints')
5
- const toPoints = require('./toPoints')
4
+ import { fromPoints } from './fromPoints.js'
5
+ import { toPoints } from './toPoints.js'
6
6
 
7
7
  /**
8
8
  * Append a series of points to the given geometry that represent an arc.
9
9
  * This implementation follows the SVG specifications.
10
10
  * @see http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands
11
- * @param {Object} options - options for construction
12
- * @param {vec2} options.endpoint - end point of arc (REQUIRED)
13
- * @param {vec2} [options.radius=[0,0]] - radius of arc (X and Y)
14
- * @param {Number} [options.xaxisrotation=0] - rotation (RADIANS) of the X axis of the arc with respect to the X axis of the coordinate system
15
- * @param {Boolean} [options.clockwise=false] - draw an arc clockwise with respect to the center point
16
- * @param {Boolean} [options.large=false] - draw an arc longer than TAU / 2 radians
17
- * @param {Number} [options.segments=16] - number of segments per full rotation
18
- * @param {path2} geometry - the path of which to append the arc
19
- * @returns {path2} a new path with the appended points
11
+ * @param {object} options - options for construction
12
+ * @param {Vec2} options.endpoint - end point of arc (REQUIRED)
13
+ * @param {Vec2} [options.radius=[0,0]] - radius of arc (X and Y)
14
+ * @param {number} [options.xaxisRotation=0] - rotation (RADIANS) of the X axis of the arc with respect to the X axis of the coordinate system
15
+ * @param {boolean} [options.clockwise=false] - draw an arc clockwise with respect to the center point
16
+ * @param {boolean} [options.large=false] - draw an arc longer than TAU / 2 radians
17
+ * @param {number} [options.segments=16] - number of segments per full rotation
18
+ * @param {Path2} geometry - the path of which to append the arc
19
+ * @returns {Path2} a new path with the appended points
20
20
  * @alias module:modeling/geometries/path2.appendArc
21
21
  *
22
22
  * @example
23
- * let p1 = path2.fromPoints({}, [[27.5,-22.96875]]);
24
- * p1 = path2.appendPoints([[27.5,-3.28125]], p1);
25
- * p1 = path2.appendArc({endpoint: [12.5, -22.96875], radius: [15, -19.6875]}, p1);
23
+ * let myShape = fromPoints({}, [[27.5,-22.96875]]);
24
+ * myShape = appendPoints([[27.5,-3.28125]], myShape);
25
+ * myShape = appendArc({endpoint: [12.5, -22.96875], radius: [15, -19.6875]}, myShape);
26
26
  */
27
- const appendArc = (options, geometry) => {
27
+ export const appendArc = (options, geometry) => {
28
28
  const defaults = {
29
29
  radius: [0, 0], // X and Y radius
30
- xaxisrotation: 0,
30
+ xaxisRotation: 0,
31
31
  clockwise: false,
32
32
  large: false,
33
33
  segments: 16
34
34
  }
35
- let { endpoint, radius, xaxisrotation, clockwise, large, segments } = Object.assign({}, defaults, options)
35
+ let { endpoint, radius, xaxisRotation, clockwise, large, segments } = Object.assign({}, defaults, options)
36
36
 
37
37
  // validate the given options
38
38
  if (!Array.isArray(endpoint)) throw new Error('endpoint must be an array of X and Y values')
@@ -56,59 +56,59 @@ const appendArc = (options, geometry) => {
56
56
  throw new Error('the given path must contain one or more points (as the starting point for the arc)')
57
57
  }
58
58
 
59
- let xradius = radius[0]
60
- let yradius = radius[1]
59
+ let xRadius = radius[0]
60
+ let yRadius = radius[1]
61
61
  const startpoint = points[points.length - 1]
62
62
 
63
63
  // round to precision in order to have determinate calculations
64
- xradius = Math.round(xradius * decimals) / decimals
65
- yradius = Math.round(yradius * decimals) / decimals
64
+ xRadius = Math.round(xRadius * decimals) / decimals
65
+ yRadius = Math.round(yRadius * decimals) / decimals
66
66
  endpoint = vec2.fromValues(Math.round(endpoint[0] * decimals) / decimals, Math.round(endpoint[1] * decimals) / decimals)
67
67
 
68
68
  const sweepFlag = !clockwise
69
- let newpoints = []
70
- if ((xradius === 0) || (yradius === 0)) {
69
+ let newPoints = []
70
+ if ((xRadius === 0) || (yRadius === 0)) {
71
71
  // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes:
72
72
  // If rx = 0 or ry = 0, then treat this as a straight line from (x1, y1) to (x2, y2) and stop
73
- newpoints.push(endpoint)
73
+ newPoints.push(endpoint)
74
74
  } else {
75
- xradius = Math.abs(xradius)
76
- yradius = Math.abs(yradius)
75
+ xRadius = Math.abs(xRadius)
76
+ yRadius = Math.abs(yRadius)
77
77
 
78
78
  // see http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes :
79
- const phi = xaxisrotation
80
- const cosphi = Math.cos(phi)
81
- const sinphi = Math.sin(phi)
82
- const minushalfdistance = vec2.subtract(vec2.create(), startpoint, endpoint)
83
- vec2.scale(minushalfdistance, minushalfdistance, 0.5)
79
+ const phi = xaxisRotation
80
+ const cosPhi = Math.cos(phi)
81
+ const sinPhi = Math.sin(phi)
82
+ const minusHalfDistance = vec2.subtract(vec2.create(), startpoint, endpoint)
83
+ vec2.scale(minusHalfDistance, minusHalfDistance, 0.5)
84
84
  // F.6.5.1:
85
85
  // round to precision in order to have determinate calculations
86
- const x = Math.round((cosphi * minushalfdistance[0] + sinphi * minushalfdistance[1]) * decimals) / decimals
87
- const y = Math.round((-sinphi * minushalfdistance[0] + cosphi * minushalfdistance[1]) * decimals) / decimals
86
+ const x = Math.round((cosPhi * minusHalfDistance[0] + sinPhi * minusHalfDistance[1]) * decimals) / decimals
87
+ const y = Math.round((-sinPhi * minusHalfDistance[0] + cosPhi * minusHalfDistance[1]) * decimals) / decimals
88
88
  const startTranslated = vec2.fromValues(x, y)
89
89
  // F.6.6.2:
90
- const biglambda = (startTranslated[0] * startTranslated[0]) / (xradius * xradius) + (startTranslated[1] * startTranslated[1]) / (yradius * yradius)
91
- if (biglambda > 1.0) {
90
+ const bigLambda = (startTranslated[0] * startTranslated[0]) / (xRadius * xRadius) + (startTranslated[1] * startTranslated[1]) / (yRadius * yRadius)
91
+ if (bigLambda > 1.0) {
92
92
  // F.6.6.3:
93
- const sqrtbiglambda = Math.sqrt(biglambda)
94
- xradius *= sqrtbiglambda
95
- yradius *= sqrtbiglambda
93
+ const sqrtBigLambda = Math.sqrt(bigLambda)
94
+ xRadius *= sqrtBigLambda
95
+ yRadius *= sqrtBigLambda
96
96
  // round to precision in order to have determinate calculations
97
- xradius = Math.round(xradius * decimals) / decimals
98
- yradius = Math.round(yradius * decimals) / decimals
97
+ xRadius = Math.round(xRadius * decimals) / decimals
98
+ yRadius = Math.round(yRadius * decimals) / decimals
99
99
  }
100
100
  // F.6.5.2:
101
- let multiplier1 = Math.sqrt((xradius * xradius * yradius * yradius - xradius * xradius * startTranslated[1] * startTranslated[1] - yradius * yradius * startTranslated[0] * startTranslated[0]) / (xradius * xradius * startTranslated[1] * startTranslated[1] + yradius * yradius * startTranslated[0] * startTranslated[0]))
101
+ let multiplier1 = Math.sqrt((xRadius * xRadius * yRadius * yRadius - xRadius * xRadius * startTranslated[1] * startTranslated[1] - yRadius * yRadius * startTranslated[0] * startTranslated[0]) / (xRadius * xRadius * startTranslated[1] * startTranslated[1] + yRadius * yRadius * startTranslated[0] * startTranslated[0]))
102
102
  if (sweepFlag === large) multiplier1 = -multiplier1
103
- const centerTranslated = vec2.fromValues(xradius * startTranslated[1] / yradius, -yradius * startTranslated[0] / xradius)
103
+ const centerTranslated = vec2.fromValues(xRadius * startTranslated[1] / yRadius, -yRadius * startTranslated[0] / xRadius)
104
104
  vec2.scale(centerTranslated, centerTranslated, multiplier1)
105
105
  // F.6.5.3:
106
- let center = vec2.fromValues(cosphi * centerTranslated[0] - sinphi * centerTranslated[1], sinphi * centerTranslated[0] + cosphi * centerTranslated[1])
106
+ let center = vec2.fromValues(cosPhi * centerTranslated[0] - sinPhi * centerTranslated[1], sinPhi * centerTranslated[0] + cosPhi * centerTranslated[1])
107
107
  center = vec2.add(center, center, vec2.scale(vec2.create(), vec2.add(vec2.create(), startpoint, endpoint), 0.5))
108
108
 
109
109
  // F.6.5.5:
110
- const vector1 = vec2.fromValues((startTranslated[0] - centerTranslated[0]) / xradius, (startTranslated[1] - centerTranslated[1]) / yradius)
111
- const vector2 = vec2.fromValues((-startTranslated[0] - centerTranslated[0]) / xradius, (-startTranslated[1] - centerTranslated[1]) / yradius)
110
+ const vector1 = vec2.fromValues((startTranslated[0] - centerTranslated[0]) / xRadius, (startTranslated[1] - centerTranslated[1]) / yRadius)
111
+ const vector2 = vec2.fromValues((-startTranslated[0] - centerTranslated[0]) / xRadius, (-startTranslated[1] - centerTranslated[1]) / yRadius)
112
112
  const theta1 = vec2.angleRadians(vector1)
113
113
  const theta2 = vec2.angleRadians(vector2)
114
114
  let deltatheta = theta2 - theta1
@@ -120,23 +120,21 @@ const appendArc = (options, geometry) => {
120
120
  }
121
121
 
122
122
  // Ok, we have the center point and angle range (from theta1, deltatheta radians) so we can create the ellipse
123
- let numsteps = Math.ceil(Math.abs(deltatheta) / TAU * segments) + 1
124
- if (numsteps < 1) numsteps = 1
125
- for (let step = 1; step < numsteps; step++) {
126
- const theta = theta1 + step / numsteps * deltatheta
127
- const costheta = Math.cos(theta)
128
- const sintheta = Math.sin(theta)
123
+ let numSteps = Math.ceil(Math.abs(deltatheta) / TAU * segments) + 1
124
+ if (numSteps < 1) numSteps = 1
125
+ for (let step = 1; step < numSteps; step++) {
126
+ const theta = theta1 + step / numSteps * deltatheta
127
+ const cosTheta = Math.cos(theta)
128
+ const sinTheta = Math.sin(theta)
129
129
  // F.6.3.1:
130
- const point = vec2.fromValues(cosphi * xradius * costheta - sinphi * yradius * sintheta, sinphi * xradius * costheta + cosphi * yradius * sintheta)
130
+ const point = vec2.fromValues(cosPhi * xRadius * cosTheta - sinPhi * yRadius * sinTheta, sinPhi * xRadius * cosTheta + cosPhi * yRadius * sinTheta)
131
131
  vec2.add(point, point, center)
132
- newpoints.push(point)
132
+ newPoints.push(point)
133
133
  }
134
134
  // ensure end point is precisely what user gave as parameter
135
- if (numsteps) newpoints.push(options.endpoint)
135
+ if (numSteps) newPoints.push(options.endpoint)
136
136
  }
137
- newpoints = points.concat(newpoints)
138
- const result = fromPoints({}, newpoints)
137
+ newPoints = points.concat(newPoints)
138
+ const result = fromPoints({}, newPoints)
139
139
  return result
140
140
  }
141
-
142
- module.exports = appendArc
@@ -1,10 +1,11 @@
1
- const test = require('ava')
1
+ import test from 'ava'
2
2
 
3
- const { TAU } = require('../../maths/constants')
3
+ import { TAU } from '../../maths/constants.js'
4
+ import * as vec2 from '../../maths/vec2/index.js'
4
5
 
5
- const { appendArc, fromPoints, toPoints } = require('./index')
6
+ import { appendArc, fromPoints, toPoints } from './index.js'
6
7
 
7
- const { comparePoints } = require('../../../test/helpers/')
8
+ import { comparePoints } from '../../../test/helpers/index.js'
8
9
 
9
10
  test('appendArc: appending to an empty path produces an error', (t) => {
10
11
  const p1 = fromPoints({}, [])
@@ -49,8 +50,8 @@ test('appendArc: appending to a path produces a new path', (t) => {
49
50
  pts = toPoints(obs)
50
51
  t.is(pts.length, 16)
51
52
 
52
- // test xaxisrotation
53
- obs = appendArc({ endpoint: [12, -22], radius: [15, -20], xaxisrotation: TAU / 4 }, p2)
53
+ // test xaxisRotation
54
+ obs = appendArc({ endpoint: [12, -22], radius: [15, -20], xaxisRotation: TAU / 4 }, p2)
54
55
  pts = toPoints(obs)
55
56
  exp = [
56
57
  [27, -22],
@@ -73,7 +74,7 @@ test('appendArc: appending to a path produces a new path', (t) => {
73
74
 
74
75
  test('appendArc: appending to a path produces exact endpoint', (t) => {
75
76
  let p1 = fromPoints({}, [[18, 1.8], [1, 3]])
76
- const endpoint = [1, -3]
77
+ const endpoint = vec2.fromValues(1, -3)
77
78
 
78
79
  p1 = appendArc({
79
80
  endpoint,
@@ -1,11 +1,9 @@
1
- import Path2 from './type'
2
- import Vec2 from '../../maths/vec2/type'
3
-
4
- export default appendBezier
1
+ import type { Path2 } from './type.d.ts'
2
+ import type { Vec2 } from '../../maths/vec2/type.d.ts'
5
3
 
6
4
  export interface AppendBezierOptions {
7
5
  controlPoints: Array<Vec2 | null>
8
6
  segments?: number
9
7
  }
10
8
 
11
- declare function appendBezier(options: AppendBezierOptions, geometry: Path2): Path2
9
+ export function appendBezier(options: AppendBezierOptions, geometry: Path2): Path2
@@ -1,30 +1,30 @@
1
- const { TAU } = require('../../maths/constants')
2
- const vec2 = require('../../maths/vec2')
3
- const vec3 = require('../../maths/vec2')
1
+ import { TAU } from '../../maths/constants.js'
2
+ import * as vec2 from '../../maths/vec2/index.js'
3
+ import * as vec3 from '../../maths/vec3/index.js' // FIXME why vec3?
4
4
 
5
- const appendPoints = require('./appendPoints')
6
- const toPoints = require('./toPoints')
5
+ import { appendPoints } from './appendPoints.js'
6
+ import { toPoints } from './toPoints.js'
7
7
 
8
8
  /**
9
- * Append a series of points to the given geometry that represent a Bezier curve.
9
+ * Append a series of points to the given geometry that represent a Bézier curve.
10
10
  * The Bézier curve starts at the last point in the given geometry, and ends at the last control point.
11
11
  * The other control points are intermediate control points to transition the curve from start to end points.
12
12
  * The first control point may be null to ensure a smooth transition occurs. In this case,
13
- * the second to last point of the given geometry is mirrored into the control points of the Bezier curve.
13
+ * the second to last point of the given geometry is mirrored into the control points of the Bézier curve.
14
14
  * In other words, the trailing gradient of the geometry matches the new gradient of the curve.
15
- * @param {Object} options - options for construction
16
- * @param {Array} options.controlPoints - list of control points (2D) for the bezier curve
17
- * @param {Number} [options.segment=16] - number of segments per 360 rotation
18
- * @param {path2} geometry - the path of which to appended points
19
- * @returns {path2} a new path with the appended points
15
+ * @param {object} options - options for construction
16
+ * @param {Array} options.controlPoints - list of control points (2D) for the Bézier curve
17
+ * @param {number} [options.segment=16] - number of segments per 360 rotation
18
+ * @param {Path2} geometry - the path of which to append points
19
+ * @returns {Path2} a new path with the appended points
20
20
  * @alias module:modeling/geometries/path2.appendBezier
21
21
  *
22
22
  * @example
23
- * let p5 = path2.create({}, [[10,-20]])
24
- * p5 = path2.appendBezier({controlPoints: [[10,-10],[25,-10],[25,-20]]}, p5);
25
- * p5 = path2.appendBezier({controlPoints: [null, [25,-30],[40,-30],[40,-20]]}, p5)
23
+ * let myShape = fromPoints({}, [[10,-20]])
24
+ * myShape = appendBezier({controlPoints: [[10,-10],[25,-10],[25,-20]]}, myShape);
25
+ * myShape = appendBezier({controlPoints: [null, [25,-30],[40,-30],[40,-20]]}, myShape)
26
26
  */
27
- const appendBezier = (options, geometry) => {
27
+ export const appendBezier = (options, geometry) => {
28
28
  const defaults = {
29
29
  segments: 16
30
30
  }
@@ -64,10 +64,10 @@ const appendBezier = (options, geometry) => {
64
64
  throw new Error('the given path must contain TWO or more points if given a null control point')
65
65
  }
66
66
  // replace the first control point with the mirror of the last bezier control point
67
- const controlpoint = vec2.scale(vec2.create(), points[points.length - 1], 2)
68
- vec2.subtract(controlpoint, controlpoint, lastBezierControlPoint)
67
+ const controlPoint = vec2.scale(vec2.create(), points[points.length - 1], 2)
68
+ vec2.subtract(controlPoint, controlPoint, lastBezierControlPoint)
69
69
 
70
- controlPoints[0] = controlpoint
70
+ controlPoints[0] = controlPoint
71
71
  }
72
72
 
73
73
  // add a control point for the previous end point
@@ -106,38 +106,38 @@ const appendBezier = (options, geometry) => {
106
106
  return point
107
107
  }
108
108
 
109
- const newpoints = []
110
- const newpointsT = []
111
- const numsteps = bezierOrder + 1
112
- for (let i = 0; i < numsteps; ++i) {
113
- const t = i / (numsteps - 1)
109
+ const newPoints = []
110
+ const newPointsT = []
111
+ const numSteps = bezierOrder + 1
112
+ for (let i = 0; i < numSteps; ++i) {
113
+ const t = i / (numSteps - 1)
114
114
  const point = getPointForT(t)
115
- newpoints.push(point)
116
- newpointsT.push(t)
115
+ newPoints.push(point)
116
+ newPointsT.push(t)
117
117
  }
118
118
 
119
- // subdivide each segment until the angle at each vertex becomes small enough:
119
+ // subdivide each segment until the angle becomes small enough:
120
120
  let subdivideBase = 1
121
- const maxangle = TAU / segments
122
- const maxsinangle = Math.sin(maxangle)
123
- while (subdivideBase < newpoints.length - 1) {
124
- const dir1 = vec2.subtract(v0, newpoints[subdivideBase], newpoints[subdivideBase - 1])
121
+ const maxAngle = TAU / segments
122
+ const maxSinAngle = Math.sin(maxAngle)
123
+ while (subdivideBase < newPoints.length - 1) {
124
+ const dir1 = vec2.subtract(v0, newPoints[subdivideBase], newPoints[subdivideBase - 1])
125
125
  vec2.normalize(dir1, dir1)
126
- const dir2 = vec2.subtract(v1, newpoints[subdivideBase + 1], newpoints[subdivideBase])
126
+ const dir2 = vec2.subtract(v1, newPoints[subdivideBase + 1], newPoints[subdivideBase])
127
127
  vec2.normalize(dir2, dir2)
128
- const sinangle = vec2.cross(v3, dir1, dir2) // the sine of the angle
129
- if (Math.abs(sinangle[2]) > maxsinangle) {
128
+ const sinAngle = vec2.cross(v3, dir1, dir2) // the sine of the angle
129
+ if (Math.abs(sinAngle[2]) > maxSinAngle) {
130
130
  // angle is too big, we need to subdivide
131
- const t0 = newpointsT[subdivideBase - 1]
132
- const t1 = newpointsT[subdivideBase + 1]
131
+ const t0 = newPointsT[subdivideBase - 1]
132
+ const t1 = newPointsT[subdivideBase + 1]
133
133
  const newt0 = t0 + (t1 - t0) * 1 / 3
134
134
  const newt1 = t0 + (t1 - t0) * 2 / 3
135
135
  const point0 = getPointForT(newt0)
136
136
  const point1 = getPointForT(newt1)
137
137
  // remove the point at subdivideBase and replace with 2 new points:
138
- newpoints.splice(subdivideBase, 1, point0, point1)
139
- newpointsT.splice(subdivideBase, 1, newt0, newt1)
140
- // re - evaluate the angles, starting at the previous junction since it has changed:
138
+ newPoints.splice(subdivideBase, 1, point0, point1)
139
+ newPointsT.splice(subdivideBase, 1, newt0, newt1)
140
+ // reevaluate the angles, starting at the previous junction since it has changed:
141
141
  subdivideBase--
142
142
  if (subdivideBase < 1) subdivideBase = 1
143
143
  } else {
@@ -147,10 +147,8 @@ const appendBezier = (options, geometry) => {
147
147
 
148
148
  // append to the new points to the given path
149
149
  // but skip the first new point because it is identical to the last point in the given path
150
- newpoints.shift()
151
- const result = appendPoints(newpoints, geometry)
150
+ newPoints.shift()
151
+ const result = appendPoints(newPoints, geometry)
152
152
  result.lastBezierControlPoint = controlPoints[controlPoints.length - 2]
153
153
  return result
154
154
  }
155
-
156
- module.exports = appendBezier