@vived/core 1.4.2 → 1.4.3

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 (378) hide show
  1. package/README.md +118 -20
  2. package/dist/cjs/AppObject/AppObject.js +53 -0
  3. package/dist/cjs/AppObject/AppObject.js.map +1 -1
  4. package/dist/cjs/AppObject/AppObjectComponent.js +78 -0
  5. package/dist/cjs/AppObject/AppObjectComponent.js.map +1 -1
  6. package/dist/cjs/AppObject/AppObjectController.js +22 -0
  7. package/dist/cjs/AppObject/AppObjectController.js.map +1 -1
  8. package/dist/cjs/AppObject/AppObjectEntity.js +52 -0
  9. package/dist/cjs/AppObject/AppObjectEntity.js.map +1 -1
  10. package/dist/cjs/AppObject/AppObjectEntityRepo.js +75 -1
  11. package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +1 -1
  12. package/dist/cjs/AppObject/AppObjectPM.js +46 -0
  13. package/dist/cjs/AppObject/AppObjectPM.js.map +1 -1
  14. package/dist/cjs/AppObject/AppObjectRepo.js +20 -0
  15. package/dist/cjs/AppObject/AppObjectRepo.js.map +1 -1
  16. package/dist/cjs/AppObject/AppObjectUC.js +23 -0
  17. package/dist/cjs/AppObject/AppObjectUC.js.map +1 -1
  18. package/dist/cjs/AppObject/AppObjectView.js +22 -0
  19. package/dist/cjs/AppObject/AppObjectView.js.map +1 -1
  20. package/dist/cjs/AppObject/getSingletonComponent.js +19 -0
  21. package/dist/cjs/AppObject/getSingletonComponent.js.map +1 -1
  22. package/dist/cjs/Entities/MemoizedAngle.js +21 -0
  23. package/dist/cjs/Entities/MemoizedAngle.js.map +1 -1
  24. package/dist/cjs/Entities/MemoizedBoolean.js +21 -0
  25. package/dist/cjs/Entities/MemoizedBoolean.js.map +1 -1
  26. package/dist/cjs/Entities/MemoizedColor.js +21 -0
  27. package/dist/cjs/Entities/MemoizedColor.js.map +1 -1
  28. package/dist/cjs/Entities/MemoizedNumber.js +21 -0
  29. package/dist/cjs/Entities/MemoizedNumber.js.map +1 -1
  30. package/dist/cjs/Entities/MemoizedQuaternion.js +21 -0
  31. package/dist/cjs/Entities/MemoizedQuaternion.js.map +1 -1
  32. package/dist/cjs/Entities/MemoizedString.js +21 -0
  33. package/dist/cjs/Entities/MemoizedString.js.map +1 -1
  34. package/dist/cjs/Entities/MemoizedVector2.js +21 -0
  35. package/dist/cjs/Entities/MemoizedVector2.js.map +1 -1
  36. package/dist/cjs/Entities/MemoizedVector3.js +21 -0
  37. package/dist/cjs/Entities/MemoizedVector3.js.map +1 -1
  38. package/dist/cjs/Entities/ObservableEntity.js +17 -0
  39. package/dist/cjs/Entities/ObservableEntity.js.map +1 -1
  40. package/dist/cjs/Entities/ObserverList.js +21 -0
  41. package/dist/cjs/Entities/ObserverList.js.map +1 -1
  42. package/dist/cjs/Entities/RangedNumber.js +29 -0
  43. package/dist/cjs/Entities/RangedNumber.js.map +1 -1
  44. package/dist/cjs/Types/PmAdapter.js.map +1 -1
  45. package/dist/cjs/Types/SingletonPmAdapter.js.map +1 -1
  46. package/dist/cjs/ValueObjects/Angle.js +1 -1
  47. package/dist/cjs/ValueObjects/Angle.js.map +1 -1
  48. package/dist/cjs/ValueObjects/LineSegment2D.js +6 -6
  49. package/dist/cjs/ValueObjects/LineSegment2D.js.map +1 -1
  50. package/dist/cjs/ValueObjects/Matrix.js +6 -6
  51. package/dist/cjs/ValueObjects/Matrix.js.map +1 -1
  52. package/dist/cjs/ValueObjects/Quaternion.js +17 -17
  53. package/dist/cjs/ValueObjects/Quaternion.js.map +1 -1
  54. package/dist/cjs/ValueObjects/Vector2.js +15 -8
  55. package/dist/cjs/ValueObjects/Vector2.js.map +1 -1
  56. package/dist/esm/AppObject/AppObject.js +53 -0
  57. package/dist/esm/AppObject/AppObject.js.map +1 -1
  58. package/dist/esm/AppObject/AppObjectComponent.js +78 -0
  59. package/dist/esm/AppObject/AppObjectComponent.js.map +1 -1
  60. package/dist/esm/AppObject/AppObjectController.js +22 -0
  61. package/dist/esm/AppObject/AppObjectController.js.map +1 -1
  62. package/dist/esm/AppObject/AppObjectEntity.js +52 -0
  63. package/dist/esm/AppObject/AppObjectEntity.js.map +1 -1
  64. package/dist/esm/AppObject/AppObjectEntityRepo.js +75 -1
  65. package/dist/esm/AppObject/AppObjectEntityRepo.js.map +1 -1
  66. package/dist/esm/AppObject/AppObjectPM.js +46 -0
  67. package/dist/esm/AppObject/AppObjectPM.js.map +1 -1
  68. package/dist/esm/AppObject/AppObjectRepo.js +20 -0
  69. package/dist/esm/AppObject/AppObjectRepo.js.map +1 -1
  70. package/dist/esm/AppObject/AppObjectUC.js +24 -1
  71. package/dist/esm/AppObject/AppObjectUC.js.map +1 -1
  72. package/dist/esm/AppObject/AppObjectView.js +23 -1
  73. package/dist/esm/AppObject/AppObjectView.js.map +1 -1
  74. package/dist/esm/AppObject/getSingletonComponent.js +19 -0
  75. package/dist/esm/AppObject/getSingletonComponent.js.map +1 -1
  76. package/dist/esm/Entities/MemoizedAngle.js +21 -0
  77. package/dist/esm/Entities/MemoizedAngle.js.map +1 -1
  78. package/dist/esm/Entities/MemoizedBoolean.js +21 -0
  79. package/dist/esm/Entities/MemoizedBoolean.js.map +1 -1
  80. package/dist/esm/Entities/MemoizedColor.js +21 -0
  81. package/dist/esm/Entities/MemoizedColor.js.map +1 -1
  82. package/dist/esm/Entities/MemoizedNumber.js +21 -0
  83. package/dist/esm/Entities/MemoizedNumber.js.map +1 -1
  84. package/dist/esm/Entities/MemoizedQuaternion.js +21 -0
  85. package/dist/esm/Entities/MemoizedQuaternion.js.map +1 -1
  86. package/dist/esm/Entities/MemoizedString.js +21 -0
  87. package/dist/esm/Entities/MemoizedString.js.map +1 -1
  88. package/dist/esm/Entities/MemoizedVector2.js +21 -0
  89. package/dist/esm/Entities/MemoizedVector2.js.map +1 -1
  90. package/dist/esm/Entities/MemoizedVector3.js +21 -0
  91. package/dist/esm/Entities/MemoizedVector3.js.map +1 -1
  92. package/dist/esm/Entities/ObservableEntity.js +17 -0
  93. package/dist/esm/Entities/ObservableEntity.js.map +1 -1
  94. package/dist/esm/Entities/ObserverList.js +21 -0
  95. package/dist/esm/Entities/ObserverList.js.map +1 -1
  96. package/dist/esm/Entities/RangedNumber.js +29 -0
  97. package/dist/esm/Entities/RangedNumber.js.map +1 -1
  98. package/dist/esm/Types/PmAdapter.js.map +1 -1
  99. package/dist/esm/Types/SingletonPmAdapter.js.map +1 -1
  100. package/dist/esm/ValueObjects/Angle.js +1 -1
  101. package/dist/esm/ValueObjects/Angle.js.map +1 -1
  102. package/dist/esm/ValueObjects/LineSegment2D.js +6 -6
  103. package/dist/esm/ValueObjects/LineSegment2D.js.map +1 -1
  104. package/dist/esm/ValueObjects/Matrix.js +6 -6
  105. package/dist/esm/ValueObjects/Matrix.js.map +1 -1
  106. package/dist/esm/ValueObjects/Quaternion.js +17 -17
  107. package/dist/esm/ValueObjects/Quaternion.js.map +1 -1
  108. package/dist/esm/ValueObjects/Vector2.js +15 -8
  109. package/dist/esm/ValueObjects/Vector2.js.map +1 -1
  110. package/dist/types/AppObject/AppObject.d.ts +42 -0
  111. package/dist/types/AppObject/AppObject.d.ts.map +1 -1
  112. package/dist/types/AppObject/AppObjectComponent.d.ts +80 -0
  113. package/dist/types/AppObject/AppObjectComponent.d.ts.map +1 -1
  114. package/dist/types/AppObject/AppObjectController.d.ts +22 -0
  115. package/dist/types/AppObject/AppObjectController.d.ts.map +1 -1
  116. package/dist/types/AppObject/AppObjectEntity.d.ts +55 -0
  117. package/dist/types/AppObject/AppObjectEntity.d.ts.map +1 -1
  118. package/dist/types/AppObject/AppObjectEntityRepo.d.ts +75 -0
  119. package/dist/types/AppObject/AppObjectEntityRepo.d.ts.map +1 -1
  120. package/dist/types/AppObject/AppObjectPM.d.ts +53 -0
  121. package/dist/types/AppObject/AppObjectPM.d.ts.map +1 -1
  122. package/dist/types/AppObject/AppObjectRepo.d.ts +124 -0
  123. package/dist/types/AppObject/AppObjectRepo.d.ts.map +1 -1
  124. package/dist/types/AppObject/AppObjectUC.d.ts +23 -0
  125. package/dist/types/AppObject/AppObjectUC.d.ts.map +1 -1
  126. package/dist/types/AppObject/AppObjectView.d.ts +22 -0
  127. package/dist/types/AppObject/AppObjectView.d.ts.map +1 -1
  128. package/dist/types/AppObject/getSingletonComponent.d.ts +19 -0
  129. package/dist/types/AppObject/getSingletonComponent.d.ts.map +1 -1
  130. package/dist/types/Entities/MemoizedAngle.d.ts +21 -0
  131. package/dist/types/Entities/MemoizedAngle.d.ts.map +1 -1
  132. package/dist/types/Entities/MemoizedBoolean.d.ts +21 -0
  133. package/dist/types/Entities/MemoizedBoolean.d.ts.map +1 -1
  134. package/dist/types/Entities/MemoizedColor.d.ts +21 -0
  135. package/dist/types/Entities/MemoizedColor.d.ts.map +1 -1
  136. package/dist/types/Entities/MemoizedNumber.d.ts +21 -0
  137. package/dist/types/Entities/MemoizedNumber.d.ts.map +1 -1
  138. package/dist/types/Entities/MemoizedQuaternion.d.ts +21 -0
  139. package/dist/types/Entities/MemoizedQuaternion.d.ts.map +1 -1
  140. package/dist/types/Entities/MemoizedString.d.ts +21 -0
  141. package/dist/types/Entities/MemoizedString.d.ts.map +1 -1
  142. package/dist/types/Entities/MemoizedVector2.d.ts +21 -0
  143. package/dist/types/Entities/MemoizedVector2.d.ts.map +1 -1
  144. package/dist/types/Entities/MemoizedVector3.d.ts +21 -0
  145. package/dist/types/Entities/MemoizedVector3.d.ts.map +1 -1
  146. package/dist/types/Entities/ObservableEntity.d.ts +20 -0
  147. package/dist/types/Entities/ObservableEntity.d.ts.map +1 -1
  148. package/dist/types/Entities/ObserverList.d.ts +21 -0
  149. package/dist/types/Entities/ObserverList.d.ts.map +1 -1
  150. package/dist/types/Entities/RangedNumber.d.ts +37 -0
  151. package/dist/types/Entities/RangedNumber.d.ts.map +1 -1
  152. package/dist/types/Types/PmAdapter.d.ts +60 -0
  153. package/dist/types/Types/PmAdapter.d.ts.map +1 -1
  154. package/dist/types/Types/SingletonPmAdapter.d.ts +55 -0
  155. package/dist/types/Types/SingletonPmAdapter.d.ts.map +1 -1
  156. package/dist/types/ValueObjects/Angle.d.ts +1 -1
  157. package/dist/types/ValueObjects/Matrix.d.ts +5 -5
  158. package/dist/types/ValueObjects/Matrix.d.ts.map +1 -1
  159. package/dist/types/ValueObjects/Quaternion.d.ts +17 -17
  160. package/dist/types/ValueObjects/Vector2.d.ts +8 -3
  161. package/dist/types/ValueObjects/Vector2.d.ts.map +1 -1
  162. package/package.json +1 -1
  163. package/dist/cjs/AppObject/AppObject.test.js +0 -113
  164. package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
  165. package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
  166. package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
  167. package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
  168. package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
  169. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
  170. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  171. package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
  172. package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
  173. package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
  174. package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
  175. package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
  176. package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
  177. package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
  178. package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
  179. package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
  180. package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
  181. package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
  182. package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
  183. package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
  184. package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
  185. package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
  186. package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
  187. package/dist/cjs/Entities/MemoizedString.test.js +0 -29
  188. package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
  189. package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
  190. package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
  191. package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
  192. package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
  193. package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
  194. package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
  195. package/dist/cjs/Entities/ObserverList.test.js +0 -44
  196. package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
  197. package/dist/cjs/Entities/RangedNumber.test.js +0 -96
  198. package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
  199. package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
  200. package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
  201. package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
  202. package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
  203. package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
  204. package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
  205. package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
  206. package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
  207. package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
  208. package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
  209. package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
  210. package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
  211. package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
  212. package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
  213. package/dist/cjs/ValueObjects/Angle.test.js +0 -28
  214. package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
  215. package/dist/cjs/ValueObjects/Color.test.js +0 -147
  216. package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
  217. package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
  218. package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
  219. package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
  220. package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
  221. package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
  222. package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
  223. package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
  224. package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
  225. package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
  226. package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
  227. package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
  228. package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
  229. package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
  230. package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
  231. package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
  232. package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
  233. package/dist/cjs/ValueObjects/Version.test.js +0 -310
  234. package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
  235. package/dist/esm/AppObject/AppObject.test.js +0 -110
  236. package/dist/esm/AppObject/AppObject.test.js.map +0 -1
  237. package/dist/esm/AppObject/AppObjectComponent.test.js +0 -130
  238. package/dist/esm/AppObject/AppObjectComponent.test.js.map +0 -1
  239. package/dist/esm/AppObject/AppObjectEntity.test.js +0 -106
  240. package/dist/esm/AppObject/AppObjectEntity.test.js.map +0 -1
  241. package/dist/esm/AppObject/AppObjectEntityRepo.test.js +0 -147
  242. package/dist/esm/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  243. package/dist/esm/AppObject/AppObjectPM.test.js +0 -101
  244. package/dist/esm/AppObject/AppObjectPM.test.js.map +0 -1
  245. package/dist/esm/AppObject/AppObjectRepo.test.js +0 -211
  246. package/dist/esm/AppObject/AppObjectRepo.test.js.map +0 -1
  247. package/dist/esm/AppObject/getSingletonComponent.test.js +0 -11
  248. package/dist/esm/AppObject/getSingletonComponent.test.js.map +0 -1
  249. package/dist/esm/Entities/MemoizedAngle.test.js +0 -28
  250. package/dist/esm/Entities/MemoizedAngle.test.js.map +0 -1
  251. package/dist/esm/Entities/MemoizedBoolean.test.js +0 -32
  252. package/dist/esm/Entities/MemoizedBoolean.test.js.map +0 -1
  253. package/dist/esm/Entities/MemoizedColor.test.js +0 -30
  254. package/dist/esm/Entities/MemoizedColor.test.js.map +0 -1
  255. package/dist/esm/Entities/MemoizedNumber.test.js +0 -27
  256. package/dist/esm/Entities/MemoizedNumber.test.js.map +0 -1
  257. package/dist/esm/Entities/MemoizedQuaternion.test.js +0 -30
  258. package/dist/esm/Entities/MemoizedQuaternion.test.js.map +0 -1
  259. package/dist/esm/Entities/MemoizedString.test.js +0 -27
  260. package/dist/esm/Entities/MemoizedString.test.js.map +0 -1
  261. package/dist/esm/Entities/MemoizedVector2.test.js +0 -30
  262. package/dist/esm/Entities/MemoizedVector2.test.js.map +0 -1
  263. package/dist/esm/Entities/MemoizedVector3.test.js +0 -30
  264. package/dist/esm/Entities/MemoizedVector3.test.js.map +0 -1
  265. package/dist/esm/Entities/ObservableEntity.test.js +0 -23
  266. package/dist/esm/Entities/ObservableEntity.test.js.map +0 -1
  267. package/dist/esm/Entities/ObserverList.test.js +0 -42
  268. package/dist/esm/Entities/ObserverList.test.js.map +0 -1
  269. package/dist/esm/Entities/RangedNumber.test.js +0 -94
  270. package/dist/esm/Entities/RangedNumber.test.js.map +0 -1
  271. package/dist/esm/Utilities/LengthConverters.test.js +0 -22
  272. package/dist/esm/Utilities/LengthConverters.test.js.map +0 -1
  273. package/dist/esm/Utilities/LerpNumber.test.js +0 -88
  274. package/dist/esm/Utilities/LerpNumber.test.js.map +0 -1
  275. package/dist/esm/Utilities/addAlphaToHex.test.js +0 -32
  276. package/dist/esm/Utilities/addAlphaToHex.test.js.map +0 -1
  277. package/dist/esm/Utilities/alphaToHex.test.js +0 -73
  278. package/dist/esm/Utilities/alphaToHex.test.js.map +0 -1
  279. package/dist/esm/Utilities/degreesToRadians.test.js +0 -7
  280. package/dist/esm/Utilities/degreesToRadians.test.js.map +0 -1
  281. package/dist/esm/Utilities/easeFunctions.test.js +0 -207
  282. package/dist/esm/Utilities/easeFunctions.test.js.map +0 -1
  283. package/dist/esm/Utilities/interpolateNumber.test.js +0 -24
  284. package/dist/esm/Utilities/interpolateNumber.test.js.map +0 -1
  285. package/dist/esm/ValueObjects/Angle.test.js +0 -26
  286. package/dist/esm/ValueObjects/Angle.test.js.map +0 -1
  287. package/dist/esm/ValueObjects/Color.test.js +0 -145
  288. package/dist/esm/ValueObjects/Color.test.js.map +0 -1
  289. package/dist/esm/ValueObjects/LineSegment2D.test.js +0 -100
  290. package/dist/esm/ValueObjects/LineSegment2D.test.js.map +0 -1
  291. package/dist/esm/ValueObjects/Matrix.test.js +0 -383
  292. package/dist/esm/ValueObjects/Matrix.test.js.map +0 -1
  293. package/dist/esm/ValueObjects/ParametricLine.test.js +0 -124
  294. package/dist/esm/ValueObjects/ParametricLine.test.js.map +0 -1
  295. package/dist/esm/ValueObjects/ParametricPlane.test.js +0 -99
  296. package/dist/esm/ValueObjects/ParametricPlane.test.js.map +0 -1
  297. package/dist/esm/ValueObjects/Quaternion.test.js +0 -238
  298. package/dist/esm/ValueObjects/Quaternion.test.js.map +0 -1
  299. package/dist/esm/ValueObjects/Rectangle.test.js +0 -30
  300. package/dist/esm/ValueObjects/Rectangle.test.js.map +0 -1
  301. package/dist/esm/ValueObjects/Vector2.test.js +0 -134
  302. package/dist/esm/ValueObjects/Vector2.test.js.map +0 -1
  303. package/dist/esm/ValueObjects/Vector3.test.js +0 -186
  304. package/dist/esm/ValueObjects/Vector3.test.js.map +0 -1
  305. package/dist/esm/ValueObjects/Version.test.js +0 -308
  306. package/dist/esm/ValueObjects/Version.test.js.map +0 -1
  307. package/dist/types/AppObject/AppObject.test.d.ts +0 -7
  308. package/dist/types/AppObject/AppObject.test.d.ts.map +0 -1
  309. package/dist/types/AppObject/AppObjectComponent.test.d.ts +0 -2
  310. package/dist/types/AppObject/AppObjectComponent.test.d.ts.map +0 -1
  311. package/dist/types/AppObject/AppObjectEntity.test.d.ts +0 -2
  312. package/dist/types/AppObject/AppObjectEntity.test.d.ts.map +0 -1
  313. package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts +0 -2
  314. package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts.map +0 -1
  315. package/dist/types/AppObject/AppObjectPM.test.d.ts +0 -2
  316. package/dist/types/AppObject/AppObjectPM.test.d.ts.map +0 -1
  317. package/dist/types/AppObject/AppObjectRepo.test.d.ts +0 -2
  318. package/dist/types/AppObject/AppObjectRepo.test.d.ts.map +0 -1
  319. package/dist/types/AppObject/getSingletonComponent.test.d.ts +0 -2
  320. package/dist/types/AppObject/getSingletonComponent.test.d.ts.map +0 -1
  321. package/dist/types/Entities/MemoizedAngle.test.d.ts +0 -2
  322. package/dist/types/Entities/MemoizedAngle.test.d.ts.map +0 -1
  323. package/dist/types/Entities/MemoizedBoolean.test.d.ts +0 -2
  324. package/dist/types/Entities/MemoizedBoolean.test.d.ts.map +0 -1
  325. package/dist/types/Entities/MemoizedColor.test.d.ts +0 -2
  326. package/dist/types/Entities/MemoizedColor.test.d.ts.map +0 -1
  327. package/dist/types/Entities/MemoizedNumber.test.d.ts +0 -2
  328. package/dist/types/Entities/MemoizedNumber.test.d.ts.map +0 -1
  329. package/dist/types/Entities/MemoizedQuaternion.test.d.ts +0 -2
  330. package/dist/types/Entities/MemoizedQuaternion.test.d.ts.map +0 -1
  331. package/dist/types/Entities/MemoizedString.test.d.ts +0 -2
  332. package/dist/types/Entities/MemoizedString.test.d.ts.map +0 -1
  333. package/dist/types/Entities/MemoizedVector2.test.d.ts +0 -2
  334. package/dist/types/Entities/MemoizedVector2.test.d.ts.map +0 -1
  335. package/dist/types/Entities/MemoizedVector3.test.d.ts +0 -2
  336. package/dist/types/Entities/MemoizedVector3.test.d.ts.map +0 -1
  337. package/dist/types/Entities/ObservableEntity.test.d.ts +0 -2
  338. package/dist/types/Entities/ObservableEntity.test.d.ts.map +0 -1
  339. package/dist/types/Entities/ObserverList.test.d.ts +0 -2
  340. package/dist/types/Entities/ObserverList.test.d.ts.map +0 -1
  341. package/dist/types/Entities/RangedNumber.test.d.ts +0 -2
  342. package/dist/types/Entities/RangedNumber.test.d.ts.map +0 -1
  343. package/dist/types/Utilities/LengthConverters.test.d.ts +0 -2
  344. package/dist/types/Utilities/LengthConverters.test.d.ts.map +0 -1
  345. package/dist/types/Utilities/LerpNumber.test.d.ts +0 -2
  346. package/dist/types/Utilities/LerpNumber.test.d.ts.map +0 -1
  347. package/dist/types/Utilities/addAlphaToHex.test.d.ts +0 -2
  348. package/dist/types/Utilities/addAlphaToHex.test.d.ts.map +0 -1
  349. package/dist/types/Utilities/alphaToHex.test.d.ts +0 -2
  350. package/dist/types/Utilities/alphaToHex.test.d.ts.map +0 -1
  351. package/dist/types/Utilities/degreesToRadians.test.d.ts +0 -2
  352. package/dist/types/Utilities/degreesToRadians.test.d.ts.map +0 -1
  353. package/dist/types/Utilities/easeFunctions.test.d.ts +0 -2
  354. package/dist/types/Utilities/easeFunctions.test.d.ts.map +0 -1
  355. package/dist/types/Utilities/interpolateNumber.test.d.ts +0 -2
  356. package/dist/types/Utilities/interpolateNumber.test.d.ts.map +0 -1
  357. package/dist/types/ValueObjects/Angle.test.d.ts +0 -2
  358. package/dist/types/ValueObjects/Angle.test.d.ts.map +0 -1
  359. package/dist/types/ValueObjects/Color.test.d.ts +0 -2
  360. package/dist/types/ValueObjects/Color.test.d.ts.map +0 -1
  361. package/dist/types/ValueObjects/LineSegment2D.test.d.ts +0 -2
  362. package/dist/types/ValueObjects/LineSegment2D.test.d.ts.map +0 -1
  363. package/dist/types/ValueObjects/Matrix.test.d.ts +0 -2
  364. package/dist/types/ValueObjects/Matrix.test.d.ts.map +0 -1
  365. package/dist/types/ValueObjects/ParametricLine.test.d.ts +0 -2
  366. package/dist/types/ValueObjects/ParametricLine.test.d.ts.map +0 -1
  367. package/dist/types/ValueObjects/ParametricPlane.test.d.ts +0 -2
  368. package/dist/types/ValueObjects/ParametricPlane.test.d.ts.map +0 -1
  369. package/dist/types/ValueObjects/Quaternion.test.d.ts +0 -2
  370. package/dist/types/ValueObjects/Quaternion.test.d.ts.map +0 -1
  371. package/dist/types/ValueObjects/Rectangle.test.d.ts +0 -2
  372. package/dist/types/ValueObjects/Rectangle.test.d.ts.map +0 -1
  373. package/dist/types/ValueObjects/Vector2.test.d.ts +0 -2
  374. package/dist/types/ValueObjects/Vector2.test.d.ts.map +0 -1
  375. package/dist/types/ValueObjects/Vector3.test.d.ts +0 -2
  376. package/dist/types/ValueObjects/Vector3.test.d.ts.map +0 -1
  377. package/dist/types/ValueObjects/Version.test.d.ts +0 -2
  378. package/dist/types/ValueObjects/Version.test.d.ts.map +0 -1
