@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,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ParametricLine_1 = require("./ParametricLine");
4
- const ParametricPlane_1 = require("./ParametricPlane");
5
- const ValueObjects_1 = require("../ValueObjects");
6
- test("Setting from point and normal", () => {
7
- const point = new ValueObjects_1.Vector3(1, 2, 3);
8
- const normal = new ValueObjects_1.Vector3(4, 5, 6);
9
- const plane = ParametricPlane_1.ParametricPlane.FromPointNormal(point, normal);
10
- const parameters = plane.GetParameters();
11
- const dot = ValueObjects_1.Vector3.Dot(point, normal);
12
- expect(parameters.a).toEqual(normal.x);
13
- expect(parameters.b).toEqual(normal.y);
14
- expect(parameters.c).toEqual(normal.z);
15
- expect(parameters.d).toEqual(-dot);
16
- });
17
- test("From three points", () => {
18
- // From https://keisan.casio.com/exec/system/1223596129
19
- const A = new ValueObjects_1.Vector3(1, 2, -2);
20
- const B = new ValueObjects_1.Vector3(3, -2, 1);
21
- const C = new ValueObjects_1.Vector3(5, 1, -4);
22
- const plane = ParametricPlane_1.ParametricPlane.FromThreePoints(A, B, C);
23
- const parameters = plane.GetParameters();
24
- expect(parameters.a).toEqual(11);
25
- expect(parameters.b).toEqual(16);
26
- expect(parameters.c).toEqual(14);
27
- expect(parameters.d).toEqual(-15);
28
- });
29
- test("Intersection", () => {
30
- const point = new ValueObjects_1.Vector3(1, 1, 1);
31
- const dir = new ValueObjects_1.Vector3(1, 0, 0);
32
- const line = ParametricLine_1.ParametricLine.FromPointDirection(point, dir);
33
- const plane1 = new ValueObjects_1.Vector3(-1, 0, 0);
34
- const plane2 = new ValueObjects_1.Vector3(-1, 1, 0);
35
- const plane3 = new ValueObjects_1.Vector3(-1, 0, 1);
36
- const plane = ParametricPlane_1.ParametricPlane.FromThreePoints(plane1, plane2, plane3);
37
- const intersect = plane.intersectLine(line);
38
- expect(intersect?.x).toBeCloseTo(-1);
39
- expect(intersect?.y).toBeCloseTo(1);
40
- expect(intersect?.z).toBeCloseTo(1);
41
- });
42
- test("Intersection", () => {
43
- // From http://www.ambrsoft.com/TrigoCalc/Plan3D/PlaneLineIntersection_.htm
44
- const line1 = new ValueObjects_1.Vector3(4, 1, 1);
45
- const line2 = new ValueObjects_1.Vector3(8, -2, -2);
46
- const line = ParametricLine_1.ParametricLine.FromTwoPoint(line1, line2);
47
- const plane1 = new ValueObjects_1.Vector3(-1, 2, 4);
48
- const plane2 = new ValueObjects_1.Vector3(2, 1, 3);
49
- const plane3 = new ValueObjects_1.Vector3(1, 3, 2);
50
- const plane = ParametricPlane_1.ParametricPlane.FromThreePoints(plane1, plane2, plane3);
51
- const intersect = plane.intersectLine(line);
52
- expect(intersect?.x).toBeCloseTo(2.93);
53
- expect(intersect?.y).toBeCloseTo(1.8);
54
- expect(intersect?.z).toBeCloseTo(1.8);
55
- });
56
- test("If parallel, intersect should come back undefined", () => {
57
- const line1 = new ValueObjects_1.Vector3(0, 1, 0);
58
- const line2 = new ValueObjects_1.Vector3(0, -1, 0);
59
- const line = ParametricLine_1.ParametricLine.FromTwoPoint(line1, line2); // Vertical line going through the origin
60
- const plane1 = new ValueObjects_1.Vector3(0, 0, 0);
61
- const plane2 = new ValueObjects_1.Vector3(0, 1, 0);
62
- const plane3 = new ValueObjects_1.Vector3(0, 0, 1);
63
- const plane = ParametricPlane_1.ParametricPlane.FromThreePoints(plane1, plane2, plane3); // y-z plane
64
- const intersect = plane.intersectLine(line);
65
- expect(intersect).toBeUndefined();
66
- });
67
- test("XY Plane", () => {
68
- const plane = ParametricPlane_1.ParametricPlane.XY();
69
- expect(plane.GetParameters()).toEqual({
70
- a: 0,
71
- b: 0,
72
- c: 1,
73
- d: 0,
74
- });
75
- });
76
- test("ZX Plane", () => {
77
- const plane = ParametricPlane_1.ParametricPlane.ZX();
78
- expect(plane.GetParameters()).toEqual({
79
- a: 0,
80
- b: 1,
81
- c: 0,
82
- d: 0,
83
- });
84
- });
85
- test("YZ Plane", () => {
86
- const plane = ParametricPlane_1.ParametricPlane.YZ();
87
- expect(plane.GetParameters()).toEqual({
88
- a: 1,
89
- b: 0,
90
- c: 0,
91
- d: 0,
92
- });
93
- });
94
- test("Check for equality", () => {
95
- const point = new ValueObjects_1.Vector3(1, 2, 3);
96
- const normal = new ValueObjects_1.Vector3(4, 5, 6);
97
- const plane1 = ParametricPlane_1.ParametricPlane.FromPointNormal(point, normal);
98
- const plane2 = ParametricPlane_1.ParametricPlane.FromPointNormal(point, normal);
99
- expect(plane1).toEqual(plane2);
100
- });
101
- //# sourceMappingURL=ParametricPlane.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ParametricPlane.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/ParametricPlane.test.ts"],"names":[],"mappings":";;AAAA,qDAAkD;AAClD,uDAAoD;AACpD,kDAA0C;AAE1C,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IACzC,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,iCAAe,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAEzC,MAAM,GAAG,GAAG,sBAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC7B,uDAAuD;IACvD,MAAM,CAAC,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,iCAAe,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAEzC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,+BAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,iCAAe,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,2EAA2E;IAE3E,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,+BAAc,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,iCAAe,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,+BAAc,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,yCAAyC;IAEjG,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,iCAAe,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY;IAEnF,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,KAAK,GAAG,iCAAe,CAAC,EAAE,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC;QACpC,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;KACL,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,KAAK,GAAG,iCAAe,CAAC,EAAE,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC;QACpC,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;KACL,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,KAAK,GAAG,iCAAe,CAAC,EAAE,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC;QACpC,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;KACL,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC9B,MAAM,KAAK,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,sBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,iCAAe,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,iCAAe,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC","sourcesContent":["import { ParametricLine } from \"./ParametricLine\";\r\nimport { ParametricPlane } from \"./ParametricPlane\";\r\nimport { Vector3 } from \"../ValueObjects\";\r\n\r\ntest(\"Setting from point and normal\", () => {\r\n const point = new Vector3(1, 2, 3);\r\n const normal = new Vector3(4, 5, 6);\r\n const plane = ParametricPlane.FromPointNormal(point, normal);\r\n\r\n const parameters = plane.GetParameters();\r\n\r\n const dot = Vector3.Dot(point, normal);\r\n expect(parameters.a).toEqual(normal.x);\r\n expect(parameters.b).toEqual(normal.y);\r\n expect(parameters.c).toEqual(normal.z);\r\n expect(parameters.d).toEqual(-dot);\r\n});\r\n\r\ntest(\"From three points\", () => {\r\n // From https://keisan.casio.com/exec/system/1223596129\r\n const A = new Vector3(1, 2, -2);\r\n const B = new Vector3(3, -2, 1);\r\n const C = new Vector3(5, 1, -4);\r\n\r\n const plane = ParametricPlane.FromThreePoints(A, B, C);\r\n const parameters = plane.GetParameters();\r\n\r\n expect(parameters.a).toEqual(11);\r\n expect(parameters.b).toEqual(16);\r\n expect(parameters.c).toEqual(14);\r\n expect(parameters.d).toEqual(-15);\r\n});\r\n\r\ntest(\"Intersection\", () => {\r\n const point = new Vector3(1, 1, 1);\r\n const dir = new Vector3(1, 0, 0);\r\n const line = ParametricLine.FromPointDirection(point, dir);\r\n\r\n const plane1 = new Vector3(-1, 0, 0);\r\n const plane2 = new Vector3(-1, 1, 0);\r\n const plane3 = new Vector3(-1, 0, 1);\r\n const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3);\r\n\r\n const intersect = plane.intersectLine(line);\r\n\r\n expect(intersect?.x).toBeCloseTo(-1);\r\n expect(intersect?.y).toBeCloseTo(1);\r\n expect(intersect?.z).toBeCloseTo(1);\r\n});\r\n\r\ntest(\"Intersection\", () => {\r\n // From http://www.ambrsoft.com/TrigoCalc/Plan3D/PlaneLineIntersection_.htm\r\n\r\n const line1 = new Vector3(4, 1, 1);\r\n const line2 = new Vector3(8, -2, -2);\r\n const line = ParametricLine.FromTwoPoint(line1, line2);\r\n\r\n const plane1 = new Vector3(-1, 2, 4);\r\n const plane2 = new Vector3(2, 1, 3);\r\n const plane3 = new Vector3(1, 3, 2);\r\n const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3);\r\n\r\n const intersect = plane.intersectLine(line);\r\n\r\n expect(intersect?.x).toBeCloseTo(2.93);\r\n expect(intersect?.y).toBeCloseTo(1.8);\r\n expect(intersect?.z).toBeCloseTo(1.8);\r\n});\r\n\r\ntest(\"If parallel, intersect should come back undefined\", () => {\r\n const line1 = new Vector3(0, 1, 0);\r\n const line2 = new Vector3(0, -1, 0);\r\n const line = ParametricLine.FromTwoPoint(line1, line2); // Vertical line going through the origin\r\n\r\n const plane1 = new Vector3(0, 0, 0);\r\n const plane2 = new Vector3(0, 1, 0);\r\n const plane3 = new Vector3(0, 0, 1);\r\n const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3); // y-z plane\r\n\r\n const intersect = plane.intersectLine(line);\r\n\r\n expect(intersect).toBeUndefined();\r\n});\r\n\r\ntest(\"XY Plane\", () => {\r\n const plane = ParametricPlane.XY();\r\n expect(plane.GetParameters()).toEqual({\r\n a: 0,\r\n b: 0,\r\n c: 1,\r\n d: 0,\r\n });\r\n});\r\n\r\ntest(\"ZX Plane\", () => {\r\n const plane = ParametricPlane.ZX();\r\n expect(plane.GetParameters()).toEqual({\r\n a: 0,\r\n b: 1,\r\n c: 0,\r\n d: 0,\r\n });\r\n});\r\n\r\ntest(\"YZ Plane\", () => {\r\n const plane = ParametricPlane.YZ();\r\n expect(plane.GetParameters()).toEqual({\r\n a: 1,\r\n b: 0,\r\n c: 0,\r\n d: 0,\r\n });\r\n});\r\n\r\ntest(\"Check for equality\", () => {\r\n const point = new Vector3(1, 2, 3);\r\n const normal = new Vector3(4, 5, 6);\r\n const plane1 = ParametricPlane.FromPointNormal(point, normal);\r\n const plane2 = ParametricPlane.FromPointNormal(point, normal);\r\n\r\n expect(plane1).toEqual(plane2);\r\n});\r\n"]}
@@ -1,240 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Angle_1 = require("./Angle");
4
- const Matrix_1 = require("./Matrix");
5
- const Quaternion_1 = require("./Quaternion");
6
- const Vector3_1 = require("./Vector3");
7
- describe("Quaterion Value Object", () => {
8
- it("Checks for equality", () => {
9
- const quat1 = new Quaternion_1.Quaternion(1, 2, 3, 4);
10
- const quat2 = new Quaternion_1.Quaternion(1, 2, 3, 4);
11
- const quat3 = new Quaternion_1.Quaternion(10, 20, 30, 40);
12
- expect(Quaternion_1.Quaternion.Equal(quat1, quat2)).toEqual(true);
13
- expect(Quaternion_1.Quaternion.Equal(quat1, quat3)).toEqual(false);
14
- });
15
- it("Constructs a new quaternion from an array", () => {
16
- const quat = Quaternion_1.Quaternion.FromArray([1, 2, 3, 4]);
17
- expect(quat.x).toEqual(1);
18
- expect(quat.y).toEqual(2);
19
- expect(quat.z).toEqual(3);
20
- expect(quat.w).toEqual(4);
21
- });
22
- it("Constructs an identity quaternion", () => {
23
- const quat = Quaternion_1.Quaternion.Identity();
24
- expect(quat.x).toEqual(0);
25
- expect(quat.y).toEqual(0);
26
- expect(quat.z).toEqual(0);
27
- expect(quat.w).toEqual(1);
28
- });
29
- it("Equates two quaternions for testing", () => {
30
- const quat1 = new Quaternion_1.Quaternion(1, 2, 3, 4);
31
- const quat2 = new Quaternion_1.Quaternion(1, 2, 3, 4);
32
- expect(quat1).toEqual(quat2);
33
- });
34
- it("Returns an array", () => {
35
- const quat1 = new Quaternion_1.Quaternion(1, 2, 3, 4);
36
- expect(quat1.toArray()).toEqual([1, 2, 3, 4]);
37
- });
38
- it("Multiplies two quaternions", () => {
39
- // See https://www.omnicalculator.com/math/quaternion
40
- const quat1 = new Quaternion_1.Quaternion(1, 2, 3, 4);
41
- const quat2 = new Quaternion_1.Quaternion(5, 6, 7, 8);
42
- const product = Quaternion_1.Quaternion.Multiply(quat1, quat2);
43
- const expected = new Quaternion_1.Quaternion(24, 48, 48, -6);
44
- expect(product).toEqual(expected);
45
- });
46
- it("Inverts a quaternion", () => {
47
- const quat1 = new Quaternion_1.Quaternion(1, 2, 3, 4);
48
- const inverted = Quaternion_1.Quaternion.Inverse(quat1);
49
- const expected = new Quaternion_1.Quaternion(-1, -2, -3, 4);
50
- expect(inverted).toEqual(expected);
51
- });
52
- it("Creates an Quaterion from an Axis and Angle", () => {
53
- // See https://www.andre-gaschler.com/rotationconverter
54
- const axis = new Vector3_1.Vector3(1, 2, 3);
55
- const angle = Angle_1.Angle.FromRadians(4);
56
- const quat = Quaternion_1.Quaternion.FromAngleAxis(axis, angle);
57
- expect(quat.x).toBeCloseTo(0.24302);
58
- expect(quat.y).toBeCloseTo(0.4860399);
59
- expect(quat.z).toBeCloseTo(0.7290599);
60
- expect(quat.w).toBeCloseTo(-0.4161468);
61
- });
62
- it("Creates an Quaterion from a Yaw Pitch Roll", () => {
63
- // Numbers are from the babylon playground
64
- const yaw = Angle_1.Angle.FromRadians(1);
65
- const pitch = Angle_1.Angle.FromRadians(2);
66
- const roll = Angle_1.Angle.FromRadians(3);
67
- const quat = Quaternion_1.Quaternion.FromYawPitchRoll(yaw, pitch, roll);
68
- expect(quat.x).toBeCloseTo(0.310622);
69
- expect(quat.y).toBeCloseTo(-0.71828);
70
- expect(quat.z).toBeCloseTo(0.444435);
71
- expect(quat.w).toBeCloseTo(0.4359528);
72
- });
73
- it("Creates an Quaterion from Euler angles", () => {
74
- // Numbers are from the babylon playground
75
- const x = Angle_1.Angle.FromRadians(1);
76
- const y = Angle_1.Angle.FromRadians(2);
77
- const z = Angle_1.Angle.FromRadians(3);
78
- const quat = Quaternion_1.Quaternion.FromEuler(x, y, z);
79
- expect(quat.x).toBeCloseTo(0.754933);
80
- expect(quat.y).toBeCloseTo(-0.206149);
81
- expect(quat.z).toBeCloseTo(0.444435);
82
- expect(quat.w).toBeCloseTo(0.4359528);
83
- });
84
- it("Slerps", () => {
85
- // See https://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/index.htm
86
- const q1 = new Quaternion_1.Quaternion(0.1, 0.2, 0.3, 0.9);
87
- const q2 = new Quaternion_1.Quaternion(0.5, 0.8, 0.1, 0.4);
88
- const initial = Quaternion_1.Quaternion.Slerp(q1, q2, 0);
89
- expect(initial.x).toBeCloseTo(q1.x);
90
- expect(initial.y).toBeCloseTo(q1.y);
91
- expect(initial.z).toBeCloseTo(q1.z);
92
- expect(initial.w).toBeCloseTo(q1.w);
93
- const final = Quaternion_1.Quaternion.Slerp(q1, q2, 1);
94
- expect(final.x).toBeCloseTo(q2.x);
95
- expect(final.y).toBeCloseTo(q2.y);
96
- expect(final.z).toBeCloseTo(q2.z);
97
- expect(final.w).toBeCloseTo(q2.w);
98
- const middle = Quaternion_1.Quaternion.Slerp(q1, q2, 0.35);
99
- expect(middle.x).toBeCloseTo(0.27016);
100
- expect(middle.y).toBeCloseTo(0.46061);
101
- expect(middle.z).toBeCloseTo(0.25244);
102
- expect(middle.w).toBeCloseTo(0.7972);
103
- });
104
- it("Makes a quaterion from a rotation matrix", () => {
105
- const x = Angle_1.Angle.FromRadians(1);
106
- const y = Angle_1.Angle.FromRadians(2);
107
- const z = Angle_1.Angle.FromRadians(3);
108
- const originalQ = Quaternion_1.Quaternion.FromEuler(x, y, z);
109
- const matrix = Matrix_1.Matrix.Compose(Vector3_1.Vector3.One(), originalQ, Vector3_1.Vector3.Zero());
110
- const result = Quaternion_1.Quaternion.FromRotationMatrix(matrix);
111
- expect(result.x).toBeCloseTo(originalQ.x);
112
- expect(result.y).toBeCloseTo(originalQ.y);
113
- expect(result.z).toBeCloseTo(originalQ.z);
114
- expect(result.w).toBeCloseTo(originalQ.w);
115
- });
116
- it("Checks if two quaternions are close", () => {
117
- const a = new Quaternion_1.Quaternion(1, 2, 3, 4);
118
- const bigger = new Quaternion_1.Quaternion(1.01, 2.01, 3.01, 4.01);
119
- const smaller = new Quaternion_1.Quaternion(0.99, 1.99, 2.99, 3.99);
120
- expect(Quaternion_1.Quaternion.Close(a, bigger, 0.0101)).toEqual(true);
121
- expect(Quaternion_1.Quaternion.Close(a, bigger, 0.0099)).toEqual(false);
122
- expect(Quaternion_1.Quaternion.Close(a, smaller, 0.0101)).toEqual(true);
123
- expect(Quaternion_1.Quaternion.Close(a, smaller, 0.0099)).toEqual(false);
124
- });
125
- it("Retuns the angle", () => {
126
- const angle = Angle_1.Angle.FromDegrees(25);
127
- const axis = new Vector3_1.Vector3(1, 2, 3);
128
- const q = Quaternion_1.Quaternion.FromAngleAxis(axis, angle);
129
- expect(Angle_1.Angle.Close(q.angle, angle)).toEqual(true);
130
- });
131
- it("Retuns the axis", () => {
132
- const angle = Angle_1.Angle.FromDegrees(25);
133
- const axis = new Vector3_1.Vector3(1, 2, 3);
134
- const q = Quaternion_1.Quaternion.FromAngleAxis(axis, angle);
135
- expect(Vector3_1.Vector3.Close(q.axis, axis.unit)).toEqual(true);
136
- });
137
- it("Makes a quaternion into a rotation matrix", () => {
138
- const x = Angle_1.Angle.FromRadians(1);
139
- const y = Angle_1.Angle.FromRadians(2);
140
- const z = Angle_1.Angle.FromRadians(3);
141
- const originalQ = Quaternion_1.Quaternion.FromEuler(x, y, z);
142
- const mat = Quaternion_1.Quaternion.ToRotationMatrix(originalQ);
143
- expect(Quaternion_1.Quaternion.Close(mat.rotation, originalQ)).toEqual(true);
144
- expect(Vector3_1.Vector3.Close(mat.scale, Vector3_1.Vector3.One())).toEqual(true);
145
- expect(Vector3_1.Vector3.Close(mat.translation, Vector3_1.Vector3.Zero())).toEqual(true);
146
- });
147
- it("Gets the Data Transfer Object", () => {
148
- const quat = new Quaternion_1.Quaternion(1, 2, 3, 4);
149
- expect(quat.dto).toEqual({
150
- x: 1,
151
- y: 2,
152
- z: 3,
153
- w: 4,
154
- });
155
- });
156
- it("Makes a Quaterion from a DTO", () => {
157
- const quat = Quaternion_1.Quaternion.FromDTO({
158
- x: 1,
159
- y: 2,
160
- z: 3,
161
- w: 4,
162
- });
163
- expect(quat.x).toEqual(1);
164
- expect(quat.y).toEqual(2);
165
- expect(quat.z).toEqual(3);
166
- expect(quat.w).toEqual(4);
167
- });
168
- it("Forms a quaternion from a forward direction", () => {
169
- const dir = new Vector3_1.Vector3(0, 0, 1);
170
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
171
- const expectedQ = Quaternion_1.Quaternion.Identity();
172
- expect(q).toEqual(expectedQ);
173
- });
174
- it("Forms a quaternion from a right direction", () => {
175
- const dir = new Vector3_1.Vector3(1, 0, 0);
176
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
177
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(90), Angle_1.Angle.FromRadians(0), Angle_1.Angle.FromDegrees(0));
178
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
179
- });
180
- it("Forms a quaternion from a left direction", () => {
181
- const dir = new Vector3_1.Vector3(-1, 0, 0);
182
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
183
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(-90), Angle_1.Angle.FromRadians(0), Angle_1.Angle.FromDegrees(0));
184
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
185
- });
186
- it("Forms a quaternion from a behind direction", () => {
187
- const dir = new Vector3_1.Vector3(0, 0, -1);
188
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
189
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(180), Angle_1.Angle.FromRadians(0), Angle_1.Angle.FromDegrees(0));
190
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
191
- });
192
- it("Forms a quaternion from a 45 degree up direction", () => {
193
- const dir = new Vector3_1.Vector3(0, 1, 1);
194
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
195
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(-45), Angle_1.Angle.FromDegrees(0));
196
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
197
- });
198
- it("Forms a quaternion from a 45 degree up direction", () => {
199
- const dir = new Vector3_1.Vector3(1, 1, 0);
200
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
201
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(90), Angle_1.Angle.FromDegrees(-45), Angle_1.Angle.FromDegrees(0));
202
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
203
- });
204
- it("Returns an identity if the direction is zero", () => {
205
- const dir = new Vector3_1.Vector3(0, 0, 0);
206
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
207
- const expectedQ = Quaternion_1.Quaternion.Identity();
208
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
209
- });
210
- it("Works with an up vector", () => {
211
- const dir = new Vector3_1.Vector3(0, 1, 0);
212
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
213
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(-90), Angle_1.Angle.FromDegrees(0));
214
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
215
- });
216
- it("Works with an down vector", () => {
217
- const dir = new Vector3_1.Vector3(0, -1, 0);
218
- const q = Quaternion_1.Quaternion.FromDirectionVector(dir);
219
- const expectedQ = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(90), Angle_1.Angle.FromDegrees(0));
220
- expect(Quaternion_1.Quaternion.Close(q, expectedQ)).toEqual(true);
221
- });
222
- it("Gets the angle between two quaternions", () => {
223
- const q1 = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(90), Angle_1.Angle.FromDegrees(0));
224
- const q2 = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(80), Angle_1.Angle.FromDegrees(0));
225
- const ang = Quaternion_1.Quaternion.AngleBetween(q1, q2);
226
- expect(ang.degrees).toBeCloseTo(10);
227
- });
228
- it("Keeps the angle between two quaternions less than 180", () => {
229
- const q1 = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(0));
230
- const q2 = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(200), Angle_1.Angle.FromDegrees(0));
231
- const ang = Quaternion_1.Quaternion.AngleBetween(q1, q2);
232
- expect(ang.degrees).toBeCloseTo(160);
233
- });
234
- it("Returns 0 if the quaterions are the same", () => {
235
- const q1 = Quaternion_1.Quaternion.FromYawPitchRoll(Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(0), Angle_1.Angle.FromDegrees(0));
236
- const ang = Quaternion_1.Quaternion.AngleBetween(q1, q1);
237
- expect(ang.degrees).toEqual(0);
238
- });
239
- });
240
- //# sourceMappingURL=Quaternion.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Quaternion.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Quaternion.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle } from \"./Angle\";\r\nimport { Matrix } from \"./Matrix\";\r\nimport { Quaternion } from \"./Quaternion\";\r\nimport { Vector3 } from \"./Vector3\";\r\ndescribe(\"Quaterion Value Object\", () => {\r\n it(\"Checks for equality\", () => {\r\n const quat1 = new Quaternion(1, 2, 3, 4);\r\n const quat2 = new Quaternion(1, 2, 3, 4);\r\n const quat3 = new Quaternion(10, 20, 30, 40);\r\n\r\n expect(Quaternion.Equal(quat1, quat2)).toEqual(true);\r\n expect(Quaternion.Equal(quat1, quat3)).toEqual(false);\r\n });\r\n\r\n it(\"Constructs a new quaternion from an array\", () => {\r\n const quat = Quaternion.FromArray([1, 2, 3, 4]);\r\n expect(quat.x).toEqual(1);\r\n expect(quat.y).toEqual(2);\r\n expect(quat.z).toEqual(3);\r\n expect(quat.w).toEqual(4);\r\n });\r\n\r\n it(\"Constructs an identity quaternion\", () => {\r\n const quat = Quaternion.Identity();\r\n expect(quat.x).toEqual(0);\r\n expect(quat.y).toEqual(0);\r\n expect(quat.z).toEqual(0);\r\n expect(quat.w).toEqual(1);\r\n });\r\n\r\n it(\"Equates two quaternions for testing\", () => {\r\n const quat1 = new Quaternion(1, 2, 3, 4);\r\n const quat2 = new Quaternion(1, 2, 3, 4);\r\n\r\n expect(quat1).toEqual(quat2);\r\n });\r\n\r\n it(\"Returns an array\", () => {\r\n const quat1 = new Quaternion(1, 2, 3, 4);\r\n expect(quat1.toArray()).toEqual([1, 2, 3, 4]);\r\n });\r\n\r\n it(\"Multiplies two quaternions\", () => {\r\n // See https://www.omnicalculator.com/math/quaternion\r\n const quat1 = new Quaternion(1, 2, 3, 4);\r\n const quat2 = new Quaternion(5, 6, 7, 8);\r\n const product = Quaternion.Multiply(quat1, quat2);\r\n const expected = new Quaternion(24, 48, 48, -6);\r\n expect(product).toEqual(expected);\r\n });\r\n\r\n it(\"Inverts a quaternion\", () => {\r\n const quat1 = new Quaternion(1, 2, 3, 4);\r\n const inverted = Quaternion.Inverse(quat1);\r\n const expected = new Quaternion(-1, -2, -3, 4);\r\n expect(inverted).toEqual(expected);\r\n });\r\n\r\n it(\"Creates an Quaterion from an Axis and Angle\", () => {\r\n // See https://www.andre-gaschler.com/rotationconverter\r\n const axis = new Vector3(1, 2, 3);\r\n const angle = Angle.FromRadians(4);\r\n const quat = Quaternion.FromAngleAxis(axis, angle);\r\n\r\n expect(quat.x).toBeCloseTo(0.24302);\r\n expect(quat.y).toBeCloseTo(0.4860399);\r\n expect(quat.z).toBeCloseTo(0.7290599);\r\n expect(quat.w).toBeCloseTo(-0.4161468);\r\n });\r\n\r\n it(\"Creates an Quaterion from a Yaw Pitch Roll\", () => {\r\n // Numbers are from the babylon playground\r\n\r\n const yaw = Angle.FromRadians(1);\r\n const pitch = Angle.FromRadians(2);\r\n const roll = Angle.FromRadians(3);\r\n const quat = Quaternion.FromYawPitchRoll(yaw, pitch, roll);\r\n\r\n expect(quat.x).toBeCloseTo(0.310622);\r\n expect(quat.y).toBeCloseTo(-0.71828);\r\n expect(quat.z).toBeCloseTo(0.444435);\r\n expect(quat.w).toBeCloseTo(0.4359528);\r\n });\r\n\r\n it(\"Creates an Quaterion from Euler angles\", () => {\r\n // Numbers are from the babylon playground\r\n\r\n const x = Angle.FromRadians(1);\r\n const y = Angle.FromRadians(2);\r\n const z = Angle.FromRadians(3);\r\n const quat = Quaternion.FromEuler(x, y, z);\r\n\r\n expect(quat.x).toBeCloseTo(0.754933);\r\n expect(quat.y).toBeCloseTo(-0.206149);\r\n expect(quat.z).toBeCloseTo(0.444435);\r\n expect(quat.w).toBeCloseTo(0.4359528);\r\n });\r\n\r\n it(\"Slerps\", () => {\r\n // See https://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/index.htm\r\n const q1 = new Quaternion(0.1, 0.2, 0.3, 0.9);\r\n const q2 = new Quaternion(0.5, 0.8, 0.1, 0.4);\r\n\r\n const initial = Quaternion.Slerp(q1, q2, 0);\r\n expect(initial.x).toBeCloseTo(q1.x);\r\n expect(initial.y).toBeCloseTo(q1.y);\r\n expect(initial.z).toBeCloseTo(q1.z);\r\n expect(initial.w).toBeCloseTo(q1.w);\r\n\r\n const final = Quaternion.Slerp(q1, q2, 1);\r\n expect(final.x).toBeCloseTo(q2.x);\r\n expect(final.y).toBeCloseTo(q2.y);\r\n expect(final.z).toBeCloseTo(q2.z);\r\n expect(final.w).toBeCloseTo(q2.w);\r\n\r\n const middle = Quaternion.Slerp(q1, q2, 0.35);\r\n expect(middle.x).toBeCloseTo(0.27016);\r\n expect(middle.y).toBeCloseTo(0.46061);\r\n expect(middle.z).toBeCloseTo(0.25244);\r\n expect(middle.w).toBeCloseTo(0.7972);\r\n });\r\n\r\n it(\"Makes a quaterion from a rotation matrix\", () => {\r\n const x = Angle.FromRadians(1);\r\n const y = Angle.FromRadians(2);\r\n const z = Angle.FromRadians(3);\r\n const originalQ = Quaternion.FromEuler(x, y, z);\r\n\r\n const matrix = Matrix.Compose(Vector3.One(), originalQ, Vector3.Zero());\r\n\r\n const result = Quaternion.FromRotationMatrix(matrix);\r\n expect(result.x).toBeCloseTo(originalQ.x);\r\n expect(result.y).toBeCloseTo(originalQ.y);\r\n expect(result.z).toBeCloseTo(originalQ.z);\r\n expect(result.w).toBeCloseTo(originalQ.w);\r\n });\r\n\r\n it(\"Checks if two quaternions are close\", () => {\r\n const a = new Quaternion(1, 2, 3, 4);\r\n const bigger = new Quaternion(1.01, 2.01, 3.01, 4.01);\r\n const smaller = new Quaternion(0.99, 1.99, 2.99, 3.99);\r\n\r\n expect(Quaternion.Close(a, bigger, 0.0101)).toEqual(true);\r\n expect(Quaternion.Close(a, bigger, 0.0099)).toEqual(false);\r\n\r\n expect(Quaternion.Close(a, smaller, 0.0101)).toEqual(true);\r\n expect(Quaternion.Close(a, smaller, 0.0099)).toEqual(false);\r\n });\r\n\r\n it(\"Retuns the angle\", () => {\r\n const angle = Angle.FromDegrees(25);\r\n const axis = new Vector3(1, 2, 3);\r\n const q = Quaternion.FromAngleAxis(axis, angle);\r\n\r\n expect(Angle.Close(q.angle, angle)).toEqual(true);\r\n });\r\n\r\n it(\"Retuns the axis\", () => {\r\n const angle = Angle.FromDegrees(25);\r\n const axis = new Vector3(1, 2, 3);\r\n const q = Quaternion.FromAngleAxis(axis, angle);\r\n\r\n expect(Vector3.Close(q.axis, axis.unit)).toEqual(true);\r\n });\r\n\r\n it(\"Makes a quaternion into a rotation matrix\", () => {\r\n const x = Angle.FromRadians(1);\r\n const y = Angle.FromRadians(2);\r\n const z = Angle.FromRadians(3);\r\n const originalQ = Quaternion.FromEuler(x, y, z);\r\n\r\n const mat = Quaternion.ToRotationMatrix(originalQ);\r\n\r\n expect(Quaternion.Close(mat.rotation, originalQ)).toEqual(true);\r\n expect(Vector3.Close(mat.scale, Vector3.One())).toEqual(true);\r\n expect(Vector3.Close(mat.translation, Vector3.Zero())).toEqual(true);\r\n });\r\n\r\n it(\"Gets the Data Transfer Object\", () => {\r\n const quat = new Quaternion(1, 2, 3, 4);\r\n\r\n expect(quat.dto).toEqual({\r\n x: 1,\r\n y: 2,\r\n z: 3,\r\n w: 4,\r\n });\r\n });\r\n\r\n it(\"Makes a Quaterion from a DTO\", () => {\r\n const quat = Quaternion.FromDTO({\r\n x: 1,\r\n y: 2,\r\n z: 3,\r\n w: 4,\r\n });\r\n\r\n expect(quat.x).toEqual(1);\r\n expect(quat.y).toEqual(2);\r\n expect(quat.z).toEqual(3);\r\n expect(quat.w).toEqual(4);\r\n });\r\n\r\n it(\"Forms a quaternion from a forward direction\", () => {\r\n const dir = new Vector3(0, 0, 1);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.Identity();\r\n\r\n expect(q).toEqual(expectedQ);\r\n });\r\n\r\n it(\"Forms a quaternion from a right direction\", () => {\r\n const dir = new Vector3(1, 0, 0);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(90),\r\n Angle.FromRadians(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Forms a quaternion from a left direction\", () => {\r\n const dir = new Vector3(-1, 0, 0);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(-90),\r\n Angle.FromRadians(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Forms a quaternion from a behind direction\", () => {\r\n const dir = new Vector3(0, 0, -1);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromRadians(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Forms a quaternion from a 45 degree up direction\", () => {\r\n const dir = new Vector3(0, 1, 1);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(-45),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Forms a quaternion from a 45 degree up direction\", () => {\r\n const dir = new Vector3(1, 1, 0);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(90),\r\n Angle.FromDegrees(-45),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Returns an identity if the direction is zero\", () => {\r\n const dir = new Vector3(0, 0, 0);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.Identity();\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Works with an up vector\", () => {\r\n const dir = new Vector3(0, 1, 0);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(-90),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Works with an down vector\", () => {\r\n const dir = new Vector3(0, -1, 0);\r\n const q = Quaternion.FromDirectionVector(dir);\r\n\r\n const expectedQ = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(90),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(Quaternion.Close(q, expectedQ)).toEqual(true);\r\n });\r\n\r\n it(\"Gets the angle between two quaternions\", () => {\r\n const q1 = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(90),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n const q2 = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(80),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n const ang = Quaternion.AngleBetween(q1, q2);\r\n expect(ang.degrees).toBeCloseTo(10);\r\n });\r\n\r\n it(\"Keeps the angle between two quaternions less than 180\", () => {\r\n const q1 = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n const q2 = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(200),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n const ang = Quaternion.AngleBetween(q1, q2);\r\n expect(ang.degrees).toBeCloseTo(160);\r\n });\r\n\r\n it(\"Returns 0 if the quaterions are the same\", () => {\r\n const q1 = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n const ang = Quaternion.AngleBetween(q1, q1);\r\n expect(ang.degrees).toEqual(0);\r\n });\r\n});\r\n"]}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Rectangle_1 = require("./Rectangle");
4
- describe("Rectangle value object", () => {
5
- it("Creates and stores the values", () => {
6
- const rect = new Rectangle_1.Rectangle(1, 2, 3, 4);
7
- expect(rect.top).toEqual(1);
8
- expect(rect.right).toEqual(2);
9
- expect(rect.bottom).toEqual(3);
10
- expect(rect.left).toEqual(4);
11
- });
12
- it("Forms a dto", () => {
13
- const rect = new Rectangle_1.Rectangle(1, 2, 3, 4);
14
- expect(rect.dto.top).toEqual(1);
15
- expect(rect.dto.right).toEqual(2);
16
- expect(rect.dto.bottom).toEqual(3);
17
- expect(rect.dto.left).toEqual(4);
18
- });
19
- it("Forms a rectangle from the DTO", () => {
20
- const rect = Rectangle_1.Rectangle.FromDTO({
21
- top: 1,
22
- left: 2,
23
- bottom: 3,
24
- right: 4
25
- });
26
- expect(rect.top).toEqual(1);
27
- expect(rect.left).toEqual(2);
28
- expect(rect.bottom).toEqual(3);
29
- expect(rect.right).toEqual(4);
30
- });
31
- });
32
- //# sourceMappingURL=Rectangle.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Rectangle.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Rectangle.test.ts"],"names":[],"mappings":";;AAAA,2CAAsC;AAEtC,QAAQ,CAAC,wBAAwB,EAAE,GAAE,EAAE;IACtC,EAAE,CAAC,+BAA+B,EAAE,GAAE,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,qBAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,EAAE,GAAE,EAAE;QACrB,MAAM,IAAI,GAAG,IAAI,qBAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAE,EAAE;QACxC,MAAM,IAAI,GAAG,qBAAS,CAAC,OAAO,CAAC;YAC9B,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["import {Rectangle} from \"./Rectangle\";\r\n\r\ndescribe(\"Rectangle value object\", ()=>{\r\n\tit(\"Creates and stores the values\", ()=>{\r\n\t\tconst rect = new Rectangle(1,2,3,4);\r\n\t\texpect(rect.top).toEqual(1);\r\n\t\texpect(rect.right).toEqual(2);\r\n\t\texpect(rect.bottom).toEqual(3);\r\n\t\texpect(rect.left).toEqual(4);\r\n\t})\r\n\r\n\tit(\"Forms a dto\", ()=>{\r\n\t\tconst rect = new Rectangle(1,2,3,4);\r\n\t\texpect(rect.dto.top).toEqual(1);\r\n\t\texpect(rect.dto.right).toEqual(2);\r\n\t\texpect(rect.dto.bottom).toEqual(3);\r\n\t\texpect(rect.dto.left).toEqual(4);\r\n\t})\r\n\r\n\tit(\"Forms a rectangle from the DTO\", ()=>{\r\n\t\tconst rect = Rectangle.FromDTO({\r\n\t\t\ttop: 1,\r\n\t\t\tleft: 2,\r\n\t\t\tbottom: 3,\r\n\t\t\tright: 4\r\n\t\t});\r\n\t\texpect(rect.top).toEqual(1);\r\n\t\texpect(rect.left).toEqual(2);\r\n\t\texpect(rect.bottom).toEqual(3);\r\n\t\texpect(rect.right).toEqual(4);\r\n\t})\r\n})"]}
@@ -1,136 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const _1 = require(".");
4
- const Vector2_1 = require("./Vector2");
5
- describe("Vector 2 value object", () => {
6
- it("Creates a new vector", () => {
7
- const v = new Vector2_1.Vector2(2, 5);
8
- expect(v.x).toEqual(2);
9
- expect(v.y).toEqual(5);
10
- });
11
- it("Returns the magnitude", () => {
12
- expect(new Vector2_1.Vector2(0, 5).magnitued).toEqual(5);
13
- expect(new Vector2_1.Vector2(0, -5).magnitued).toEqual(5);
14
- expect(new Vector2_1.Vector2(5, 0).magnitued).toEqual(5);
15
- expect(new Vector2_1.Vector2(-5, 0).magnitued).toEqual(5);
16
- expect(new Vector2_1.Vector2(-1, -1).magnitued).toBeCloseTo(1.414);
17
- expect(new Vector2_1.Vector2(1, 1).magnitued).toBeCloseTo(1.414);
18
- });
19
- it("Returns the unit", () => {
20
- expect(new Vector2_1.Vector2(0, 5).unit).toEqual(new Vector2_1.Vector2(0, 1));
21
- expect(new Vector2_1.Vector2(0, -5).unit).toEqual(new Vector2_1.Vector2(0, -1));
22
- expect(new Vector2_1.Vector2(5, 0).unit).toEqual(new Vector2_1.Vector2(1, 0));
23
- expect(new Vector2_1.Vector2(-5, 0).unit).toEqual(new Vector2_1.Vector2(-1, 0));
24
- const unit1 = new Vector2_1.Vector2(5, 5).unit;
25
- expect(unit1.x).toBeCloseTo(0.707);
26
- expect(unit1.y).toBeCloseTo(0.707);
27
- });
28
- it("Retuns theta", () => {
29
- expect(new Vector2_1.Vector2(0, 5).theta).toBeCloseTo(90);
30
- expect(new Vector2_1.Vector2(0, -5).theta).toBeCloseTo(-90);
31
- expect(new Vector2_1.Vector2(5, 0).theta).toBeCloseTo(0);
32
- expect(new Vector2_1.Vector2(-5, 0).theta).toBeCloseTo(180);
33
- });
34
- test("Returns the vector as an array", () => {
35
- const v1 = new Vector2_1.Vector2(1, 2);
36
- expect(v1.array[0]).toEqual(1);
37
- expect(v1.array[1]).toEqual(2);
38
- });
39
- });
40
- describe("Vector 2 static actions", () => {
41
- it("Create a zero vector", () => {
42
- expect(Vector2_1.Vector2.Zero()).toEqual(new Vector2_1.Vector2(0, 0));
43
- });
44
- it("Create a one vector", () => {
45
- expect(Vector2_1.Vector2.One()).toEqual(new Vector2_1.Vector2(1, 1));
46
- });
47
- it("Check for vectors to be Equal", () => {
48
- const v1 = new Vector2_1.Vector2(1, 2);
49
- const v2 = new Vector2_1.Vector2(2, 3);
50
- const v3 = new Vector2_1.Vector2(1, 2);
51
- expect(Vector2_1.Vector2.Equal(v1, v2)).toEqual(false);
52
- expect(Vector2_1.Vector2.Equal(v1, v3)).toEqual(true);
53
- });
54
- it("Adds vectors", () => {
55
- const v1 = new Vector2_1.Vector2(1, 2);
56
- const v2 = new Vector2_1.Vector2(2, 3);
57
- const v3 = Vector2_1.Vector2.Add(v1, v2);
58
- expect(v3).toEqual(new Vector2_1.Vector2(3, 5));
59
- });
60
- it("Subtracts vectors", () => {
61
- const v1 = new Vector2_1.Vector2(1, 2);
62
- const v2 = new Vector2_1.Vector2(2, 3);
63
- const v3 = Vector2_1.Vector2.Subtract(v1, v2);
64
- expect(v3).toEqual(new Vector2_1.Vector2(-1, -1));
65
- });
66
- it("Checks to see if vectors are close using a default threshold", () => {
67
- const v1 = new Vector2_1.Vector2(1, 2);
68
- const v2 = new Vector2_1.Vector2(1.001, 2.001);
69
- const v3 = new Vector2_1.Vector2(1.1, 2.1);
70
- expect(Vector2_1.Vector2.Close(v1, v2)).toEqual(true);
71
- expect(Vector2_1.Vector2.Close(v1, v3)).toEqual(false);
72
- });
73
- it("Checks to see if vectors are close using a passed threshold", () => {
74
- const v1 = new Vector2_1.Vector2(1, 2);
75
- const v2 = new Vector2_1.Vector2(1.1, 2.1);
76
- const v3 = new Vector2_1.Vector2(2, 3);
77
- expect(Vector2_1.Vector2.Close(v1, v2, 1)).toEqual(true);
78
- expect(Vector2_1.Vector2.Close(v1, v3, 1)).toEqual(false);
79
- });
80
- it("Rotates to a new vector", () => {
81
- const v1 = new Vector2_1.Vector2(1, 2);
82
- const r1 = Vector2_1.Vector2.Rotate(v1, _1.Angle.FromDegrees(90));
83
- expect(r1.x).toBeCloseTo(-2);
84
- expect(r1.y).toBeCloseTo(1);
85
- const r2 = Vector2_1.Vector2.Rotate(v1, _1.Angle.FromDegrees(-90));
86
- expect(r2.x).toBeCloseTo(2);
87
- expect(r2.y).toBeCloseTo(-1);
88
- });
89
- it("Scales a vector", () => {
90
- const v1 = new Vector2_1.Vector2(1, 2);
91
- const scaled = Vector2_1.Vector2.Scale(v1, 3);
92
- expect(scaled).toEqual(new Vector2_1.Vector2(3, 6));
93
- });
94
- it("Make a new vector of length", () => {
95
- const v1 = new Vector2_1.Vector2(1, 1);
96
- const lengthened = Vector2_1.Vector2.NewVectorOfLength(v1, 3);
97
- expect(lengthened.x).toBeCloseTo(2.12);
98
- expect(lengthened.y).toBeCloseTo(2.12);
99
- });
100
- it("Calculates the dot between two vectors", () => {
101
- // https://onlinemschool.com/math/assistance/vector/multiply/
102
- const v1 = new Vector2_1.Vector2(1, 2);
103
- const v2 = new Vector2_1.Vector2(5, 6);
104
- const dot = Vector2_1.Vector2.Dot(v1, v2);
105
- expect(dot).toEqual(17);
106
- });
107
- it("Calculates the angle between two vectors", () => {
108
- // https://www.omnicalculator.com/math/angle-between-two-vectors
109
- const v1 = new Vector2_1.Vector2(1, 2);
110
- const v2 = new Vector2_1.Vector2(3, 4);
111
- const angle = Vector2_1.Vector2.AngleBetween(v1, v2);
112
- expect(angle.degrees).toBeCloseTo(10.305);
113
- });
114
- it("Calculates a Cross product", () => {
115
- const v1 = new Vector2_1.Vector2(1, 2);
116
- const v2 = new Vector2_1.Vector2(3, 4);
117
- const cross = Vector2_1.Vector2.Cross(v1, v2);
118
- expect(cross).toEqual(-2);
119
- });
120
- it("Gets the Data Transfer Object", () => {
121
- const vec = new Vector2_1.Vector2(1, 2);
122
- expect(vec.dto).toEqual({
123
- x: 1,
124
- y: 2
125
- });
126
- });
127
- it("Makes a vector from a DTO", () => {
128
- const vec = Vector2_1.Vector2.FromDTO({
129
- x: 1,
130
- y: 2
131
- });
132
- expect(vec.x).toEqual(1);
133
- expect(vec.y).toEqual(2);
134
- });
135
- });
136
- //# sourceMappingURL=Vector2.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Vector2.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Vector2.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle } from \".\";\r\nimport { Vector2 } from \"./Vector2\";\r\n\r\ndescribe(\"Vector 2 value object\", () => {\r\n it(\"Creates a new vector\", () => {\r\n const v = new Vector2(2, 5);\r\n expect(v.x).toEqual(2);\r\n expect(v.y).toEqual(5);\r\n });\r\n\r\n it(\"Returns the magnitude\", () => {\r\n expect(new Vector2(0, 5).magnitued).toEqual(5);\r\n expect(new Vector2(0, -5).magnitued).toEqual(5);\r\n expect(new Vector2(5, 0).magnitued).toEqual(5);\r\n expect(new Vector2(-5, 0).magnitued).toEqual(5);\r\n expect(new Vector2(-1, -1).magnitued).toBeCloseTo(1.414);\r\n expect(new Vector2(1, 1).magnitued).toBeCloseTo(1.414);\r\n });\r\n\r\n it(\"Returns the unit\", () => {\r\n expect(new Vector2(0, 5).unit).toEqual(new Vector2(0, 1));\r\n expect(new Vector2(0, -5).unit).toEqual(new Vector2(0, -1));\r\n expect(new Vector2(5, 0).unit).toEqual(new Vector2(1, 0));\r\n expect(new Vector2(-5, 0).unit).toEqual(new Vector2(-1, 0));\r\n\r\n const unit1 = new Vector2(5, 5).unit;\r\n expect(unit1.x).toBeCloseTo(0.707);\r\n expect(unit1.y).toBeCloseTo(0.707);\r\n });\r\n\r\n it(\"Retuns theta\", () => {\r\n expect(new Vector2(0, 5).theta).toBeCloseTo(90);\r\n expect(new Vector2(0, -5).theta).toBeCloseTo(-90);\r\n expect(new Vector2(5, 0).theta).toBeCloseTo(0);\r\n expect(new Vector2(-5, 0).theta).toBeCloseTo(180);\r\n });\r\n\r\n test(\"Returns the vector as an array\", () => {\r\n const v1 = new Vector2(1, 2);\r\n\r\n expect(v1.array[0]).toEqual(1);\r\n expect(v1.array[1]).toEqual(2);\r\n });\r\n});\r\n\r\ndescribe(\"Vector 2 static actions\", () => {\r\n it(\"Create a zero vector\", () => {\r\n expect(Vector2.Zero()).toEqual(new Vector2(0, 0));\r\n });\r\n\r\n it(\"Create a one vector\", () => {\r\n expect(Vector2.One()).toEqual(new Vector2(1, 1));\r\n });\r\n\r\n it(\"Check for vectors to be Equal\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(2, 3);\r\n const v3 = new Vector2(1, 2);\r\n\r\n expect(Vector2.Equal(v1, v2)).toEqual(false);\r\n expect(Vector2.Equal(v1, v3)).toEqual(true);\r\n });\r\n\r\n it(\"Adds vectors\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(2, 3);\r\n const v3 = Vector2.Add(v1, v2);\r\n\r\n expect(v3).toEqual(new Vector2(3, 5));\r\n });\r\n\r\n it(\"Subtracts vectors\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(2, 3);\r\n const v3 = Vector2.Subtract(v1, v2);\r\n\r\n expect(v3).toEqual(new Vector2(-1, -1));\r\n });\r\n\r\n it(\"Checks to see if vectors are close using a default threshold\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(1.001, 2.001);\r\n const v3 = new Vector2(1.1, 2.1);\r\n\r\n expect(Vector2.Close(v1, v2)).toEqual(true);\r\n expect(Vector2.Close(v1, v3)).toEqual(false);\r\n });\r\n\r\n it(\"Checks to see if vectors are close using a passed threshold\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(1.1, 2.1);\r\n const v3 = new Vector2(2, 3);\r\n\r\n expect(Vector2.Close(v1, v2, 1)).toEqual(true);\r\n expect(Vector2.Close(v1, v3, 1)).toEqual(false);\r\n });\r\n\r\n it(\"Rotates to a new vector\", () => {\r\n const v1 = new Vector2(1, 2);\r\n\r\n const r1 = Vector2.Rotate(v1, Angle.FromDegrees(90));\r\n expect(r1.x).toBeCloseTo(-2);\r\n expect(r1.y).toBeCloseTo(1);\r\n\r\n const r2 = Vector2.Rotate(v1, Angle.FromDegrees(-90));\r\n expect(r2.x).toBeCloseTo(2);\r\n expect(r2.y).toBeCloseTo(-1);\r\n });\r\n\r\n it(\"Scales a vector\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const scaled = Vector2.Scale(v1, 3);\r\n expect(scaled).toEqual(new Vector2(3, 6));\r\n });\r\n\r\n it(\"Make a new vector of length\", () => {\r\n const v1 = new Vector2(1, 1);\r\n const lengthened = Vector2.NewVectorOfLength(v1, 3);\r\n expect(lengthened.x).toBeCloseTo(2.12);\r\n expect(lengthened.y).toBeCloseTo(2.12);\r\n });\r\n\r\n it(\"Calculates the dot between two vectors\", () => {\r\n // https://onlinemschool.com/math/assistance/vector/multiply/\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(5, 6);\r\n\r\n const dot = Vector2.Dot(v1, v2);\r\n expect(dot).toEqual(17);\r\n });\r\n\r\n it(\"Calculates the angle between two vectors\", () => {\r\n // https://www.omnicalculator.com/math/angle-between-two-vectors\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(3, 4);\r\n\r\n const angle = Vector2.AngleBetween(v1, v2);\r\n expect(angle.degrees).toBeCloseTo(10.305);\r\n });\r\n\r\n it(\"Calculates a Cross product\", () => {\r\n const v1 = new Vector2(1, 2);\r\n const v2 = new Vector2(3, 4);\r\n\r\n const cross = Vector2.Cross(v1, v2);\r\n expect(cross).toEqual(-2);\r\n });\r\n\r\n it(\"Gets the Data Transfer Object\", () => {\r\n const vec = new Vector2(1, 2);\r\n\r\n expect(vec.dto).toEqual({\r\n x: 1,\r\n y: 2\r\n });\r\n });\r\n\r\n it(\"Makes a vector from a DTO\", () => {\r\n const vec = Vector2.FromDTO({\r\n x: 1,\r\n y: 2\r\n });\r\n\r\n expect(vec.x).toEqual(1);\r\n expect(vec.y).toEqual(2);\r\n });\r\n});\r\n"]}