@jscad/modeling 2.7.2 → 2.9.1

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 (238) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/jscad-modeling.min.js +443 -398
  3. package/package.json +2 -2
  4. package/src/curves/bezier/tangentAt.test.js +1 -1
  5. package/src/curves/bezier/valueAt.test.js +1 -1
  6. package/src/geometries/geom2/index.d.ts +1 -0
  7. package/src/geometries/geom2/index.js +12 -1
  8. package/src/geometries/geom2/isA.js +2 -2
  9. package/src/geometries/geom2/toCompactBinary.js +4 -4
  10. package/src/geometries/geom2/toString.js +1 -1
  11. package/src/geometries/geom2/transform.test.js +1 -1
  12. package/src/geometries/geom2/validate.d.ts +3 -0
  13. package/src/geometries/geom2/validate.js +36 -0
  14. package/src/geometries/geom3/fromCompactBinary.js +1 -1
  15. package/src/geometries/geom3/index.d.ts +1 -0
  16. package/src/geometries/geom3/index.js +19 -1
  17. package/src/geometries/geom3/isA.js +2 -2
  18. package/src/geometries/geom3/toCompactBinary.js +4 -4
  19. package/src/geometries/geom3/toString.js +1 -1
  20. package/src/geometries/geom3/transform.test.js +1 -1
  21. package/src/geometries/geom3/validate.d.ts +3 -0
  22. package/src/geometries/geom3/validate.js +62 -0
  23. package/src/geometries/index.js +8 -1
  24. package/src/geometries/path2/eachPoint.js +3 -3
  25. package/src/geometries/path2/index.d.ts +1 -0
  26. package/src/geometries/path2/index.js +13 -1
  27. package/src/geometries/path2/isA.js +2 -2
  28. package/src/geometries/path2/reverse.js +4 -4
  29. package/src/geometries/path2/toCompactBinary.js +6 -6
  30. package/src/geometries/path2/toString.js +1 -1
  31. package/src/geometries/path2/transform.test.js +1 -1
  32. package/src/geometries/path2/validate.d.ts +3 -0
  33. package/src/geometries/path2/validate.js +41 -0
  34. package/src/geometries/poly2/arePointsInside.js +0 -35
  35. package/src/geometries/poly2/arePointsInside.test.js +1 -1
  36. package/src/geometries/poly2/index.js +6 -0
  37. package/src/geometries/poly3/index.d.ts +1 -0
  38. package/src/geometries/poly3/index.js +9 -2
  39. package/src/geometries/poly3/invert.js +7 -1
  40. package/src/geometries/poly3/isA.js +2 -2
  41. package/src/geometries/poly3/isConvex.js +2 -2
  42. package/src/geometries/poly3/measureArea.js +4 -4
  43. package/src/geometries/poly3/measureArea.test.js +16 -16
  44. package/src/geometries/poly3/measureBoundingBox.js +2 -2
  45. package/src/geometries/poly3/measureBoundingSphere.js +2 -2
  46. package/src/geometries/poly3/measureBoundingSphere.test.js +8 -8
  47. package/src/geometries/poly3/measureSignedVolume.js +4 -4
  48. package/src/geometries/poly3/toPoints.js +2 -2
  49. package/src/geometries/poly3/toString.js +2 -2
  50. package/src/geometries/poly3/transform.js +2 -2
  51. package/src/geometries/poly3/validate.d.ts +4 -0
  52. package/src/geometries/poly3/validate.js +50 -0
  53. package/src/maths/index.js +1 -1
  54. package/src/maths/line2/equals.js +2 -2
  55. package/src/maths/line2/fromValues.js +2 -2
  56. package/src/maths/line2/intersectPointOfLines.js +1 -1
  57. package/src/maths/line2/intersectPointOfLines.test.js +1 -1
  58. package/src/maths/line2/reverse.test.js +1 -1
  59. package/src/maths/line2/transform.test.js +1 -1
  60. package/src/maths/line3/equals.js +2 -2
  61. package/src/maths/line3/reverse.test.js +1 -1
  62. package/src/maths/line3/transform.test.js +1 -1
  63. package/src/maths/mat4/fromVectorRotation.js +1 -1
  64. package/src/maths/mat4/fromVectorRotation.test.js +1 -1
  65. package/src/maths/mat4/identity.test.js +1 -1
  66. package/src/maths/mat4/invert.js +18 -18
  67. package/src/maths/mat4/isIdentity.js +1 -1
  68. package/src/maths/mat4/isMirroring.js +4 -4
  69. package/src/maths/mat4/isMirroring.test.js +1 -1
  70. package/src/maths/mat4/leftMultiplyVec3.js +2 -2
  71. package/src/maths/mat4/toString.js +2 -2
  72. package/src/maths/mat4/translate.test.js +1 -1
  73. package/src/maths/plane/flip.test.js +1 -1
  74. package/src/maths/plane/fromPoints.d.ts +1 -1
  75. package/src/maths/plane/fromPoints.js +1 -3
  76. package/src/maths/plane/signedDistanceToPoint.js +1 -1
  77. package/src/maths/plane/transform.test.js +1 -1
  78. package/src/maths/utils/aboutEqualNormals.js +2 -2
  79. package/src/maths/vec2/abs.d.ts +1 -1
  80. package/src/maths/vec2/add.test.js +1 -1
  81. package/src/maths/vec2/angleDegrees.d.ts +1 -1
  82. package/src/maths/vec2/angleRadians.d.ts +1 -1
  83. package/src/maths/vec2/create.js +1 -1
  84. package/src/maths/vec2/cross.test.js +1 -1
  85. package/src/maths/vec2/divide.test.js +1 -1
  86. package/src/maths/vec2/fromAngleDegrees.js +1 -1
  87. package/src/maths/vec2/fromScalar.js +1 -1
  88. package/src/maths/vec2/length.d.ts +1 -1
  89. package/src/maths/vec2/length.js +1 -1
  90. package/src/maths/vec2/lerp.test.js +1 -1
  91. package/src/maths/vec2/multiply.test.js +1 -1
  92. package/src/maths/vec2/negate.test.js +1 -1
  93. package/src/maths/vec2/normal.js +1 -1
  94. package/src/maths/vec2/normalize.d.ts +1 -1
  95. package/src/maths/vec2/normalize.test.js +1 -1
  96. package/src/maths/vec2/rotate.test.js +1 -1
  97. package/src/maths/vec2/squaredLength.d.ts +1 -1
  98. package/src/maths/vec2/squaredLength.js +3 -3
  99. package/src/maths/vec2/subtract.test.js +1 -1
  100. package/src/maths/vec2/toString.js +1 -1
  101. package/src/maths/vec2/transform.test.js +1 -1
  102. package/src/maths/vec3/abs.d.ts +1 -1
  103. package/src/maths/vec3/add.test.js +1 -1
  104. package/src/maths/vec3/cross.test.js +1 -1
  105. package/src/maths/vec3/divide.test.js +1 -1
  106. package/src/maths/vec3/fromScalar.js +1 -1
  107. package/src/maths/vec3/fromVec2.d.ts +1 -1
  108. package/src/maths/vec3/fromVec2.js +3 -3
  109. package/src/maths/vec3/length.d.ts +1 -1
  110. package/src/maths/vec3/length.js +4 -4
  111. package/src/maths/vec3/lerp.test.js +1 -1
  112. package/src/maths/vec3/multiply.test.js +1 -1
  113. package/src/maths/vec3/negate.d.ts +1 -1
  114. package/src/maths/vec3/negate.test.js +1 -1
  115. package/src/maths/vec3/normalize.d.ts +1 -1
  116. package/src/maths/vec3/normalize.test.js +1 -1
  117. package/src/maths/vec3/rotateX.test.js +1 -1
  118. package/src/maths/vec3/rotateY.test.js +1 -1
  119. package/src/maths/vec3/rotateZ.test.js +1 -1
  120. package/src/maths/vec3/scale.test.js +1 -1
  121. package/src/maths/vec3/squaredLength.d.ts +1 -1
  122. package/src/maths/vec3/squaredLength.js +4 -4
  123. package/src/maths/vec3/subtract.test.js +1 -1
  124. package/src/maths/vec3/toString.js +1 -1
  125. package/src/maths/vec3/transform.test.js +1 -1
  126. package/src/maths/vec4/toString.js +1 -1
  127. package/src/maths/vec4/transform.test.js +1 -1
  128. package/src/measurements/measureBoundingSphere.js +4 -4
  129. package/src/measurements/measureCenterOfMass.js +1 -1
  130. package/src/measurements/measureCenterOfMass.test.js +2 -2
  131. package/src/operations/booleans/intersect.test.js +8 -0
  132. package/src/operations/booleans/mayOverlap.js +3 -3
  133. package/src/operations/booleans/retessellate.js +2 -2
  134. package/src/operations/booleans/scission.js +1 -1
  135. package/src/operations/booleans/scission.test.js +4 -4
  136. package/src/operations/booleans/subtract.js +1 -1
  137. package/src/operations/booleans/subtract.test.js +8 -0
  138. package/src/operations/booleans/trees/Node.js +10 -16
  139. package/src/operations/booleans/trees/PolygonTreeNode.js +13 -14
  140. package/src/operations/booleans/trees/Tree.js +1 -2
  141. package/src/operations/booleans/trees/splitPolygonByPlane.js +2 -3
  142. package/src/operations/booleans/union.test.js +28 -1
  143. package/src/operations/booleans/unionGeom3Sub.js +1 -1
  144. package/src/operations/expansions/expand.js +2 -2
  145. package/src/operations/expansions/expand.test.js +32 -55
  146. package/src/operations/expansions/expandShell.js +24 -18
  147. package/src/operations/expansions/offset.js +1 -1
  148. package/src/operations/expansions/offset.test.js +50 -89
  149. package/src/operations/expansions/offsetFromPoints.js +11 -6
  150. package/src/operations/extrusions/earcut/assignHoles.js +91 -0
  151. package/src/operations/extrusions/earcut/assignHoles.test.js +74 -0
  152. package/src/operations/extrusions/earcut/eliminateHoles.js +131 -0
  153. package/src/operations/extrusions/earcut/index.js +252 -0
  154. package/src/operations/extrusions/earcut/linkedList.js +58 -0
  155. package/src/operations/extrusions/earcut/linkedListSort.js +54 -0
  156. package/src/operations/extrusions/earcut/linkedPolygon.js +197 -0
  157. package/src/operations/extrusions/earcut/polygonHierarchy.js +64 -0
  158. package/src/operations/extrusions/earcut/triangle.js +16 -0
  159. package/src/operations/extrusions/extrudeFromSlices.js +10 -3
  160. package/src/operations/extrusions/extrudeFromSlices.test.js +47 -31
  161. package/src/operations/extrusions/extrudeLinear.js +10 -5
  162. package/src/operations/extrusions/extrudeLinear.test.js +91 -35
  163. package/src/operations/extrusions/extrudeLinearGeom2.js +5 -2
  164. package/src/operations/extrusions/extrudeLinearPath2.js +24 -0
  165. package/src/operations/extrusions/extrudeRectangular.js +1 -1
  166. package/src/operations/extrusions/extrudeRectangular.test.js +22 -15
  167. package/src/operations/extrusions/extrudeRotate.test.js +31 -27
  168. package/src/operations/extrusions/project.js +1 -1
  169. package/src/operations/extrusions/project.test.js +5 -5
  170. package/src/operations/extrusions/slice/calculatePlane.js +7 -4
  171. package/src/operations/extrusions/slice/isA.js +2 -2
  172. package/src/operations/extrusions/slice/repairSlice.js +47 -0
  173. package/src/operations/extrusions/slice/toPolygons.js +24 -60
  174. package/src/operations/hulls/hull.test.js +25 -2
  175. package/src/operations/hulls/hullChain.js +1 -1
  176. package/src/operations/hulls/hullChain.test.js +6 -4
  177. package/src/operations/hulls/hullGeom2.js +1 -1
  178. package/src/operations/hulls/hullPath2.js +6 -4
  179. package/src/operations/hulls/hullPath2.test.js +16 -0
  180. package/src/operations/hulls/hullPoints2.test.js +1 -1
  181. package/src/operations/modifiers/edges.js +1 -1
  182. package/src/operations/modifiers/generalize.js +1 -1
  183. package/src/operations/modifiers/generalize.test.js +6 -0
  184. package/src/operations/modifiers/snap.test.js +3 -3
  185. package/src/operations/transforms/align.d.ts +1 -1
  186. package/src/operations/transforms/align.test.js +12 -0
  187. package/src/operations/transforms/center.js +17 -17
  188. package/src/operations/transforms/center.test.js +12 -0
  189. package/src/operations/transforms/mirror.js +12 -12
  190. package/src/operations/transforms/mirror.test.js +16 -0
  191. package/src/operations/transforms/rotate.js +12 -12
  192. package/src/operations/transforms/rotate.test.js +10 -0
  193. package/src/operations/transforms/scale.js +19 -19
  194. package/src/operations/transforms/scale.test.js +15 -0
  195. package/src/operations/transforms/transform.js +3 -3
  196. package/src/operations/transforms/transform.test.js +5 -0
  197. package/src/operations/transforms/translate.js +14 -14
  198. package/src/operations/transforms/translate.test.js +16 -0
  199. package/src/primitives/arc.js +1 -1
  200. package/src/primitives/arc.test.js +11 -0
  201. package/src/primitives/circle.test.js +15 -9
  202. package/src/primitives/cube.test.js +3 -0
  203. package/src/primitives/cuboid.test.js +9 -24
  204. package/src/primitives/cylinder.test.js +7 -4
  205. package/src/primitives/cylinderElliptic.js +13 -6
  206. package/src/primitives/cylinderElliptic.test.js +72 -52
  207. package/src/primitives/ellipse.js +3 -1
  208. package/src/primitives/ellipse.test.js +14 -8
  209. package/src/primitives/ellipsoid.js +7 -5
  210. package/src/primitives/ellipsoid.test.js +84 -82
  211. package/src/primitives/geodesicSphere.d.ts +0 -1
  212. package/src/primitives/geodesicSphere.test.js +3 -0
  213. package/src/primitives/line.test.js +1 -0
  214. package/src/primitives/polygon.test.js +15 -10
  215. package/src/primitives/polyhedron.js +1 -1
  216. package/src/primitives/polyhedron.test.js +14 -42
  217. package/src/primitives/rectangle.test.js +3 -0
  218. package/src/primitives/roundedCuboid.test.js +5 -0
  219. package/src/primitives/roundedCylinder.js +6 -4
  220. package/src/primitives/roundedCylinder.test.js +40 -36
  221. package/src/primitives/roundedRectangle.test.js +5 -0
  222. package/src/primitives/sphere.test.js +52 -73
  223. package/src/primitives/square.test.js +3 -0
  224. package/src/primitives/star.test.js +6 -0
  225. package/src/primitives/torus.d.ts +0 -1
  226. package/src/primitives/torus.test.js +8 -1
  227. package/src/primitives/triangle.js +1 -1
  228. package/src/primitives/triangle.test.js +7 -0
  229. package/src/text/vectorText.js +2 -2
  230. package/src/utils/areAllShapesTheSameType.js +2 -2
  231. package/src/utils/areAllShapesTheSameType.test.js +17 -0
  232. package/src/utils/index.d.ts +1 -0
  233. package/src/utils/index.js +3 -1
  234. package/src/utils/padArrayToLength.js +1 -1
  235. package/src/utils/trigonometry.d.ts +2 -0
  236. package/src/utils/trigonometry.js +35 -0
  237. package/src/utils/trigonometry.test.js +25 -0
  238. package/test/helpers/nearlyEqual.js +4 -1