@@ -1,383 +0,0 @@
1
- import { Angle } from "./Angle";
2
- import { Matrix } from "./Matrix";
3
- import { Quaternion } from "./Quaternion";
4
- import { Vector3 } from "./Vector3";
5
- describe("Matrix Value Object", () => {
6
- it("Forms an identity matrix", () => {
7
- const identity = Matrix.Identity();
8
- const expected = new Matrix(identityArray);
9
- expect(identity).toEqual(expected);
10
- });
11
- it("Forms a zero matrix", () => {
12
- const identity = Matrix.Zero();
13
- const expected = new Matrix(zeroArray);
14
- expect(identity).toEqual(expected);
15
- });
16
- it("Checks to see if two matricies are equal", () => {
17
- const m1 = new Matrix(sequentialArray);
18
- const m2 = new Matrix(sequentialArray);
19
- const m3 = new Matrix(zeroArray);
20
- expect(Matrix.Equal(m1, m2)).toEqual(true);
21
- expect(Matrix.Equal(m1, m3)).toEqual(false);
22
- });
23
- it("Checks for eqaulity during tests", () => {
24
- const m1 = new Matrix(sequentialArray);
25
- const m2 = new Matrix(sequentialArray);
26
- expect(m1).toEqual(m2);
27
- });
28
- it("Returns the translation", () => {
29
- const m1 = new Matrix(sequentialArray);
30
- expect(m1.translation).toEqual(new Vector3(13, 14, 15));
31
- });
32
- it("Multipiles two matricies", () => {
33
- const m1 = new Matrix(sequentialArray);
34
- const m2 = new Matrix([
35
- 16,
36
- 15,
37
- 14,
38
- 13,
39
- 12,
40
- 11,
41
- 10,
42
- 9,
43
- 8,
44
- 7,
45
- 6,
46
- 5,
47
- 4,
48
- 3,
49
- 2,
50
- 1,
51
- ]);
52
- const expected = new Matrix([
53
- 386,
54
- 444,
55
- 502,
56
- 560,
57
- 274,
58
- 316,
59
- 358,
60
- 400,
61
- 162,
62
- 188,
63
- 214,
64
- 240,
65
- 50,
66
- 60,
67
- 70,
68
- 80,
69
- ]);
70
- const result = Matrix.Multiply(m1, m2);
71
- expect(result.m).toEqual(expected.m);
72
- });
73
- it("Composes an Identity matrix", () => {
74
- const pos = Vector3.Zero();
75
- const scale = Vector3.One();
76
- const rot = Quaternion.Identity();
77
- const mat = Matrix.Compose(scale, rot, pos);
78
- expect(mat).toEqual(Matrix.Identity());
79
- });
80
- it("Composes a matrix with a position", () => {
81
- const pos = new Vector3(11, 22, 33);
82
- const scale = Vector3.One();
83
- const rot = Quaternion.Identity();
84
- const composed = Matrix.Compose(scale, rot, pos);
85
- const expected = new Matrix([
86
- 1,
87
- 0,
88
- 0,
89
- 0,
90
- 0,
91
- 1,
92
- 0,
93
- 0,
94
- 0,
95
- 0,
96
- 1,
97
- 0,
98
- 11,
99
- 22,
100
- 33,
101
- 1,
102
- ]);
103
- expect(composed).toEqual(expected);
104
- });
105
- it("Composes a matrix with scale", () => {
106
- const pos = Vector3.Zero();
107
- const scale = new Vector3(6, 7, 8);
108
- const rot = Quaternion.Identity();
109
- const composed = Matrix.Compose(scale, rot, pos);
110
- const expected = new Matrix([
111
- 6,
112
- 0,
113
- 0,
114
- 0,
115
- 0,
116
- 7,
117
- 0,
118
- 0,
119
- 0,
120
- 0,
121
- 8,
122
- 0,
123
- 0,
124
- 0,
125
- 0,
126
- 1,
127
- ]);
128
- expect(composed).toEqual(expected);
129
- });
130
- it("Composes a matrix with rotation", () => {
131
- // Number are from Babylon
132
- const pos = Vector3.Zero();
133
- const scale = Vector3.One();
134
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
135
- const composed = Matrix.Compose(scale, rot, pos);
136
- expect(composed.m[0]).toBeCloseTo(0.5199598670005798);
137
- expect(composed.m[1]).toBeCloseTo(0.07624746859073639);
138
- expect(composed.m[2]).toBeCloseTo(0.8507808446884155);
139
- expect(composed.m[4]).toBeCloseTo(-0.6987635493278503);
140
- expect(composed.m[5]).toBeCloseTo(-0.5348952412605286);
141
- expect(composed.m[6]).toBeCloseTo(0.47499117255210876);
142
- expect(composed.m[8]).toBeCloseTo(0.4912954866886139);
143
- expect(composed.m[9]).toBeCloseTo(-0.8414709568023682);
144
- expect(composed.m[10]).toBeCloseTo(-0.22484509646892548);
145
- });
146
- it("Calculates a determinant", () => {
147
- const sequential = new Matrix(sequentialArray);
148
- expect(sequential.determinate).toEqual(0);
149
- const identity = Matrix.Identity();
150
- expect(identity.determinate).toEqual(1);
151
- const pos = new Vector3(23, 26, 29);
152
- const scale = new Vector3(6, 7, 8);
153
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
154
- const composed = Matrix.Compose(scale, rot, pos);
155
- expect(composed.determinate).toBeCloseTo(335.99999908851385); // Number is from babylon
156
- });
157
- it("Returns the translation", () => {
158
- const pos = new Vector3(23, 26, 29);
159
- const scale = new Vector3(6, 7, 8);
160
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
161
- const composed = Matrix.Compose(scale, rot, pos);
162
- expect(composed.translation).toEqual(pos);
163
- });
164
- it("Returns the scale", () => {
165
- const pos = new Vector3(23, 26, 29);
166
- const scale = new Vector3(6, 7, 8);
167
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
168
- const composed = Matrix.Compose(scale, rot, pos);
169
- expect(composed.scale.x).toBeCloseTo(scale.x);
170
- expect(composed.scale.y).toBeCloseTo(scale.y);
171
- expect(composed.scale.z).toBeCloseTo(scale.z);
172
- });
173
- it("Returns the negative scale", () => {
174
- const pos = new Vector3(23, 26, 29);
175
- const scale = new Vector3(6, -7, 8);
176
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
177
- const composed = Matrix.Compose(scale, rot, pos);
178
- expect(composed.scale.x).toBeCloseTo(scale.x);
179
- expect(composed.scale.y).toBeCloseTo(scale.y);
180
- expect(composed.scale.z).toBeCloseTo(scale.z);
181
- });
182
- it("Returns a rotation matrix", () => {
183
- const pos = new Vector3(23, 26, 29);
184
- const scale = new Vector3(6, -7, 8);
185
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
186
- const composed = Matrix.Compose(scale, rot, pos);
187
- const expected = Matrix.Compose(Vector3.One(), rot, Vector3.Zero());
188
- expect(Matrix.Close(composed.rotationMatrix, expected)).toEqual(true);
189
- });
190
- it("Returns the rotation", () => {
191
- const pos = new Vector3(23, 26, 29);
192
- const scale = new Vector3(6, 7, 8);
193
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
194
- const composed = Matrix.Compose(scale, rot, pos);
195
- expect(Quaternion.Close(composed.rotation, rot)).toEqual(true);
196
- });
197
- it("Checks if matricies are close", () => {
198
- const m1 = new Matrix(sequentialArray);
199
- const biggerValues = [...sequentialArray];
200
- biggerValues.forEach((val, i) => {
201
- biggerValues[i] = val + 0.01; // Just a little bump
202
- });
203
- const bigger = new Matrix(biggerValues);
204
- const smallerValues = [...sequentialArray];
205
- smallerValues.forEach((val, i) => {
206
- smallerValues[i] = val - 0.01; // Just a little bump
207
- });
208
- const smaller = new Matrix(smallerValues);
209
- expect(Matrix.Close(m1, bigger, 0.0101)).toEqual(true);
210
- expect(Matrix.Close(m1, bigger, 0.0099)).toEqual(false);
211
- expect(Matrix.Close(m1, smaller, 0.0101)).toEqual(true);
212
- expect(Matrix.Close(m1, smaller, 0.0099)).toEqual(false);
213
- });
214
- it("Results in an Identity if we invert the identity", () => {
215
- const identity = Matrix.Identity();
216
- const inverted = Matrix.Invert(identity);
217
- expect(Matrix.Close(inverted, identity)).toEqual(true);
218
- });
219
- it("Inverts a matrix", () => {
220
- const pos = new Vector3(23, 26, 29);
221
- const scale = new Vector3(6, 7, 8);
222
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
223
- const mat = Matrix.Compose(scale, rot, pos);
224
- const inverted = Matrix.Invert(mat);
225
- // Numbers are from babylon
226
- const expected = new Matrix([
227
- 0.08665996789932251,
228
- -0.09982336312532425,
229
- 0.061411935836076736,
230
- -0,
231
- 0.0127079077064991,
232
- -0.0764136016368866,
233
- -0.10518387705087662,
234
- 0,
235
- 0.14179681241512299,
236
- 0.06785587966442108,
237
- -0.028105635195970535,
238
- -0,
239
- -6.435692310333252,
240
- 2.314870595932007,
241
- 2.1373696327209473,
242
- 1,
243
- ]);
244
- expect(Matrix.Close(inverted, expected)).toEqual(true);
245
- });
246
- it("Creates a rotation matrix from an axis ange angle", () => {
247
- const axis = new Vector3(1, 2, 3);
248
- const angle = Angle.FromRadians(1.3);
249
- const rotationMatrix = Matrix.FromRotationAxisAngle(axis, angle);
250
- // Numbers are from babylon
251
- const expected = new Matrix([
252
- 0.3198203444480896,
253
- 0.8772082924842834,
254
- -0.3580789864063263,
255
- 0,
256
- -0.6679222583770752,
257
- 0.476784884929657,
258
- 0.5714508295059204,
259
- 0,
260
- 0.6720080375671387,
261
- 0.05640731751918793,
262
- 0.7383924126625061,
263
- 0,
264
- 0,
265
- 0,
266
- 0,
267
- 1,
268
- ]);
269
- expect(Matrix.Close(rotationMatrix, expected)).toEqual(true);
270
- });
271
- it("Sets the transformation of a matrix", () => {
272
- const pos = new Vector3(23, 26, 29);
273
- const scale = new Vector3(6, 7, 8);
274
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
275
- const mat = Matrix.Compose(scale, rot, pos);
276
- const newTrans = new Vector3(3, 2, 1);
277
- const newMat = Matrix.SetMatrixTranslation(mat, newTrans);
278
- expect(Quaternion.Close(newMat.rotation, rot)).toEqual(true);
279
- expect(Vector3.Close(newMat.translation, newTrans)).toEqual(true);
280
- expect(Vector3.Close(newMat.scale, scale)).toEqual(true);
281
- });
282
- it("Sets the rotation of a matrix", () => {
283
- const pos = new Vector3(23, 26, 29);
284
- const scale = new Vector3(6, 7, 8);
285
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
286
- const mat = Matrix.Compose(scale, rot, pos);
287
- const newRotation = Quaternion.FromEuler(Angle.FromRadians(1.1), Angle.FromRadians(2.2), Angle.FromRadians(3.3));
288
- const newMat = Matrix.SetMatrixRotation(mat, newRotation);
289
- expect(Quaternion.Close(newMat.rotation, newRotation)).toEqual(true);
290
- expect(Vector3.Close(newMat.translation, pos)).toEqual(true);
291
- expect(Vector3.Close(newMat.scale, scale)).toEqual(true);
292
- });
293
- it("Sets the scale of a matrix", () => {
294
- const pos = new Vector3(23, 26, 29);
295
- const scale = new Vector3(6, 7, 8);
296
- const rot = Quaternion.FromEuler(Angle.FromRadians(1), Angle.FromRadians(2), Angle.FromRadians(3));
297
- const mat = Matrix.Compose(scale, rot, pos);
298
- const newScale = new Vector3(1, 2, 3);
299
- const newMat = Matrix.SetMatrixScale(mat, newScale);
300
- expect(Quaternion.Close(newMat.rotation, rot)).toEqual(true);
301
- expect(Vector3.Close(newMat.translation, pos)).toEqual(true);
302
- expect(Vector3.Close(newMat.scale, newScale)).toEqual(true);
303
- });
304
- it("Makes a Matrix from a Float 32 Array", () => {
305
- const float32Array = new Float32Array(16);
306
- for (let index = 0; index < 16; index++) {
307
- float32Array[index] = index * 2;
308
- }
309
- const matrix = Matrix.FromFloat32Array(float32Array);
310
- for (let index = 0; index < 16; index++) {
311
- expect(matrix.m[index]).toEqual(index * 2);
312
- }
313
- });
314
- it("Logs an error and return the identity if the float 32 array does not have 16 itesm", () => {
315
- const float32Array = new Float32Array(1);
316
- console.error = jest.fn();
317
- const matrix = Matrix.FromFloat32Array(float32Array);
318
- expect(console.error).toBeCalled();
319
- expect(matrix).toEqual(Matrix.Identity());
320
- });
321
- it("Flips the handedness of a transform matrix", () => {
322
- const matrix = new Matrix(sequentialArray);
323
- const flipped = Matrix.FlipTransformMatrixHand(matrix);
324
- for (let index = 0; index < 16; index++) {
325
- if (index === 2 || index === 6 || index === 8 || index === 9 || index === 14) {
326
- expect(matrix.m[index]).toEqual(-flipped.m[index]);
327
- }
328
- else {
329
- expect(matrix.m[index]).toEqual(flipped.m[index]);
330
- }
331
- }
332
- });
333
- it("Flips the handedness of a projection matrix", () => {
334
- const matrix = new Matrix(sequentialArray);
335
- const flipped = Matrix.FlipProjectionMatrixHand(matrix);
336
- for (let index = 0; index < 16; index++) {
337
- if (index === 8 || index === 9 || index === 10 || index === 11) {
338
- expect(matrix.m[index]).toEqual(-flipped.m[index]);
339
- }
340
- else {
341
- expect(matrix.m[index]).toEqual(flipped.m[index]);
342
- }
343
- }
344
- });
345
- });
346
- const identityArray = [
347
- 1,
348
- 0,
349
- 0,
350
- 0,
351
- 0,
352
- 1,
353
- 0,
354
- 0,
355
- 0,
356
- 0,
357
- 1,
358
- 0,
359
- 0,
360
- 0,
361
- 0,
362
- 1,
363
- ];
364
- const zeroArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
365
- const sequentialArray = [
366
- 1,
367
- 2,
368
- 3,
369
- 4,
370
- 5,
371
- 6,
372
- 7,
373
- 8,
374
- 9,
375
- 10,
376
- 11,
377
- 12,
378
- 13,
379
- 14,
380
- 15,
381
- 16,
382
- ];
383
- //# sourceMappingURL=Matrix.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matrix.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Matrix.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle } from \"./Angle\";\r\nimport { Matrix, MatrixArray } from \"./Matrix\";\r\nimport { Quaternion } from \"./Quaternion\";\r\nimport { Vector3 } from \"./Vector3\";\r\n\r\ndescribe(\"Matrix Value Object\", () => {\r\n it(\"Forms an identity matrix\", () => {\r\n const identity = Matrix.Identity();\r\n const expected = new Matrix(identityArray);\r\n expect(identity).toEqual(expected);\r\n });\r\n\r\n it(\"Forms a zero matrix\", () => {\r\n const identity = Matrix.Zero();\r\n const expected = new Matrix(zeroArray);\r\n expect(identity).toEqual(expected);\r\n });\r\n\r\n it(\"Checks to see if two matricies are equal\", () => {\r\n const m1 = new Matrix(sequentialArray);\r\n const m2 = new Matrix(sequentialArray);\r\n const m3 = new Matrix(zeroArray);\r\n\r\n expect(Matrix.Equal(m1, m2)).toEqual(true);\r\n expect(Matrix.Equal(m1, m3)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for eqaulity during tests\", () => {\r\n const m1 = new Matrix(sequentialArray);\r\n const m2 = new Matrix(sequentialArray);\r\n\r\n expect(m1).toEqual(m2);\r\n });\r\n\r\n it(\"Returns the translation\", () => {\r\n const m1 = new Matrix(sequentialArray);\r\n\r\n expect(m1.translation).toEqual(new Vector3(13, 14, 15));\r\n });\r\n\r\n it(\"Multipiles two matricies\", () => {\r\n const m1 = new Matrix(sequentialArray);\r\n const m2 = new Matrix([\r\n 16,\r\n 15,\r\n 14,\r\n 13,\r\n 12,\r\n 11,\r\n 10,\r\n 9,\r\n 8,\r\n 7,\r\n 6,\r\n 5,\r\n 4,\r\n 3,\r\n 2,\r\n 1,\r\n ]);\r\n const expected = new Matrix([\r\n 386,\r\n 444,\r\n 502,\r\n 560,\r\n 274,\r\n 316,\r\n 358,\r\n 400,\r\n 162,\r\n 188,\r\n 214,\r\n 240,\r\n 50,\r\n 60,\r\n 70,\r\n 80,\r\n ]);\r\n const result = Matrix.Multiply(m1, m2);\r\n expect(result.m).toEqual(expected.m);\r\n });\r\n\r\n it(\"Composes an Identity matrix\", () => {\r\n const pos = Vector3.Zero();\r\n const scale = Vector3.One();\r\n const rot = Quaternion.Identity();\r\n\r\n const mat = Matrix.Compose(scale, rot, pos);\r\n expect(mat).toEqual(Matrix.Identity());\r\n });\r\n\r\n it(\"Composes a matrix with a position\", () => {\r\n const pos = new Vector3(11, 22, 33);\r\n const scale = Vector3.One();\r\n const rot = Quaternion.Identity();\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n const expected = new Matrix([\r\n 1,\r\n 0,\r\n 0,\r\n 0,\r\n\r\n 0,\r\n 1,\r\n 0,\r\n 0,\r\n\r\n 0,\r\n 0,\r\n 1,\r\n 0,\r\n\r\n 11,\r\n 22,\r\n 33,\r\n 1,\r\n ]);\r\n expect(composed).toEqual(expected);\r\n });\r\n\r\n it(\"Composes a matrix with scale\", () => {\r\n const pos = Vector3.Zero();\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.Identity();\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n const expected = new Matrix([\r\n 6,\r\n 0,\r\n 0,\r\n 0,\r\n\r\n 0,\r\n 7,\r\n 0,\r\n 0,\r\n\r\n 0,\r\n 0,\r\n 8,\r\n 0,\r\n\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n ]);\r\n expect(composed).toEqual(expected);\r\n });\r\n\r\n it(\"Composes a matrix with rotation\", () => {\r\n // Number are from Babylon\r\n const pos = Vector3.Zero();\r\n const scale = Vector3.One();\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n expect(composed.m[0]).toBeCloseTo(0.5199598670005798);\r\n expect(composed.m[1]).toBeCloseTo(0.07624746859073639);\r\n expect(composed.m[2]).toBeCloseTo(0.8507808446884155);\r\n\r\n expect(composed.m[4]).toBeCloseTo(-0.6987635493278503);\r\n expect(composed.m[5]).toBeCloseTo(-0.5348952412605286);\r\n expect(composed.m[6]).toBeCloseTo(0.47499117255210876);\r\n\r\n expect(composed.m[8]).toBeCloseTo(0.4912954866886139);\r\n expect(composed.m[9]).toBeCloseTo(-0.8414709568023682);\r\n expect(composed.m[10]).toBeCloseTo(-0.22484509646892548);\r\n });\r\n\r\n it(\"Calculates a determinant\", () => {\r\n const sequential = new Matrix(sequentialArray);\r\n expect(sequential.determinate).toEqual(0);\r\n\r\n const identity = Matrix.Identity();\r\n expect(identity.determinate).toEqual(1);\r\n\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n expect(composed.determinate).toBeCloseTo(335.99999908851385); // Number is from babylon\r\n });\r\n\r\n it(\"Returns the translation\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n expect(composed.translation).toEqual(pos);\r\n });\r\n\r\n it(\"Returns the scale\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n expect(composed.scale.x).toBeCloseTo(scale.x);\r\n expect(composed.scale.y).toBeCloseTo(scale.y);\r\n expect(composed.scale.z).toBeCloseTo(scale.z);\r\n });\r\n\r\n it(\"Returns the negative scale\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, -7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n expect(composed.scale.x).toBeCloseTo(scale.x);\r\n expect(composed.scale.y).toBeCloseTo(scale.y);\r\n expect(composed.scale.z).toBeCloseTo(scale.z);\r\n });\r\n\r\n it(\"Returns a rotation matrix\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, -7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n const expected = Matrix.Compose(Vector3.One(), rot, Vector3.Zero());\r\n\r\n expect(Matrix.Close(composed.rotationMatrix, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Returns the rotation\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n const composed = Matrix.Compose(scale, rot, pos);\r\n\r\n expect(Quaternion.Close(composed.rotation, rot)).toEqual(true);\r\n });\r\n\r\n it(\"Checks if matricies are close\", () => {\r\n const m1 = new Matrix(sequentialArray);\r\n const biggerValues: MatrixArray = [...sequentialArray];\r\n biggerValues.forEach((val, i) => {\r\n biggerValues[i] = val + 0.01; // Just a little bump\r\n });\r\n const bigger = new Matrix(biggerValues);\r\n\r\n const smallerValues: MatrixArray = [...sequentialArray];\r\n smallerValues.forEach((val, i) => {\r\n smallerValues[i] = val - 0.01; // Just a little bump\r\n });\r\n const smaller = new Matrix(smallerValues);\r\n\r\n expect(Matrix.Close(m1, bigger, 0.0101)).toEqual(true);\r\n expect(Matrix.Close(m1, bigger, 0.0099)).toEqual(false);\r\n\r\n expect(Matrix.Close(m1, smaller, 0.0101)).toEqual(true);\r\n expect(Matrix.Close(m1, smaller, 0.0099)).toEqual(false);\r\n });\r\n\r\n it(\"Results in an Identity if we invert the identity\", () => {\r\n const identity = Matrix.Identity();\r\n const inverted = Matrix.Invert(identity);\r\n\r\n expect(Matrix.Close(inverted, identity)).toEqual(true);\r\n });\r\n\r\n it(\"Inverts a matrix\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n const mat = Matrix.Compose(scale, rot, pos);\r\n const inverted = Matrix.Invert(mat);\r\n\r\n // Numbers are from babylon\r\n const expected = new Matrix([\r\n 0.08665996789932251,\r\n -0.09982336312532425,\r\n 0.061411935836076736,\r\n -0,\r\n 0.0127079077064991,\r\n -0.0764136016368866,\r\n -0.10518387705087662,\r\n 0,\r\n 0.14179681241512299,\r\n 0.06785587966442108,\r\n -0.028105635195970535,\r\n -0,\r\n -6.435692310333252,\r\n 2.314870595932007,\r\n 2.1373696327209473,\r\n 1,\r\n ]);\r\n\r\n expect(Matrix.Close(inverted, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Creates a rotation matrix from an axis ange angle\", () => {\r\n const axis = new Vector3(1, 2, 3);\r\n const angle = Angle.FromRadians(1.3);\r\n const rotationMatrix = Matrix.FromRotationAxisAngle(axis, angle);\r\n\r\n // Numbers are from babylon\r\n const expected = new Matrix([\r\n 0.3198203444480896,\r\n 0.8772082924842834,\r\n -0.3580789864063263,\r\n 0,\r\n -0.6679222583770752,\r\n 0.476784884929657,\r\n 0.5714508295059204,\r\n 0,\r\n 0.6720080375671387,\r\n 0.05640731751918793,\r\n 0.7383924126625061,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n ]);\r\n\r\n expect(Matrix.Close(rotationMatrix, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Sets the transformation of a matrix\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n const mat = Matrix.Compose(scale, rot, pos);\r\n\r\n const newTrans = new Vector3(3, 2, 1);\r\n const newMat = Matrix.SetMatrixTranslation(mat, newTrans);\r\n expect(Quaternion.Close(newMat.rotation, rot)).toEqual(true);\r\n expect(Vector3.Close(newMat.translation, newTrans)).toEqual(true);\r\n expect(Vector3.Close(newMat.scale, scale)).toEqual(true);\r\n });\r\n\r\n it(\"Sets the rotation of a matrix\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n const mat = Matrix.Compose(scale, rot, pos);\r\n\r\n const newRotation = Quaternion.FromEuler(\r\n Angle.FromRadians(1.1),\r\n Angle.FromRadians(2.2),\r\n Angle.FromRadians(3.3)\r\n );\r\n const newMat = Matrix.SetMatrixRotation(mat, newRotation);\r\n expect(Quaternion.Close(newMat.rotation, newRotation)).toEqual(true);\r\n expect(Vector3.Close(newMat.translation, pos)).toEqual(true);\r\n expect(Vector3.Close(newMat.scale, scale)).toEqual(true);\r\n });\r\n\r\n it(\"Sets the scale of a matrix\", () => {\r\n const pos = new Vector3(23, 26, 29);\r\n const scale = new Vector3(6, 7, 8);\r\n const rot = Quaternion.FromEuler(\r\n Angle.FromRadians(1),\r\n Angle.FromRadians(2),\r\n Angle.FromRadians(3)\r\n );\r\n const mat = Matrix.Compose(scale, rot, pos);\r\n\r\n const newScale = new Vector3(1, 2, 3);\r\n const newMat = Matrix.SetMatrixScale(mat, newScale);\r\n expect(Quaternion.Close(newMat.rotation, rot)).toEqual(true);\r\n expect(Vector3.Close(newMat.translation, pos)).toEqual(true);\r\n expect(Vector3.Close(newMat.scale, newScale)).toEqual(true);\r\n });\r\n\r\n it(\"Makes a Matrix from a Float 32 Array\", () => {\r\n const float32Array = new Float32Array(16);\r\n for (let index = 0; index < 16; index++) {\r\n float32Array[index] = index * 2;\r\n }\r\n\r\n const matrix = Matrix.FromFloat32Array(float32Array);\r\n\r\n for (let index = 0; index < 16; index++) {\r\n expect(matrix.m[index]).toEqual(index * 2);\r\n }\r\n })\r\n\r\n it(\"Logs an error and return the identity if the float 32 array does not have 16 itesm\", () => {\r\n const float32Array = new Float32Array(1);\r\n console.error = jest.fn();\r\n const matrix = Matrix.FromFloat32Array(float32Array);\r\n\r\n expect(console.error).toBeCalled();\r\n expect(matrix).toEqual(Matrix.Identity());\r\n })\r\n\r\n it(\"Flips the handedness of a transform matrix\", () => {\r\n const matrix = new Matrix(sequentialArray);\r\n const flipped = Matrix.FlipTransformMatrixHand(matrix);\r\n\r\n for (let index = 0; index < 16; index++) {\r\n if (index === 2 || index === 6 || index === 8 || index === 9 || index === 14) {\r\n expect(matrix.m[index]).toEqual(-flipped.m[index]);\r\n } else {\r\n expect(matrix.m[index]).toEqual(flipped.m[index]);\r\n }\r\n }\r\n })\r\n\r\n it(\"Flips the handedness of a projection matrix\", () => {\r\n const matrix = new Matrix(sequentialArray);\r\n const flipped = Matrix.FlipProjectionMatrixHand(matrix);\r\n\r\n for (let index = 0; index < 16; index++) {\r\n if (index === 8 || index === 9 || index === 10 || index === 11) {\r\n expect(matrix.m[index]).toEqual(-flipped.m[index]);\r\n } else {\r\n expect(matrix.m[index]).toEqual(flipped.m[index]);\r\n }\r\n }\r\n })\r\n});\r\n\r\nconst identityArray: MatrixArray = [\r\n 1,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n];\r\n\r\nconst zeroArray: MatrixArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n\r\nconst sequentialArray: MatrixArray = [\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 7,\r\n 8,\r\n 9,\r\n 10,\r\n 11,\r\n 12,\r\n 13,\r\n 14,\r\n 15,\r\n 16,\r\n];\r\n"]}
@@ -1,124 +0,0 @@
1
- import { Vector3 } from ".";
2
- import { ParametricLine } from "./ParametricLine";
3
- test("Setting and getting the parameters", () => {
4
- const inputParameters = {
5
- x0: 1,
6
- y0: 2,
7
- z0: 3,
8
- a: 4,
9
- b: 5,
10
- c: 6,
11
- };
12
- const line = new ParametricLine(inputParameters);
13
- const dirUnit = new Vector3(4, 5, 6).unit;
14
- expect(line.x0).toEqual(inputParameters.x0);
15
- expect(line.y0).toEqual(inputParameters.y0);
16
- expect(line.z0).toEqual(inputParameters.z0);
17
- expect(line.a).toBeCloseTo(dirUnit.x);
18
- expect(line.b).toBeCloseTo(dirUnit.y);
19
- expect(line.c).toBeCloseTo(dirUnit.z);
20
- });
21
- test("Line from point and direction", () => {
22
- const point = new Vector3(1, 2, 3);
23
- const dir = new Vector3(10, 20, 30).unit;
24
- const line = ParametricLine.FromPointDirection(point, dir);
25
- expect(line.x0).toEqual(1);
26
- expect(line.y0).toEqual(2);
27
- expect(line.z0).toEqual(3);
28
- expect(line.a).toBeCloseTo(dir.x);
29
- expect(line.b).toBeCloseTo(dir.y);
30
- expect(line.c).toBeCloseTo(dir.z);
31
- });
32
- test("From two points", () => {
33
- const p1 = new Vector3(1, 2, 3);
34
- const p2 = new Vector3(4, 5, 6);
35
- const line = ParametricLine.FromTwoPoint(p1, p2);
36
- const dir = Vector3.Subtract(p2, p1).unit;
37
- expect(line.x0).toEqual(1);
38
- expect(line.y0).toEqual(2);
39
- expect(line.z0).toEqual(3);
40
- expect(line.a).toEqual(dir.x);
41
- expect(line.b).toEqual(dir.y);
42
- expect(line.c).toEqual(dir.z);
43
- });
44
- test("Get point", () => {
45
- const p1 = new Vector3(1, 2, 3);
46
- const p2 = new Vector3(4, 5, 6);
47
- let dir = Vector3.Subtract(p2, p1).unit;
48
- const distance = 11;
49
- dir = Vector3.NewVectorOfLength(dir, distance);
50
- const expectedPoint = Vector3.Add(p1, dir);
51
- const line = ParametricLine.FromTwoPoint(p1, p2);
52
- const point = ParametricLine.GetPointAtDistance(line, distance);
53
- expect(point.array).toEqual(expectedPoint.array);
54
- });
55
- test("Get point along forward", () => {
56
- const line = ParametricLine.Forward();
57
- const point = ParametricLine.GetPointAtDistance(line, 11);
58
- expect(point.array).toEqual([0, 0, 11]);
59
- });
60
- test("Get point along backwards", () => {
61
- const line = ParametricLine.Backward();
62
- const point = ParametricLine.GetPointAtDistance(line, 11);
63
- expect(point.array).toEqual([0, 0, -11]);
64
- });
65
- test("Get point along up", () => {
66
- const line = ParametricLine.Up();
67
- const point = ParametricLine.GetPointAtDistance(line, 11);
68
- expect(point.array).toEqual([0, 11, 0]);
69
- });
70
- test("Get point along down", () => {
71
- const line = ParametricLine.Down();
72
- const point = ParametricLine.GetPointAtDistance(line, 11);
73
- expect(point.array).toEqual([0, -11, 0]);
74
- });
75
- test("Get point along left", () => {
76
- const line = ParametricLine.Left();
77
- const point = ParametricLine.GetPointAtDistance(line, 11);
78
- expect(point.array).toEqual([-11, 0, 0]);
79
- });
80
- test("Get point along right", () => {
81
- const line = ParametricLine.Right();
82
- const point = ParametricLine.GetPointAtDistance(line, 11);
83
- expect(point.array).toEqual([11, 0, 0]);
84
- });
85
- test("Check for equality", () => {
86
- const inputParameters = {
87
- x0: 1,
88
- y0: 2,
89
- z0: 3,
90
- a: 4,
91
- b: 5,
92
- c: 6,
93
- };
94
- const line1 = new ParametricLine(inputParameters);
95
- const line2 = new ParametricLine(inputParameters);
96
- expect(line1).toEqual(line2);
97
- });
98
- test("Geting the origin", () => {
99
- const origin = new Vector3(1, 2, 3);
100
- const direction = new Vector3(4, 5, 6).unit;
101
- const line = ParametricLine.FromPointDirection(origin, direction);
102
- expect(line.origin).toEqual(origin);
103
- });
104
- test("Getting the direction", () => {
105
- const origin = new Vector3(1, 2, 3);
106
- const direction = new Vector3(4, 5, 6).unit;
107
- const line = ParametricLine.FromPointDirection(origin, direction);
108
- expect(Vector3.Close(line.direction, direction)).toEqual(true);
109
- });
110
- test("Ensures the direction is unit", () => {
111
- const origin = new Vector3(1, 2, 3);
112
- const direction = new Vector3(4, 5, 6);
113
- const line = ParametricLine.FromPointDirection(origin, direction);
114
- expect(line.direction).toEqual(direction.unit);
115
- });
116
- test("Get distance to point", () => {
117
- const origin = new Vector3(1, 2, 3);
118
- const direction = new Vector3(4, 5, 6);
119
- const line = ParametricLine.FromPointDirection(origin, direction);
120
- const point = new Vector3(10, 20, 30);
121
- const expected = Vector3.Subtract(point, origin).magnitude;
122
- expect(ParametricLine.GetDistanceToPoint(line, point)).toEqual(expected);
123
- });
124
- //# sourceMappingURL=ParametricLine.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ParametricLine.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/ParametricLine.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector3 } from \".\";\r\nimport { LineParameters, ParametricLine } from \"./ParametricLine\";\r\n\r\ntest(\"Setting and getting the parameters\", () => {\r\n const inputParameters: LineParameters = {\r\n x0: 1,\r\n y0: 2,\r\n z0: 3,\r\n a: 4,\r\n b: 5,\r\n c: 6,\r\n };\r\n const line = new ParametricLine(inputParameters);\r\n\r\n const dirUnit = new Vector3(4, 5, 6).unit;\r\n\r\n expect(line.x0).toEqual(inputParameters.x0);\r\n expect(line.y0).toEqual(inputParameters.y0);\r\n expect(line.z0).toEqual(inputParameters.z0);\r\n expect(line.a).toBeCloseTo(dirUnit.x);\r\n expect(line.b).toBeCloseTo(dirUnit.y);\r\n expect(line.c).toBeCloseTo(dirUnit.z);\r\n});\r\n\r\ntest(\"Line from point and direction\", () => {\r\n const point = new Vector3(1, 2, 3);\r\n const dir = new Vector3(10, 20, 30).unit;\r\n\r\n const line = ParametricLine.FromPointDirection(point, dir);\r\n\r\n expect(line.x0).toEqual(1);\r\n expect(line.y0).toEqual(2);\r\n expect(line.z0).toEqual(3);\r\n expect(line.a).toBeCloseTo(dir.x);\r\n expect(line.b).toBeCloseTo(dir.y);\r\n expect(line.c).toBeCloseTo(dir.z);\r\n});\r\n\r\ntest(\"From two points\", () => {\r\n const p1 = new Vector3(1, 2, 3);\r\n const p2 = new Vector3(4, 5, 6);\r\n\r\n const line = ParametricLine.FromTwoPoint(p1, p2);\r\n\r\n const dir = Vector3.Subtract(p2, p1).unit;\r\n\r\n expect(line.x0).toEqual(1);\r\n expect(line.y0).toEqual(2);\r\n expect(line.z0).toEqual(3);\r\n expect(line.a).toEqual(dir.x);\r\n expect(line.b).toEqual(dir.y);\r\n expect(line.c).toEqual(dir.z);\r\n});\r\n\r\ntest(\"Get point\", () => {\r\n const p1 = new Vector3(1, 2, 3);\r\n const p2 = new Vector3(4, 5, 6);\r\n\r\n let dir = Vector3.Subtract(p2, p1).unit;\r\n\r\n const distance = 11;\r\n dir = Vector3.NewVectorOfLength(dir, distance);\r\n const expectedPoint = Vector3.Add(p1, dir);\r\n\r\n const line = ParametricLine.FromTwoPoint(p1, p2);\r\n const point = ParametricLine.GetPointAtDistance(line, distance);\r\n expect(point.array).toEqual(expectedPoint.array);\r\n});\r\n\r\ntest(\"Get point along forward\", () => {\r\n const line = ParametricLine.Forward();\r\n const point = ParametricLine.GetPointAtDistance(line, 11);\r\n expect(point.array).toEqual([0, 0, 11]);\r\n});\r\n\r\ntest(\"Get point along backwards\", () => {\r\n const line = ParametricLine.Backward();\r\n const point = ParametricLine.GetPointAtDistance(line, 11);\r\n expect(point.array).toEqual([0, 0, -11]);\r\n});\r\n\r\ntest(\"Get point along up\", () => {\r\n const line = ParametricLine.Up();\r\n const point = ParametricLine.GetPointAtDistance(line, 11);\r\n expect(point.array).toEqual([0, 11, 0]);\r\n});\r\n\r\ntest(\"Get point along down\", () => {\r\n const line = ParametricLine.Down();\r\n const point = ParametricLine.GetPointAtDistance(line, 11);\r\n expect(point.array).toEqual([0, -11, 0]);\r\n});\r\n\r\ntest(\"Get point along left\", () => {\r\n const line = ParametricLine.Left();\r\n const point = ParametricLine.GetPointAtDistance(line, 11);\r\n expect(point.array).toEqual([-11, 0, 0]);\r\n});\r\n\r\ntest(\"Get point along right\", () => {\r\n const line = ParametricLine.Right();\r\n const point = ParametricLine.GetPointAtDistance(line, 11);\r\n expect(point.array).toEqual([11, 0, 0]);\r\n});\r\n\r\ntest(\"Check for equality\", () => {\r\n const inputParameters: LineParameters = {\r\n x0: 1,\r\n y0: 2,\r\n z0: 3,\r\n a: 4,\r\n b: 5,\r\n c: 6,\r\n };\r\n const line1 = new ParametricLine(inputParameters);\r\n const line2 = new ParametricLine(inputParameters);\r\n\r\n expect(line1).toEqual(line2);\r\n});\r\n\r\ntest(\"Geting the origin\", () => {\r\n const origin = new Vector3(1, 2, 3);\r\n const direction = new Vector3(4, 5, 6).unit;\r\n const line = ParametricLine.FromPointDirection(origin, direction);\r\n\r\n expect(line.origin).toEqual(origin);\r\n});\r\n\r\ntest(\"Getting the direction\", () => {\r\n const origin = new Vector3(1, 2, 3);\r\n const direction = new Vector3(4, 5, 6).unit;\r\n const line = ParametricLine.FromPointDirection(origin, direction);\r\n\r\n expect(Vector3.Close(line.direction, direction)).toEqual(true);\r\n});\r\n\r\ntest(\"Ensures the direction is unit\", () => {\r\n const origin = new Vector3(1, 2, 3);\r\n const direction = new Vector3(4, 5, 6);\r\n const line = ParametricLine.FromPointDirection(origin, direction);\r\n\r\n expect(line.direction).toEqual(direction.unit);\r\n});\r\n\r\ntest(\"Get distance to point\", () => {\r\n const origin = new Vector3(1, 2, 3);\r\n const direction = new Vector3(4, 5, 6);\r\n const line = ParametricLine.FromPointDirection(origin, direction);\r\n\r\n const point = new Vector3(10, 20, 30);\r\n\r\n const expected = Vector3.Subtract(point, origin).magnitude;\r\n\r\n expect(ParametricLine.GetDistanceToPoint(line, point)).toEqual(expected);\r\n});\r\n"]}