@@ -10,6 +10,7 @@ test('cylinderElliptic (defaults)', (t) => {
10
10
  const obs = cylinderElliptic()
11
11
  const pts = geom3.toPoints(obs)
12
12
 
13
+ t.notThrows(() => geom3.validate(obs))
13
14
  t.is(pts.length, 96)
14
15
  })
15
16
 
@@ -26,48 +27,49 @@ test('cylinderElliptic (options)', (t) => {
26
27
  [[0.5000000000000001, 0.8660254037844386, -5], [0.5000000000000001, 0.8660254037844386, 5],
27
28
  [0.8660254037844387, 0.49999999999999994, 5], [0.8660254037844387, 0.49999999999999994, -5]],
28
29
  [[0, 0, 5], [0.8660254037844387, 0.49999999999999994, 5], [0.5000000000000001, 0.8660254037844386, 5]],
29
- [[0, 0, -5], [6.123233995736766e-17, 1, -5], [0.5000000000000001, 0.8660254037844386, -5]],
30
- [[6.123233995736766e-17, 1, -5], [6.123233995736766e-17, 1, 5],
30
+ [[0, 0, -5], [0, 1, -5], [0.5000000000000001, 0.8660254037844386, -5]],
31
+ [[0, 1, -5], [0, 1, 5],
31
32
  [0.5000000000000001, 0.8660254037844386, 5], [0.5000000000000001, 0.8660254037844386, -5]],
32
- [[0, 0, 5], [0.5000000000000001, 0.8660254037844386, 5], [6.123233995736766e-17, 1, 5]],
33
- [[0, 0, -5], [-0.4999999999999998, 0.8660254037844387, -5], [6.123233995736766e-17, 1, -5]],
33
+ [[0, 0, 5], [0.5000000000000001, 0.8660254037844386, 5], [0, 1, 5]],
34
+ [[0, 0, -5], [-0.4999999999999998, 0.8660254037844387, -5], [0, 1, -5]],
34
35
  [[-0.4999999999999998, 0.8660254037844387, -5], [-0.4999999999999998, 0.8660254037844387, 5],
35
- [6.123233995736766e-17, 1, 5], [6.123233995736766e-17, 1, -5]],
36
- [[0, 0, 5], [6.123233995736766e-17, 1, 5], [-0.4999999999999998, 0.8660254037844387, 5]],
36
+ [0, 1, 5], [0, 1, -5]],
37
+ [[0, 0, 5], [0, 1, 5], [-0.4999999999999998, 0.8660254037844387, 5]],
37
38
  [[0, 0, -5], [-0.8660254037844387, 0.49999999999999994, -5], [-0.4999999999999998, 0.8660254037844387, -5]],
38
39
  [[-0.8660254037844387, 0.49999999999999994, -5], [-0.8660254037844387, 0.49999999999999994, 5],
39
40
  [-0.4999999999999998, 0.8660254037844387, 5], [-0.4999999999999998, 0.8660254037844387, -5]],
40
41
  [[0, 0, 5], [-0.4999999999999998, 0.8660254037844387, 5], [-0.8660254037844387, 0.49999999999999994, 5]],
41
- [[0, 0, -5], [-1, 1.2246467991473532e-16, -5], [-0.8660254037844387, 0.49999999999999994, -5]],
42
- [[-1, 1.2246467991473532e-16, -5], [-1, 1.2246467991473532e-16, 5],
42
+ [[0, 0, -5], [-1, 0, -5], [-0.8660254037844387, 0.49999999999999994, -5]],
43
+ [[-1, 0, -5], [-1, 0, 5],
43
44
  [-0.8660254037844387, 0.49999999999999994, 5], [-0.8660254037844387, 0.49999999999999994, -5]],
44
- [[0, 0, 5], [-0.8660254037844387, 0.49999999999999994, 5], [-1, 1.2246467991473532e-16, 5]],
45
- [[0, 0, -5], [-0.8660254037844386, -0.5000000000000001, -5], [-1, 1.2246467991473532e-16, -5]],
45
+ [[0, 0, 5], [-0.8660254037844387, 0.49999999999999994, 5], [-1, 0, 5]],
46
+ [[0, 0, -5], [-0.8660254037844386, -0.5000000000000001, -5], [-1, 0, -5]],
46
47
  [[-0.8660254037844386, -0.5000000000000001, -5], [-0.8660254037844386, -0.5000000000000001, 5],
47
- [-1, 1.2246467991473532e-16, 5], [-1, 1.2246467991473532e-16, -5]],
48
- [[0, 0, 5], [-1, 1.2246467991473532e-16, 5], [-0.8660254037844386, -0.5000000000000001, 5]],
48
+ [-1, 0, 5], [-1, 0, -5]],
49
+ [[0, 0, 5], [-1, 0, 5], [-0.8660254037844386, -0.5000000000000001, 5]],
49
50
  [[0, 0, -5], [-0.5000000000000004, -0.8660254037844385, -5], [-0.8660254037844386, -0.5000000000000001, -5]],
50
51
  [[-0.5000000000000004, -0.8660254037844385, -5], [-0.5000000000000004, -0.8660254037844385, 5],
51
52
  [-0.8660254037844386, -0.5000000000000001, 5], [-0.8660254037844386, -0.5000000000000001, -5]],
52
53
  [[0, 0, 5], [-0.8660254037844386, -0.5000000000000001, 5], [-0.5000000000000004, -0.8660254037844385, 5]],
53
- [[0, 0, -5], [-1.8369701987210297e-16, -1, -5], [-0.5000000000000004, -0.8660254037844385, -5]],
54
- [[-1.8369701987210297e-16, -1, -5], [-1.8369701987210297e-16, -1, 5],
54
+ [[0, 0, -5], [0, -1, -5], [-0.5000000000000004, -0.8660254037844385, -5]],
55
+ [[0, -1, -5], [0, -1, 5],
55
56
  [-0.5000000000000004, -0.8660254037844385, 5], [-0.5000000000000004, -0.8660254037844385, -5]],
56
- [[0, 0, 5], [-0.5000000000000004, -0.8660254037844385, 5], [-1.8369701987210297e-16, -1, 5]],
57
- [[0, 0, -5], [0.5000000000000001, -0.8660254037844386, -5], [-1.8369701987210297e-16, -1, -5]],
57
+ [[0, 0, 5], [-0.5000000000000004, -0.8660254037844385, 5], [0, -1, 5]],
58
+ [[0, 0, -5], [0.5000000000000001, -0.8660254037844386, -5], [0, -1, -5]],
58
59
  [[0.5000000000000001, -0.8660254037844386, -5], [0.5000000000000001, -0.8660254037844386, 5],
59
- [-1.8369701987210297e-16, -1, 5], [-1.8369701987210297e-16, -1, -5]],
60
- [[0, 0, 5], [-1.8369701987210297e-16, -1, 5], [0.5000000000000001, -0.8660254037844386, 5]],
60
+ [0, -1, 5], [0, -1, -5]],
61
+ [[0, 0, 5], [0, -1, 5], [0.5000000000000001, -0.8660254037844386, 5]],
61
62
  [[0, 0, -5], [0.8660254037844384, -0.5000000000000004, -5], [0.5000000000000001, -0.8660254037844386, -5]],
62
63
  [[0.8660254037844384, -0.5000000000000004, -5], [0.8660254037844384, -0.5000000000000004, 5],
63
64
  [0.5000000000000001, -0.8660254037844386, 5], [0.5000000000000001, -0.8660254037844386, -5]],
64
65
  [[0, 0, 5], [0.5000000000000001, -0.8660254037844386, 5], [0.8660254037844384, -0.5000000000000004, 5]],
65
- [[0, 0, -5], [1, -2.4492935982947064e-16, -5], [0.8660254037844384, -0.5000000000000004, -5]],
66
- [[1, -2.4492935982947064e-16, -5], [1, -2.4492935982947064e-16, 5],
67
- [0.8660254037844384, -0.5000000000000004, 5], [0.8660254037844384, -0.5000000000000004, -5]],
68
- [[0, 0, 5], [0.8660254037844384, -0.5000000000000004, 5], [1, -2.4492935982947064e-16, 5]]
66
+ [[0, 0, -5], [1, 0, -5], [0.8660254037844384, -0.5000000000000004, -5]],
67
+ [[1, 0, -5], [1, 0, 5], [0.8660254037844384, -0.5000000000000004, 5],
68
+ [0.8660254037844384, -0.5000000000000004, -5]],
69
+ [[0, 0, 5], [0.8660254037844384, -0.5000000000000004, 5], [1, 0, 5]]
69
70
  ]
70
71
 
72
+ t.notThrows(() => geom3.validate(obs))
71
73
  t.is(pts.length, 36)
72
74
  t.true(comparePolygonsAsPoints(pts, exp))
73
75
 
@@ -83,57 +85,57 @@ test('cylinderElliptic (options)', (t) => {
83
85
  [[0.8660254037844387, 0.9999999999999999, -1], [0.5000000000000001, 1.7320508075688772, -1], [1.7320508075688774, 0.49999999999999994, 1]],
84
86
  [[0, 0, 1], [1.7320508075688774, 0.49999999999999994, 1], [1.0000000000000002, 0.8660254037844386, 1]],
85
87
  [[1.7320508075688774, 0.49999999999999994, 1], [0.5000000000000001, 1.7320508075688772, -1], [1.0000000000000002, 0.8660254037844386, 1]],
86
- [[0, 0, -1], [6.123233995736766e-17, 2, -1], [0.5000000000000001, 1.7320508075688772, -1]],
87
- [[0.5000000000000001, 1.7320508075688772, -1], [6.123233995736766e-17, 2, -1], [1.0000000000000002, 0.8660254037844386, 1]],
88
- [[0, 0, 1], [1.0000000000000002, 0.8660254037844386, 1], [1.2246467991473532e-16, 1, 1]],
89
- [[1.0000000000000002, 0.8660254037844386, 1], [6.123233995736766e-17, 2, -1], [1.2246467991473532e-16, 1, 1]],
90
- [[0, 0, -1], [-0.4999999999999998, 1.7320508075688774, -1], [6.123233995736766e-17, 2, -1]],
91
- [[6.123233995736766e-17, 2, -1], [-0.4999999999999998, 1.7320508075688774, -1], [1.2246467991473532e-16, 1, 1]],
92
- [[0, 0, 1], [1.2246467991473532e-16, 1, 1], [-0.9999999999999996, 0.8660254037844387, 1]],
93
- [[1.2246467991473532e-16, 1, 1], [-0.4999999999999998, 1.7320508075688774, -1], [-0.9999999999999996, 0.8660254037844387, 1]],
88
+ [[0, 0, -1], [0, 2, -1], [0.5000000000000001, 1.7320508075688772, -1]],
89
+ [[0.5000000000000001, 1.7320508075688772, -1], [0, 2, -1], [1.0000000000000002, 0.8660254037844386, 1]],
90
+ [[0, 0, 1], [1.0000000000000002, 0.8660254037844386, 1], [0, 1, 1]],
91
+ [[1.0000000000000002, 0.8660254037844386, 1], [0, 2, -1], [0, 1, 1]],
92
+ [[0, 0, -1], [-0.4999999999999998, 1.7320508075688774, -1], [0, 2, -1]],
93
+ [[0, 2, -1], [-0.4999999999999998, 1.7320508075688774, -1], [0, 1, 1]],
94
+ [[0, 0, 1], [0, 1, 1], [-0.9999999999999996, 0.8660254037844387, 1]],
95
+ [[0, 1, 1], [-0.4999999999999998, 1.7320508075688774, -1], [-0.9999999999999996, 0.8660254037844387, 1]],
94
96
  [[0, 0, -1], [-0.8660254037844387, 0.9999999999999999, -1], [-0.4999999999999998, 1.7320508075688774, -1]],
95
97
  [[-0.4999999999999998, 1.7320508075688774, -1], [-0.8660254037844387, 0.9999999999999999, -1], [-0.9999999999999996, 0.8660254037844387, 1]],
96
98
  [[0, 0, 1], [-0.9999999999999996, 0.8660254037844387, 1], [-1.7320508075688774, 0.49999999999999994, 1]],
97
99
  [[-0.9999999999999996, 0.8660254037844387, 1], [-0.8660254037844387, 0.9999999999999999, -1], [-1.7320508075688774, 0.49999999999999994, 1]],
98
- [[0, 0, -1], [-1, 2.4492935982947064e-16, -1], [-0.8660254037844387, 0.9999999999999999, -1]],
99
- [[-0.8660254037844387, 0.9999999999999999, -1], [-1, 2.4492935982947064e-16, -1], [-1.7320508075688774, 0.49999999999999994, 1]],
100
- [[0, 0, 1], [-1.7320508075688774, 0.49999999999999994, 1], [-2, 1.2246467991473532e-16, 1]],
101
- [[-1.7320508075688774, 0.49999999999999994, 1], [-1, 2.4492935982947064e-16, -1], [-2, 1.2246467991473532e-16, 1]],
102
- [[0, 0, -1], [-0.8660254037844386, -1.0000000000000002, -1], [-1, 2.4492935982947064e-16, -1]],
103
- [[-1, 2.4492935982947064e-16, -1], [-0.8660254037844386, -1.0000000000000002, -1], [-2, 1.2246467991473532e-16, 1]],
104
- [[0, 0, 1], [-2, 1.2246467991473532e-16, 1], [-1.7320508075688772, -0.5000000000000001, 1]],
105
- [[-2, 1.2246467991473532e-16, 1], [-0.8660254037844386, -1.0000000000000002, -1], [-1.7320508075688772, -0.5000000000000001, 1]],
100
+ [[0, 0, -1], [-1, 0, -1], [-0.8660254037844387, 0.9999999999999999, -1]],
101
+ [[-0.8660254037844387, 0.9999999999999999, -1], [-1, 0, -1], [-1.7320508075688774, 0.49999999999999994, 1]],
102
+ [[0, 0, 1], [-1.7320508075688774, 0.49999999999999994, 1], [-2, 0, 1]],
103
+ [[-1.7320508075688774, 0.49999999999999994, 1], [-1, 0, -1], [-2, 0, 1]],
104
+ [[0, 0, -1], [-0.8660254037844386, -1.0000000000000002, -1], [-1, 0, -1]],
105
+ [[-1, 0, -1], [-0.8660254037844386, -1.0000000000000002, -1], [-2, 0, 1]],
106
+ [[0, 0, 1], [-2, 0, 1], [-1.7320508075688772, -0.5000000000000001, 1]],
107
+ [[-2, 0, 1], [-0.8660254037844386, -1.0000000000000002, -1], [-1.7320508075688772, -0.5000000000000001, 1]],
106
108
  [[0, 0, -1], [-0.5000000000000004, -1.732050807568877, -1], [-0.8660254037844386, -1.0000000000000002, -1]],
107
109
  [[-0.8660254037844386, -1.0000000000000002, -1], [-0.5000000000000004, -1.732050807568877, -1], [-1.7320508075688772, -0.5000000000000001, 1]],
108
110
  [[0, 0, 1], [-1.7320508075688772, -0.5000000000000001, 1], [-1.0000000000000009, -0.8660254037844385, 1]],
109
111
  [[-1.7320508075688772, -0.5000000000000001, 1], [-0.5000000000000004, -1.732050807568877, -1], [-1.0000000000000009, -0.8660254037844385, 1]],
110
- [[0, 0, -1], [-1.8369701987210297e-16, -2, -1], [-0.5000000000000004, -1.732050807568877, -1]],
111
- [[-0.5000000000000004, -1.732050807568877, -1], [-1.8369701987210297e-16, -2, -1], [-1.0000000000000009, -0.8660254037844385, 1]],
112
- [[0, 0, 1], [-1.0000000000000009, -0.8660254037844385, 1], [-3.6739403974420594e-16, -1, 1]],
113
- [[-1.0000000000000009, -0.8660254037844385, 1], [-1.8369701987210297e-16, -2, -1], [-3.6739403974420594e-16, -1, 1]],
114
- [[0, 0, -1], [0.5000000000000001, -1.7320508075688772, -1], [-1.8369701987210297e-16, -2, -1]],
115
- [[-1.8369701987210297e-16, -2, -1], [0.5000000000000001, -1.7320508075688772, -1], [-3.6739403974420594e-16, -1, 1]],
116
- [[0, 0, 1], [-3.6739403974420594e-16, -1, 1], [1.0000000000000002, -0.8660254037844386, 1]],
117
- [[-3.6739403974420594e-16, -1, 1], [0.5000000000000001, -1.7320508075688772, -1], [1.0000000000000002, -0.8660254037844386, 1]],
112
+ [[0, 0, -1], [0, -2, -1], [-0.5000000000000004, -1.732050807568877, -1]],
113
+ [[-0.5000000000000004, -1.732050807568877, -1], [0, -2, -1], [-1.0000000000000009, -0.8660254037844385, 1]],
114
+ [[0, 0, 1], [-1.0000000000000009, -0.8660254037844385, 1], [0, -1, 1]],
115
+ [[-1.0000000000000009, -0.8660254037844385, 1], [0, -2, -1], [0, -1, 1]],
116
+ [[0, 0, -1], [0.5000000000000001, -1.7320508075688772, -1], [0, -2, -1]],
117
+ [[0, -2, -1], [0.5000000000000001, -1.7320508075688772, -1], [0, -1, 1]],
118
+ [[0, 0, 1], [0, -1, 1], [1.0000000000000002, -0.8660254037844386, 1]],
119
+ [[0, -1, 1], [0.5000000000000001, -1.7320508075688772, -1], [1.0000000000000002, -0.8660254037844386, 1]],
118
120
  [[0, 0, -1], [0.8660254037844384, -1.0000000000000009, -1], [0.5000000000000001, -1.7320508075688772, -1]],
119
121
  [[0.5000000000000001, -1.7320508075688772, -1], [0.8660254037844384, -1.0000000000000009, -1], [1.0000000000000002, -0.8660254037844386, 1]],
120
122
  [[0, 0, 1], [1.0000000000000002, -0.8660254037844386, 1], [1.7320508075688767, -0.5000000000000004, 1]],
121
123
  [[1.0000000000000002, -0.8660254037844386, 1], [0.8660254037844384, -1.0000000000000009, -1], [1.7320508075688767, -0.5000000000000004, 1]],
122
- [[0, 0, -1], [1, -4.898587196589413e-16, -1], [0.8660254037844384, -1.0000000000000009, -1]],
123
- [[0.8660254037844384, -1.0000000000000009, -1], [1, -4.898587196589413e-16, -1], [1.7320508075688767, -0.5000000000000004, 1]],
124
- [[0, 0, 1], [1.7320508075688767, -0.5000000000000004, 1], [2, -2.4492935982947064e-16, 1]],
125
- [[1.7320508075688767, -0.5000000000000004, 1], [1, -4.898587196589413e-16, -1], [2, -2.4492935982947064e-16, 1]]
124
+ [[0, 0, -1], [1, 0, -1], [0.8660254037844384, -1.0000000000000009, -1]],
125
+ [[0.8660254037844384, -1.0000000000000009, -1], [1, 0, -1], [1.7320508075688767, -0.5000000000000004, 1]],
126
+ [[0, 0, 1], [1.7320508075688767, -0.5000000000000004, 1], [2, 0, 1]],
127
+ [[1.7320508075688767, -0.5000000000000004, 1], [1, 0, -1], [2, 0, 1]]
126
128
  ]
127
129
 
130
+ t.notThrows(() => geom3.validate(obs))
128
131
  t.is(pts.length, 48)
129
132
  t.true(comparePolygonsAsPoints(pts, exp))
130
133
 
131
134
  // test startAngle and endAngle
132
135
  obs = cylinderElliptic({ startRadius: [1, 2], endRadius: [2, 1], startAngle: Math.PI / 2, endAngle: Math.PI * 2 * 0.75, segments: 12 })
133
136
  pts = geom3.toPoints(obs)
134
- exp = [
135
- ]
136
137
 
138
+ t.notThrows(() => geom3.validate(obs))
137
139
  t.is(pts.length, 28)
138
140
  // t.true(comparePolygonsAsPoints(pts, exp))
139
141
 
@@ -141,6 +143,7 @@ test('cylinderElliptic (options)', (t) => {
141
143
  obs = cylinderElliptic({ segments: 8 })
142
144
  pts = geom3.toPoints(obs)
143
145
 
146
+ t.notThrows(() => geom3.validate(obs))
144
147
  t.is(pts.length, 24)
145
148
 
146
149
  // test center
@@ -181,6 +184,23 @@ test('cylinderElliptic (options)', (t) => {
181
184
  [[-5, -5, -3.5], [-4.292893218813453, -5.707106781186548, -3.5], [-4, -5, -3.5]]
182
185
  ]
183
186
 
187
+ t.notThrows(() => geom3.validate(obs))
184
188
  t.is(pts.length, 24)
185
189
  t.true(comparePolygonsAsPoints(pts, exp))
186
190
  })
191
+
192
+ test('cylinderElliptic (cone)', (t) => {
193
+ const obs = cylinderElliptic({ endRadius: [0, 0] })
194
+ const pts = geom3.toPoints(obs)
195
+
196
+ t.notThrows(() => geom3.validate(obs))
197
+ t.is(pts.length, 64)
198
+ })
199
+
200
+ test('cylinderElliptic (squished)', (t) => {
201
+ const obs = cylinderElliptic({ startRadius: [1, 0], endRadius: [0, 1], segments: 4 })
202
+ const pts = geom3.toPoints(obs)
203
+
204
+ t.notThrows(() => geom3.validate(obs))
205
+ t.is(pts.length, 8)
206
+ })
@@ -4,6 +4,8 @@ const vec2 = require('../maths/vec2')
4
4
 
5
5
  const geom2 = require('../geometries/geom2')
6
6
 
7
+ const { sin, cos } = require('../utils/trigonometry')
8
+
7
9
  const { isGTE, isNumberArray } = require('./commonChecks')
8
10
 
9
11
  /**
@@ -62,7 +64,7 @@ const ellipse = (options) => {
62
64
  segments = (rotation < Math.PI * 2) ? segments + 1 : segments
63
65
  for (let i = 0; i < segments; i++) {
64
66
  const angle = (step * i) + startAngle
65
- const point = vec2.fromValues(radius[0] * Math.cos(angle), radius[1] * Math.sin(angle))
67
+ const point = vec2.fromValues(radius[0] * cos(angle), radius[1] * sin(angle))
66
68
  vec2.add(point, centerv, point)
67
69
  points.push(point)
68
70
  }
@@ -10,6 +10,7 @@ test('ellipse (defaults)', (t) => {
10
10
  const geometry = ellipse()
11
11
  const obs = geom2.toPoints(geometry)
12
12
 
13
+ t.notThrows(() => geom2.validate(geometry))
13
14
  t.deepEqual(obs.length, 32)
14
15
  })
15
16
 
@@ -52,6 +53,7 @@ test('ellipse (options)', (t) => {
52
53
  [3.9807852804032304, 4.804909677983871]
53
54
  ]
54
55
 
56
+ t.notThrows(() => geom2.validate(geometry))
55
57
  t.deepEqual(obs.length, 32)
56
58
  t.true(comparePoints(obs, exp))
57
59
 
@@ -63,20 +65,21 @@ test('ellipse (options)', (t) => {
63
65
  [2.77163859753386, 1.913417161825449],
64
66
  [2.121320343559643, 3.5355339059327373],
65
67
  [1.1480502970952695, 4.619397662556434],
66
- [1.8369701987210297e-16, 5],
68
+ [0, 5],
67
69
  [-1.1480502970952693, 4.619397662556434],
68
70
  [-2.1213203435596424, 3.5355339059327378],
69
71
  [-2.77163859753386, 1.9134171618254494],
70
- [-3, 6.123233995736766e-16],
72
+ [-3, 0],
71
73
  [-2.7716385975338604, -1.9134171618254483],
72
74
  [-2.121320343559643, -3.5355339059327373],
73
75
  [-1.148050297095271, -4.619397662556432],
74
- [-5.51091059616309e-16, -5],
76
+ [0, -5],
75
77
  [1.14805029709527, -4.619397662556433],
76
78
  [2.121320343559642, -3.5355339059327386],
77
79
  [2.7716385975338595, -1.913417161825452]
78
80
  ]
79
81
 
82
+ t.notThrows(() => geom2.validate(geometry))
80
83
  t.deepEqual(obs.length, 16)
81
84
  t.true(comparePoints(obs, exp))
82
85
 
@@ -84,22 +87,23 @@ test('ellipse (options)', (t) => {
84
87
  geometry = ellipse({ radius: [3, 5], startAngle: Math.PI / 2, segments: 16 })
85
88
  obs = geom2.toPoints(geometry)
86
89
  exp = [
87
- [1.8369701987210297e-16, 5],
90
+ [0, 5],
88
91
  [-1.1480502970952693, 4.619397662556434],
89
92
  [-2.1213203435596424, 3.5355339059327378],
90
93
  [-2.77163859753386, 1.9134171618254494],
91
- [-3, 6.123233995736766e-16],
94
+ [-3, 0],
92
95
  [-2.7716385975338604, -1.9134171618254483],
93
96
  [-2.121320343559643, -3.5355339059327373],
94
97
  [-1.148050297095271, -4.619397662556432],
95
- [-5.51091059616309e-16, -5],
98
+ [0, -5],
96
99
  [1.14805029709527, -4.619397662556433],
97
100
  [2.121320343559642, -3.5355339059327386],
98
101
  [2.7716385975338595, -1.913417161825452],
99
- [3, -1.2246467991473533e-15],
102
+ [3, 0],
100
103
  [0, 0]
101
104
  ]
102
105
 
106
+ t.notThrows(() => geom2.validate(geometry))
103
107
  t.deepEqual(obs.length, 14)
104
108
  t.true(comparePoints(obs, exp))
105
109
 
@@ -111,15 +115,17 @@ test('ellipse (options)', (t) => {
111
115
  [2.77163859753386, 1.913417161825449],
112
116
  [2.121320343559643, 3.5355339059327373],
113
117
  [1.1480502970952695, 4.619397662556434],
114
- [1.8369701987210297e-16, 5],
118
+ [0, 5],
115
119
  [0, 0]
116
120
  ]
117
121
 
122
+ t.notThrows(() => geom2.validate(geometry))
118
123
  t.deepEqual(obs.length, 6)
119
124
  t.true(comparePoints(obs, exp))
120
125
 
121
126
  // test segments
122
127
  geometry = ellipse({ segments: 72 })
123
128
  obs = geom2.toPoints(geometry)
129
+ t.notThrows(() => geom2.validate(geometry))
124
130
  t.deepEqual(obs.length, 72)
125
131
  })
@@ -3,6 +3,8 @@ const vec3 = require('../maths/vec3')
3
3
  const geom3 = require('../geometries/geom3')
4
4
  const poly3 = require('../geometries/poly3')
5
5
 
6
+ const { sin, cos } = require('../utils/trigonometry')
7
+
6
8
  const { isGTE, isNumberArray } = require('./commonChecks')
7
9
 
8
10
  /**
@@ -10,7 +12,7 @@ const { isGTE, isNumberArray } = require('./commonChecks')
10
12
  * @param {Object} [options] - options for construction
11
13
  * @param {Array} [options.center=[0,0,0]] - center of ellipsoid
12
14
  * @param {Array} [options.radius=[1,1,1]] - radius of ellipsoid, along X, Y and Z
13
- * @param {Number} [options.segments=32] - number of segements to create per full rotation
15
+ * @param {Number} [options.segments=32] - number of segments to create per full rotation
14
16
  * @param {Array} [options.axes] - an array with three vectors for the x, y and z base vectors
15
17
  * @returns {geom3} new 3D geometry
16
18
  * @alias module:modeling/primitives.ellipsoid
@@ -42,14 +44,14 @@ const ellipsoid = (options) => {
42
44
  const p1 = vec3.create()
43
45
  const p2 = vec3.create()
44
46
  for (let slice1 = 0; slice1 <= segments; slice1++) {
45
- const angle = Math.PI * 2.0 * slice1 / segments
46
- const cylinderpoint = vec3.add(vec3.create(), vec3.scale(p1, xvector, Math.cos(angle)), vec3.scale(p2, yvector, Math.sin(angle)))
47
+ const angle = 2 * Math.PI * slice1 / segments
48
+ const cylinderpoint = vec3.add(vec3.create(), vec3.scale(p1, xvector, cos(angle)), vec3.scale(p2, yvector, sin(angle)))
47
49
  if (slice1 > 0) {
48
50
  let prevcospitch, prevsinpitch
49
51
  for (let slice2 = 0; slice2 <= qsegments; slice2++) {
50
52
  const pitch = 0.5 * Math.PI * slice2 / qsegments
51
- const cospitch = Math.cos(pitch)
52
- const sinpitch = Math.sin(pitch)
53
+ const cospitch = cos(pitch)
54
+ const sinpitch = sin(pitch)
53
55
  if (slice2 > 0) {
54
56
  let points = []
55
57
  let point
@@ -10,6 +10,7 @@ test('ellipsoid (defaults)', (t) => {
10
10
  const obs = ellipsoid()
11
11
  const pts = geom3.toPoints(obs)
12
12
 
13
+ t.notThrows(() => geom3.validate(obs))
13
14
  t.is(pts.length, 512)
14
15
  })
15
16
 
@@ -26,8 +27,8 @@ test('ellipsoid (options)', (t) => {
26
27
  [1.2990381056766582, -1.25, -6.06217782649107], [1.5000000000000004, 0, -6.06217782649107]],
27
28
  [[1.5000000000000004, 0, 6.06217782649107], [1.2990381056766582, -1.25, 6.06217782649107],
28
29
  [2.25, -2.1650635094610964, 3.4999999999999996], [2.598076211353316, 0, 3.4999999999999996]],
29
- [[1.5000000000000004, 0, -6.06217782649107], [1.2990381056766582, -1.25, -6.06217782649107], [1.8369701987210297e-16, 0, -7]],
30
- [[1.8369701987210297e-16, 0, 7], [1.2990381056766582, -1.25, 6.06217782649107], [1.5000000000000004, 0, 6.06217782649107]],
30
+ [[1.5000000000000004, 0, -6.06217782649107], [1.2990381056766582, -1.25, -6.06217782649107], [0, 0, -7]],
31
+ [[0, 0, 7], [1.2990381056766582, -1.25, 6.06217782649107], [1.5000000000000004, 0, 6.06217782649107]],
31
32
  [[2.598076211353316, -2.4999999999999996, 0], [1.5000000000000004, -4.330127018922193, 0],
32
33
  [1.2990381056766584, -3.75, -3.4999999999999996], [2.25, -2.1650635094610964, -3.4999999999999996]],
33
34
  [[2.25, -2.1650635094610964, 3.4999999999999996], [1.2990381056766584, -3.75, 3.4999999999999996],
@@ -36,28 +37,28 @@ test('ellipsoid (options)', (t) => {
36
37
  [0.7500000000000004, -2.165063509461097, -6.06217782649107], [1.2990381056766582, -1.25, -6.06217782649107]],
37
38
  [[1.2990381056766582, -1.25, 6.06217782649107], [0.7500000000000004, -2.165063509461097, 6.06217782649107],
38
39
  [1.2990381056766584, -3.75, 3.4999999999999996], [2.25, -2.1650635094610964, 3.4999999999999996]],
39
- [[1.2990381056766582, -1.25, -6.06217782649107], [0.7500000000000004, -2.165063509461097, -6.06217782649107], [1.5908628580873605e-16, -1.5308084989341913e-16, -7]],
40
- [[1.5908628580873605e-16, -1.5308084989341913e-16, 7], [0.7500000000000004, -2.165063509461097, 6.06217782649107], [1.2990381056766582, -1.25, 6.06217782649107]],
41
- [[1.5000000000000004, -4.330127018922193, 0], [1.8369701987210297e-16, -5, 0],
42
- [1.5908628580873602e-16, -4.330127018922194, -3.4999999999999996], [1.2990381056766584, -3.75, -3.4999999999999996]],
43
- [[1.2990381056766584, -3.75, 3.4999999999999996], [1.5908628580873602e-16, -4.330127018922194, 3.4999999999999996],
44
- [1.8369701987210297e-16, -5, 0], [1.5000000000000004, -4.330127018922193, 0]],
45
- [[1.2990381056766584, -3.75, -3.4999999999999996], [1.5908628580873602e-16, -4.330127018922194, -3.4999999999999996],
46
- [9.184850993605151e-17, -2.5000000000000004, -6.06217782649107], [0.7500000000000004, -2.165063509461097, -6.06217782649107]],
47
- [[0.7500000000000004, -2.165063509461097, 6.06217782649107], [9.184850993605151e-17, -2.5000000000000004, 6.06217782649107],
48
- [1.5908628580873602e-16, -4.330127018922194, 3.4999999999999996], [1.2990381056766584, -3.75, 3.4999999999999996]],
49
- [[0.7500000000000004, -2.165063509461097, -6.06217782649107], [9.184850993605151e-17, -2.5000000000000004, -6.06217782649107], [9.184850993605152e-17, -2.651438096812267e-16, -7]],
50
- [[9.184850993605152e-17, -2.651438096812267e-16, 7], [9.184850993605151e-17, -2.5000000000000004, 6.06217782649107], [0.7500000000000004, -2.165063509461097, 6.06217782649107]],
51
- [[1.8369701987210297e-16, -5, 0], [-1.4999999999999993, -4.330127018922194, 0],
52
- [-1.2990381056766576, -3.7500000000000004, -3.4999999999999996], [1.5908628580873602e-16, -4.330127018922194, -3.4999999999999996]],
53
- [[1.5908628580873602e-16, -4.330127018922194, 3.4999999999999996], [-1.2990381056766576, -3.7500000000000004, 3.4999999999999996],
54
- [-1.4999999999999993, -4.330127018922194, 0], [1.8369701987210297e-16, -5, 0]],
55
- [[1.5908628580873602e-16, -4.330127018922194, -3.4999999999999996], [-1.2990381056766576, -3.7500000000000004, -3.4999999999999996],
56
- [-0.7499999999999998, -2.1650635094610973, -6.06217782649107], [9.184850993605151e-17, -2.5000000000000004, -6.06217782649107]],
57
- [[9.184850993605151e-17, -2.5000000000000004, 6.06217782649107], [-0.7499999999999998, -2.1650635094610973, 6.06217782649107],
58
- [-1.2990381056766576, -3.7500000000000004, 3.4999999999999996], [1.5908628580873602e-16, -4.330127018922194, 3.4999999999999996]],
59
- [[9.184850993605151e-17, -2.5000000000000004, -6.06217782649107], [-0.7499999999999998, -2.1650635094610973, -6.06217782649107], [1.1248198369963932e-32, -3.061616997868383e-16, -7]],
60
- [[1.1248198369963932e-32, -3.061616997868383e-16, 7], [-0.7499999999999998, -2.1650635094610973, 6.06217782649107], [9.184850993605151e-17, -2.5000000000000004, 6.06217782649107]],
40
+ [[1.2990381056766582, -1.25, -6.06217782649107], [0.7500000000000004, -2.165063509461097, -6.06217782649107], [0, 0, -7]],
41
+ [[0, 0, 7], [0.7500000000000004, -2.165063509461097, 6.06217782649107], [1.2990381056766582, -1.25, 6.06217782649107]],
42
+ [[1.5000000000000004, -4.330127018922193, 0], [0, -5, 0],
43
+ [0, -4.330127018922194, -3.4999999999999996], [1.2990381056766584, -3.75, -3.4999999999999996]],
44
+ [[1.2990381056766584, -3.75, 3.4999999999999996], [0, -4.330127018922194, 3.4999999999999996],
45
+ [0, -5, 0], [1.5000000000000004, -4.330127018922193, 0]],
46
+ [[1.2990381056766584, -3.75, -3.4999999999999996], [0, -4.330127018922194, -3.4999999999999996],
47
+ [0, -2.5000000000000004, -6.06217782649107], [0.7500000000000004, -2.165063509461097, -6.06217782649107]],
48
+ [[0.7500000000000004, -2.165063509461097, 6.06217782649107], [0, -2.5000000000000004, 6.06217782649107],
49
+ [0, -4.330127018922194, 3.4999999999999996], [1.2990381056766584, -3.75, 3.4999999999999996]],
50
+ [[0.7500000000000004, -2.165063509461097, -6.06217782649107], [0, -2.5000000000000004, -6.06217782649107], [0, 0, -7]],
51
+ [[0, 0, 7], [0, -2.5000000000000004, 6.06217782649107], [0.7500000000000004, -2.165063509461097, 6.06217782649107]],
52
+ [[0, -5, 0], [-1.4999999999999993, -4.330127018922194, 0],
53
+ [-1.2990381056766576, -3.7500000000000004, -3.4999999999999996], [0, -4.330127018922194, -3.4999999999999996]],
54
+ [[0, -4.330127018922194, 3.4999999999999996], [-1.2990381056766576, -3.7500000000000004, 3.4999999999999996],
55
+ [-1.4999999999999993, -4.330127018922194, 0], [0, -5, 0]],
56
+ [[0, -4.330127018922194, -3.4999999999999996], [-1.2990381056766576, -3.7500000000000004, -3.4999999999999996],
57
+ [-0.7499999999999998, -2.1650635094610973, -6.06217782649107], [0, -2.5000000000000004, -6.06217782649107]],
58
+ [[0, -2.5000000000000004, 6.06217782649107], [-0.7499999999999998, -2.1650635094610973, 6.06217782649107],
59
+ [-1.2990381056766576, -3.7500000000000004, 3.4999999999999996], [0, -4.330127018922194, 3.4999999999999996]],
60
+ [[0, -2.5000000000000004, -6.06217782649107], [-0.7499999999999998, -2.1650635094610973, -6.06217782649107], [0, 0, -7]],
61
+ [[0, 0, 7], [-0.7499999999999998, -2.1650635094610973, 6.06217782649107], [0, -2.5000000000000004, 6.06217782649107]],
61
62
  [[-1.4999999999999993, -4.330127018922194, 0], [-2.598076211353316, -2.4999999999999996, 0],
62
63
  [-2.25, -2.1650635094610964, -3.4999999999999996], [-1.2990381056766576, -3.7500000000000004, -3.4999999999999996]],
63
64
  [[-1.2990381056766576, -3.7500000000000004, 3.4999999999999996], [-2.25, -2.1650635094610964, 3.4999999999999996],
@@ -66,28 +67,28 @@ test('ellipsoid (options)', (t) => {
66
67
  [-1.2990381056766582, -1.25, -6.06217782649107], [-0.7499999999999998, -2.1650635094610973, -6.06217782649107]],
67
68
  [[-0.7499999999999998, -2.1650635094610973, 6.06217782649107], [-1.2990381056766582, -1.25, 6.06217782649107],
68
69
  [-2.25, -2.1650635094610964, 3.4999999999999996], [-1.2990381056766576, -3.7500000000000004, 3.4999999999999996]],
69
- [[-0.7499999999999998, -2.1650635094610973, -6.06217782649107], [-1.2990381056766582, -1.25, -6.06217782649107], [-9.184850993605145e-17, -2.6514380968122674e-16, -7]],
70
- [[-9.184850993605145e-17, -2.6514380968122674e-16, 7], [-1.2990381056766582, -1.25, 6.06217782649107], [-0.7499999999999998, -2.1650635094610973, 6.06217782649107]],
71
- [[-2.598076211353316, -2.4999999999999996, 0], [-3, -6.123233995736766e-16, 0],
72
- [-2.598076211353316, -5.302876193624535e-16, -3.4999999999999996], [-2.25, -2.1650635094610964, -3.4999999999999996]],
73
- [[-2.25, -2.1650635094610964, 3.4999999999999996], [-2.598076211353316, -5.302876193624535e-16, 3.4999999999999996],
74
- [-3, -6.123233995736766e-16, 0], [-2.598076211353316, -2.4999999999999996, 0]],
75
- [[-2.25, -2.1650635094610964, -3.4999999999999996], [-2.598076211353316, -5.302876193624535e-16, -3.4999999999999996],
76
- [-1.5000000000000004, -3.0616169978683836e-16, -6.06217782649107], [-1.2990381056766582, -1.25, -6.06217782649107]],
77
- [[-1.2990381056766582, -1.25, 6.06217782649107], [-1.5000000000000004, -3.0616169978683836e-16, 6.06217782649107],
78
- [-2.598076211353316, -5.302876193624535e-16, 3.4999999999999996], [-2.25, -2.1650635094610964, 3.4999999999999996]],
79
- [[-1.2990381056766582, -1.25, -6.06217782649107], [-1.5000000000000004, -3.0616169978683836e-16, -6.06217782649107], [-1.5908628580873605e-16, -1.5308084989341913e-16, -7]],
80
- [[-1.5908628580873605e-16, -1.5308084989341913e-16, 7], [-1.5000000000000004, -3.0616169978683836e-16, 6.06217782649107], [-1.2990381056766582, -1.25, 6.06217782649107]],
81
- [[-3, -6.123233995736766e-16, 0], [-2.5980762113533165, 2.4999999999999987, 0],
82
- [-2.2500000000000004, 2.1650635094610955, -3.4999999999999996], [-2.598076211353316, -5.302876193624535e-16, -3.4999999999999996]],
83
- [[-2.598076211353316, -5.302876193624535e-16, 3.4999999999999996], [-2.2500000000000004, 2.1650635094610955, 3.4999999999999996],
84
- [-2.5980762113533165, 2.4999999999999987, 0], [-3, -6.123233995736766e-16, 0]],
85
- [[-2.598076211353316, -5.302876193624535e-16, -3.4999999999999996], [-2.2500000000000004, 2.1650635094610955, -3.4999999999999996],
86
- [-1.2990381056766584, 1.2499999999999996, -6.06217782649107], [-1.5000000000000004, -3.0616169978683836e-16, -6.06217782649107]],
87
- [[-1.5000000000000004, -3.0616169978683836e-16, 6.06217782649107], [-1.2990381056766584, 1.2499999999999996, 6.06217782649107],
88
- [-2.2500000000000004, 2.1650635094610955, 3.4999999999999996], [-2.598076211353316, -5.302876193624535e-16, 3.4999999999999996]],
89
- [[-1.5000000000000004, -3.0616169978683836e-16, -6.06217782649107], [-1.2990381056766584, 1.2499999999999996, -6.06217782649107], [-1.8369701987210297e-16, -3.7493994566546446e-32, -7]],
90
- [[-1.8369701987210297e-16, -3.7493994566546446e-32, 7], [-1.2990381056766584, 1.2499999999999996, 6.06217782649107], [-1.5000000000000004, -3.0616169978683836e-16, 6.06217782649107]],
70
+ [[-0.7499999999999998, -2.1650635094610973, -6.06217782649107], [-1.2990381056766582, -1.25, -6.06217782649107], [0, 0, -7]],
71
+ [[0, 0, 7], [-1.2990381056766582, -1.25, 6.06217782649107], [-0.7499999999999998, -2.1650635094610973, 6.06217782649107]],
72
+ [[-2.598076211353316, -2.4999999999999996, 0], [-3, 0, 0],
73
+ [-2.598076211353316, 0, -3.4999999999999996], [-2.25, -2.1650635094610964, -3.4999999999999996]],
74
+ [[-2.25, -2.1650635094610964, 3.4999999999999996], [-2.598076211353316, 0, 3.4999999999999996],
75
+ [-3, 0, 0], [-2.598076211353316, -2.4999999999999996, 0]],
76
+ [[-2.25, -2.1650635094610964, -3.4999999999999996], [-2.598076211353316, 0, -3.4999999999999996],
77
+ [-1.5000000000000004, 0, -6.06217782649107], [-1.2990381056766582, -1.25, -6.06217782649107]],
78
+ [[-1.2990381056766582, -1.25, 6.06217782649107], [-1.5000000000000004, 0, 6.06217782649107],
79
+ [-2.598076211353316, 0, 3.4999999999999996], [-2.25, -2.1650635094610964, 3.4999999999999996]],
80
+ [[-1.2990381056766582, -1.25, -6.06217782649107], [-1.5000000000000004, 0, -6.06217782649107], [0, 0, -7]],
81
+ [[0, 0, 7], [-1.5000000000000004, 0, 6.06217782649107], [-1.2990381056766582, -1.25, 6.06217782649107]],
82
+ [[-3, 0, 0], [-2.5980762113533165, 2.4999999999999987, 0],
83
+ [-2.2500000000000004, 2.1650635094610955, -3.4999999999999996], [-2.598076211353316, 0, -3.4999999999999996]],
84
+ [[-2.598076211353316, 0, 3.4999999999999996], [-2.2500000000000004, 2.1650635094610955, 3.4999999999999996],
85
+ [-2.5980762113533165, 2.4999999999999987, 0], [-3, 0, 0]],
86
+ [[-2.598076211353316, 0, -3.4999999999999996], [-2.2500000000000004, 2.1650635094610955, -3.4999999999999996],
87
+ [-1.2990381056766584, 1.2499999999999996, -6.06217782649107], [-1.5000000000000004, 0, -6.06217782649107]],
88
+ [[-1.5000000000000004, 0, 6.06217782649107], [-1.2990381056766584, 1.2499999999999996, 6.06217782649107],
89
+ [-2.2500000000000004, 2.1650635094610955, 3.4999999999999996], [-2.598076211353316, 0, 3.4999999999999996]],
90
+ [[-1.5000000000000004, 0, -6.06217782649107], [-1.2990381056766584, 1.2499999999999996, -6.06217782649107], [0, 0, -7]],
91
+ [[0, 0, 7], [-1.2990381056766584, 1.2499999999999996, 6.06217782649107], [-1.5000000000000004, 0, 6.06217782649107]],
91
92
  [[-2.5980762113533165, 2.4999999999999987, 0], [-1.5000000000000013, 4.330127018922193, 0],
92
93
  [-1.2990381056766591, 3.75, -3.4999999999999996], [-2.2500000000000004, 2.1650635094610955, -3.4999999999999996]],
93
94
  [[-2.2500000000000004, 2.1650635094610955, 3.4999999999999996], [-1.2990381056766591, 3.75, 3.4999999999999996],
@@ -96,28 +97,28 @@ test('ellipsoid (options)', (t) => {
96
97
  [-0.7500000000000009, 2.165063509461097, -6.06217782649107], [-1.2990381056766584, 1.2499999999999996, -6.06217782649107]],
97
98
  [[-1.2990381056766584, 1.2499999999999996, 6.06217782649107], [-0.7500000000000009, 2.165063509461097, 6.06217782649107],
98
99
  [-1.2990381056766591, 3.75, 3.4999999999999996], [-2.2500000000000004, 2.1650635094610955, 3.4999999999999996]],
99
- [[-1.2990381056766584, 1.2499999999999996, -6.06217782649107], [-0.7500000000000009, 2.165063509461097, -6.06217782649107], [-1.5908628580873607e-16, 1.5308084989341906e-16, -7]],
100
- [[-1.5908628580873607e-16, 1.5308084989341906e-16, 7], [-0.7500000000000009, 2.165063509461097, 6.06217782649107], [-1.2990381056766584, 1.2499999999999996, 6.06217782649107]],
101
- [[-1.5000000000000013, 4.330127018922193, 0], [-5.51091059616309e-16, 5, 0],
102
- [-4.772588574262082e-16, 4.330127018922194, -3.4999999999999996], [-1.2990381056766591, 3.75, -3.4999999999999996]],
103
- [[-1.2990381056766591, 3.75, 3.4999999999999996], [-4.772588574262082e-16, 4.330127018922194, 3.4999999999999996],
104
- [-5.51091059616309e-16, 5, 0], [-1.5000000000000013, 4.330127018922193, 0]],
105
- [[-1.2990381056766591, 3.75, -3.4999999999999996], [-4.772588574262082e-16, 4.330127018922194, -3.4999999999999996],
106
- [-2.7554552980815453e-16, 2.5000000000000004, -6.06217782649107], [-0.7500000000000009, 2.165063509461097, -6.06217782649107]],
107
- [[-0.7500000000000009, 2.165063509461097, 6.06217782649107], [-2.7554552980815453e-16, 2.5000000000000004, 6.06217782649107],
108
- [-4.772588574262082e-16, 4.330127018922194, 3.4999999999999996], [-1.2990381056766591, 3.75, 3.4999999999999996]],
109
- [[-0.7500000000000009, 2.165063509461097, -6.06217782649107], [-2.7554552980815453e-16, 2.5000000000000004, -6.06217782649107], [-9.184850993605157e-17, 2.651438096812267e-16, -7]],
110
- [[-9.184850993605157e-17, 2.651438096812267e-16, 7], [-2.7554552980815453e-16, 2.5000000000000004, 6.06217782649107], [-0.7500000000000009, 2.165063509461097, 6.06217782649107]],
111
- [[-5.51091059616309e-16, 5, 0], [1.5000000000000004, 4.330127018922193, 0],
112
- [1.2990381056766584, 3.75, -3.4999999999999996], [-4.772588574262082e-16, 4.330127018922194, -3.4999999999999996]],
113
- [[-4.772588574262082e-16, 4.330127018922194, 3.4999999999999996], [1.2990381056766584, 3.75, 3.4999999999999996],
114
- [1.5000000000000004, 4.330127018922193, 0], [-5.51091059616309e-16, 5, 0]],
115
- [[-4.772588574262082e-16, 4.330127018922194, -3.4999999999999996], [1.2990381056766584, 3.75, -3.4999999999999996],
116
- [0.7500000000000004, 2.165063509461097, -6.06217782649107], [-2.7554552980815453e-16, 2.5000000000000004, -6.06217782649107]],
117
- [[-2.7554552980815453e-16, 2.5000000000000004, 6.06217782649107], [0.7500000000000004, 2.165063509461097, 6.06217782649107],
118
- [1.2990381056766584, 3.75, 3.4999999999999996], [-4.772588574262082e-16, 4.330127018922194, 3.4999999999999996]],
119
- [[-2.7554552980815453e-16, 2.5000000000000004, -6.06217782649107], [0.7500000000000004, 2.165063509461097, -6.06217782649107], [-3.3744595109891796e-32, 3.061616997868383e-16, -7]],
120
- [[-3.3744595109891796e-32, 3.061616997868383e-16, 7], [0.7500000000000004, 2.165063509461097, 6.06217782649107], [-2.7554552980815453e-16, 2.5000000000000004, 6.06217782649107]],
100
+ [[-1.2990381056766584, 1.2499999999999996, -6.06217782649107], [-0.7500000000000009, 2.165063509461097, -6.06217782649107], [0, 0, -7]],
101
+ [[0, 0, 7], [-0.7500000000000009, 2.165063509461097, 6.06217782649107], [-1.2990381056766584, 1.2499999999999996, 6.06217782649107]],
102
+ [[-1.5000000000000013, 4.330127018922193, 0], [0, 5, 0],
103
+ [0, 4.330127018922194, -3.4999999999999996], [-1.2990381056766591, 3.75, -3.4999999999999996]],
104
+ [[-1.2990381056766591, 3.75, 3.4999999999999996], [0, 4.330127018922194, 3.4999999999999996],
105
+ [0, 5, 0], [-1.5000000000000013, 4.330127018922193, 0]],
106
+ [[-1.2990381056766591, 3.75, -3.4999999999999996], [0, 4.330127018922194, -3.4999999999999996],
107
+ [0, 2.5000000000000004, -6.06217782649107], [-0.7500000000000009, 2.165063509461097, -6.06217782649107]],
108
+ [[-0.7500000000000009, 2.165063509461097, 6.06217782649107], [0, 2.5000000000000004, 6.06217782649107],
109
+ [0, 4.330127018922194, 3.4999999999999996], [-1.2990381056766591, 3.75, 3.4999999999999996]],
110
+ [[-0.7500000000000009, 2.165063509461097, -6.06217782649107], [0, 2.5000000000000004, -6.06217782649107], [0, 0, -7]],
111
+ [[0, 0, 7], [0, 2.5000000000000004, 6.06217782649107], [-0.7500000000000009, 2.165063509461097, 6.06217782649107]],
112
+ [[0, 5, 0], [1.5000000000000004, 4.330127018922193, 0],
113
+ [1.2990381056766584, 3.75, -3.4999999999999996], [0, 4.330127018922194, -3.4999999999999996]],
114
+ [[0, 4.330127018922194, 3.4999999999999996], [1.2990381056766584, 3.75, 3.4999999999999996],
115
+ [1.5000000000000004, 4.330127018922193, 0], [0, 5, 0]],
116
+ [[0, 4.330127018922194, -3.4999999999999996], [1.2990381056766584, 3.75, -3.4999999999999996],
117
+ [0.7500000000000004, 2.165063509461097, -6.06217782649107], [0, 2.5000000000000004, -6.06217782649107]],
118
+ [[0, 2.5000000000000004, 6.06217782649107], [0.7500000000000004, 2.165063509461097, 6.06217782649107],
119
+ [1.2990381056766584, 3.75, 3.4999999999999996], [0, 4.330127018922194, 3.4999999999999996]],
120
+ [[0, 2.5000000000000004, -6.06217782649107], [0.7500000000000004, 2.165063509461097, -6.06217782649107], [0, 0, -7]],
121
+ [[0, 0, 7], [0.7500000000000004, 2.165063509461097, 6.06217782649107], [0, 2.5000000000000004, 6.06217782649107]],
121
122
  [[1.5000000000000004, 4.330127018922193, 0], [2.598076211353315, 2.500000000000002, 0],
122
123
  [2.2499999999999996, 2.1650635094610986, -3.4999999999999996], [1.2990381056766584, 3.75, -3.4999999999999996]],
123
124
  [[1.2990381056766584, 3.75, 3.4999999999999996], [2.2499999999999996, 2.1650635094610986, 3.4999999999999996],
@@ -126,27 +127,27 @@ test('ellipsoid (options)', (t) => {
126
127
  [1.2990381056766578, 1.2500000000000013, -6.06217782649107], [0.7500000000000004, 2.165063509461097, -6.06217782649107]],
127
128
  [[0.7500000000000004, 2.165063509461097, 6.06217782649107], [1.2990381056766578, 1.2500000000000013, 6.06217782649107],
128
129
  [2.2499999999999996, 2.1650635094610986, 3.4999999999999996], [1.2990381056766584, 3.75, 3.4999999999999996]],
129
- [[0.7500000000000004, 2.165063509461097, -6.06217782649107], [1.2990381056766578, 1.2500000000000013, -6.06217782649107], [9.184850993605152e-17, 2.651438096812267e-16, -7]],
130
- [[9.184850993605152e-17, 2.651438096812267e-16, 7], [1.2990381056766578, 1.2500000000000013, 6.06217782649107], [0.7500000000000004, 2.165063509461097, 6.06217782649107]],
131
- [[2.598076211353315, 2.500000000000002, 0], [3, 1.2246467991473533e-15, 0],
132
- [2.598076211353316, 1.060575238724907e-15, -3.4999999999999996], [2.2499999999999996, 2.1650635094610986, -3.4999999999999996]],
133
- [[2.2499999999999996, 2.1650635094610986, 3.4999999999999996], [2.598076211353316, 1.060575238724907e-15, 3.4999999999999996],
134
- [3, 1.2246467991473533e-15, 0], [2.598076211353315, 2.500000000000002, 0]],
135
- [[2.2499999999999996, 2.1650635094610986, -3.4999999999999996], [2.598076211353316, 1.060575238724907e-15, -3.4999999999999996],
136
- [1.5000000000000004, 6.123233995736767e-16, -6.06217782649107], [1.2990381056766578, 1.2500000000000013, -6.06217782649107]],
137
- [[1.2990381056766578, 1.2500000000000013, 6.06217782649107], [1.5000000000000004, 6.123233995736767e-16, 6.06217782649107],
138
- [2.598076211353316, 1.060575238724907e-15, 3.4999999999999996], [2.2499999999999996, 2.1650635094610986, 3.4999999999999996]],
139
- [[1.2990381056766578, 1.2500000000000013, -6.06217782649107], [1.5000000000000004, 6.123233995736767e-16, -6.06217782649107], [1.5908628580873598e-16, 1.5308084989341928e-16, -7]],
140
- [[1.5908628580873598e-16, 1.5308084989341928e-16, 7], [1.5000000000000004, 6.123233995736767e-16, 6.06217782649107], [1.2990381056766578, 1.2500000000000013, 6.06217782649107]]
130
+ [[0.7500000000000004, 2.165063509461097, -6.06217782649107], [1.2990381056766578, 1.2500000000000013, -6.06217782649107], [0, 0, -7]],
131
+ [[0, 0, 7], [1.2990381056766578, 1.2500000000000013, 6.06217782649107], [0.7500000000000004, 2.165063509461097, 6.06217782649107]],
132
+ [[2.598076211353315, 2.500000000000002, 0], [3, 0, 0],
133
+ [2.598076211353316, 0, -3.4999999999999996], [2.2499999999999996, 2.1650635094610986, -3.4999999999999996]],
134
+ [[2.2499999999999996, 2.1650635094610986, 3.4999999999999996], [2.598076211353316, 0, 3.4999999999999996],
135
+ [3, 0, 0], [2.598076211353315, 2.500000000000002, 0]],
136
+ [[2.2499999999999996, 2.1650635094610986, -3.4999999999999996], [2.598076211353316, 0, -3.4999999999999996],
137
+ [1.5000000000000004, 0, -6.06217782649107], [1.2990381056766578, 1.2500000000000013, -6.06217782649107]],
138
+ [[1.2990381056766578, 1.2500000000000013, 6.06217782649107], [1.5000000000000004, 0, 6.06217782649107],
139
+ [2.598076211353316, 0, 3.4999999999999996], [2.2499999999999996, 2.1650635094610986, 3.4999999999999996]],
140
+ [[1.2990381056766578, 1.2500000000000013, -6.06217782649107], [1.5000000000000004, 0, -6.06217782649107], [0, 0, -7]],
141
+ [[0, 0, 7], [1.5000000000000004, 0, 6.06217782649107], [1.2990381056766578, 1.2500000000000013, 6.06217782649107]]
141
142
  ]
143
+ t.notThrows(() => geom3.validate(obs))
142
144
  t.is(pts.length, 72)
143
145
  t.true(comparePolygonsAsPoints(pts, exp))
144
146
 
145
147
  // test segments
146
148
  obs = ellipsoid({ segments: 8 })
147
149
  pts = geom3.toPoints(obs)
148
- exp = [
149
- ]
150
+ t.notThrows(() => geom3.validate(obs))
150
151
  t.is(pts.length, 32)
151
152
 
152
153
  obs = ellipsoid({ center: [-3, 5, 7], segments: 8 })
@@ -202,6 +203,7 @@ test('ellipsoid (options)', (t) => {
202
203
  [[-3, 5, 8], [-2.2928932188134525, 5, 7.707106781186548], [-2.5, 5.5, 7.707106781186548]]
203
204
  ]
204
205
 
206
+ t.notThrows(() => geom3.validate(obs))
205
207
  t.is(pts.length, 32)
206
208
  t.true(comparePolygonsAsPoints(pts, exp))
207
209
  })
@@ -1,4 +1,3 @@
1
- import Vec3 from '../maths/vec3/type'
2
1
  import Geom3 from '../geometries/geom3/type'
3
2
 
4
3
  export default geodesicSphere
@@ -9,6 +9,7 @@ const comparePolygonsAsPoints = require('../../test/helpers/comparePolygonsAsPoi
9
9
  test('geodesicSphere (defaults)', (t) => {
10
10
  const obs = geodesicSphere()
11
11
  const pts = geom3.toPoints(obs)
12
+ t.notThrows(() => geom3.validate(obs))
12
13
  t.is(pts.length, 20)
13
14
  })
14
15
 
@@ -39,6 +40,7 @@ test('geodesicSphere (options)', (t) => {
39
40
  [[0, -2.628654726407001, -4.253254557317035], [2.628654726407001, -4.253254557317035, 0], [-2.628654726407001, -4.253254557317035, 0]]
40
41
  ]
41
42
 
43
+ t.notThrows(() => geom3.validate(obs))
42
44
  t.is(pts.length, 20)
43
45
  t.true(comparePolygonsAsPoints(pts, exp))
44
46
 
@@ -46,5 +48,6 @@ test('geodesicSphere (options)', (t) => {
46
48
  obs = geodesicSphere({ radius: 5, frequency: 18 })
47
49
  pts = geom3.toPoints(obs)
48
50
 
51
+ t.notThrows.skip(() => geom3.validate(obs))
49
52
  t.is(pts.length, 180)
50
53
  })
@@ -11,6 +11,7 @@ test('line (defaults)', (t) => {
11
11
  const geometry = line([[0, 0], [1, 1], [-3, 3]])
12
12
  const obs = path2.toPoints(geometry)
13
13
 
14
+ t.notThrows(() => path2.validate(geometry))
14
15
  t.deepEqual(obs.length, 3)
15
16
  t.true(comparePoints(obs, exp))
16
17
  })