@vived/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/README.md +29 -0
  2. package/babel.config.js +12 -0
  3. package/dist/AppObject/AppObject.d.ts +15 -0
  4. package/dist/AppObject/AppObject.d.ts.map +1 -0
  5. package/dist/AppObject/AppObject.js +54 -0
  6. package/dist/AppObject/AppObject.js.map +1 -0
  7. package/dist/AppObject/AppObject.test.d.ts +7 -0
  8. package/dist/AppObject/AppObject.test.d.ts.map +1 -0
  9. package/dist/AppObject/AppObject.test.js +110 -0
  10. package/dist/AppObject/AppObject.test.js.map +1 -0
  11. package/dist/AppObject/AppObjectComponent.d.ts +26 -0
  12. package/dist/AppObject/AppObjectComponent.d.ts.map +1 -0
  13. package/dist/AppObject/AppObjectComponent.js +78 -0
  14. package/dist/AppObject/AppObjectComponent.js.map +1 -0
  15. package/dist/AppObject/AppObjectComponent.test.d.ts +2 -0
  16. package/dist/AppObject/AppObjectComponent.test.d.ts.map +1 -0
  17. package/dist/AppObject/AppObjectComponent.test.js +130 -0
  18. package/dist/AppObject/AppObjectComponent.test.js.map +1 -0
  19. package/dist/AppObject/AppObjectController.d.ts +5 -0
  20. package/dist/AppObject/AppObjectController.d.ts.map +1 -0
  21. package/dist/AppObject/AppObjectController.js +8 -0
  22. package/dist/AppObject/AppObjectController.js.map +1 -0
  23. package/dist/AppObject/AppObjectEntity.d.ts +16 -0
  24. package/dist/AppObject/AppObjectEntity.d.ts.map +1 -0
  25. package/dist/AppObject/AppObjectEntity.js +34 -0
  26. package/dist/AppObject/AppObjectEntity.js.map +1 -0
  27. package/dist/AppObject/AppObjectEntity.test.d.ts +2 -0
  28. package/dist/AppObject/AppObjectEntity.test.d.ts.map +1 -0
  29. package/dist/AppObject/AppObjectEntity.test.js +106 -0
  30. package/dist/AppObject/AppObjectEntity.test.js.map +1 -0
  31. package/dist/AppObject/AppObjectEntityRepo.d.ts +16 -0
  32. package/dist/AppObject/AppObjectEntityRepo.d.ts.map +1 -0
  33. package/dist/AppObject/AppObjectEntityRepo.js +52 -0
  34. package/dist/AppObject/AppObjectEntityRepo.js.map +1 -0
  35. package/dist/AppObject/AppObjectEntityRepo.test.d.ts +2 -0
  36. package/dist/AppObject/AppObjectEntityRepo.test.d.ts.map +1 -0
  37. package/dist/AppObject/AppObjectEntityRepo.test.js +147 -0
  38. package/dist/AppObject/AppObjectEntityRepo.test.js.map +1 -0
  39. package/dist/AppObject/AppObjectPM.d.ts +13 -0
  40. package/dist/AppObject/AppObjectPM.d.ts.map +1 -0
  41. package/dist/AppObject/AppObjectPM.js +36 -0
  42. package/dist/AppObject/AppObjectPM.js.map +1 -0
  43. package/dist/AppObject/AppObjectPM.test.d.ts +2 -0
  44. package/dist/AppObject/AppObjectPM.test.d.ts.map +1 -0
  45. package/dist/AppObject/AppObjectPM.test.js +101 -0
  46. package/dist/AppObject/AppObjectPM.test.js.map +1 -0
  47. package/dist/AppObject/AppObjectRepo.d.ts +26 -0
  48. package/dist/AppObject/AppObjectRepo.d.ts.map +1 -0
  49. package/dist/AppObject/AppObjectRepo.js +128 -0
  50. package/dist/AppObject/AppObjectRepo.js.map +1 -0
  51. package/dist/AppObject/AppObjectRepo.test.d.ts +2 -0
  52. package/dist/AppObject/AppObjectRepo.test.d.ts.map +1 -0
  53. package/dist/AppObject/AppObjectRepo.test.js +211 -0
  54. package/dist/AppObject/AppObjectRepo.test.js.map +1 -0
  55. package/dist/AppObject/AppObjectUC.d.ts +5 -0
  56. package/dist/AppObject/AppObjectUC.d.ts.map +1 -0
  57. package/dist/AppObject/AppObjectUC.js +8 -0
  58. package/dist/AppObject/AppObjectUC.js.map +1 -0
  59. package/dist/AppObject/AppObjectView.d.ts +5 -0
  60. package/dist/AppObject/AppObjectView.d.ts.map +1 -0
  61. package/dist/AppObject/AppObjectView.js +8 -0
  62. package/dist/AppObject/AppObjectView.js.map +1 -0
  63. package/dist/AppObject/getSingletonComponent.d.ts +4 -0
  64. package/dist/AppObject/getSingletonComponent.d.ts.map +1 -0
  65. package/dist/AppObject/getSingletonComponent.js +4 -0
  66. package/dist/AppObject/getSingletonComponent.js.map +1 -0
  67. package/dist/AppObject/getSingletonComponent.test.d.ts +2 -0
  68. package/dist/AppObject/getSingletonComponent.test.d.ts.map +1 -0
  69. package/dist/AppObject/getSingletonComponent.test.js +11 -0
  70. package/dist/AppObject/getSingletonComponent.test.js.map +1 -0
  71. package/dist/AppObject/index.d.ts +11 -0
  72. package/dist/AppObject/index.d.ts.map +1 -0
  73. package/dist/AppObject/index.js +11 -0
  74. package/dist/AppObject/index.js.map +1 -0
  75. package/dist/AppObject/printAppObjectDetails.d.ts +3 -0
  76. package/dist/AppObject/printAppObjectDetails.d.ts.map +1 -0
  77. package/dist/AppObject/printAppObjectDetails.js +15 -0
  78. package/dist/AppObject/printAppObjectDetails.js.map +1 -0
  79. package/dist/Entities/MemoizedAngle.d.ts +10 -0
  80. package/dist/Entities/MemoizedAngle.d.ts.map +1 -0
  81. package/dist/Entities/MemoizedAngle.js +19 -0
  82. package/dist/Entities/MemoizedAngle.js.map +1 -0
  83. package/dist/Entities/MemoizedAngle.test.d.ts +2 -0
  84. package/dist/Entities/MemoizedAngle.test.d.ts.map +1 -0
  85. package/dist/Entities/MemoizedAngle.test.js +28 -0
  86. package/dist/Entities/MemoizedAngle.test.js.map +1 -0
  87. package/dist/Entities/MemoizedBoolean.d.ts +9 -0
  88. package/dist/Entities/MemoizedBoolean.d.ts.map +1 -0
  89. package/dist/Entities/MemoizedBoolean.js +19 -0
  90. package/dist/Entities/MemoizedBoolean.js.map +1 -0
  91. package/dist/Entities/MemoizedBoolean.test.d.ts +2 -0
  92. package/dist/Entities/MemoizedBoolean.test.d.ts.map +1 -0
  93. package/dist/Entities/MemoizedBoolean.test.js +32 -0
  94. package/dist/Entities/MemoizedBoolean.test.js.map +1 -0
  95. package/dist/Entities/MemoizedColor.d.ts +10 -0
  96. package/dist/Entities/MemoizedColor.d.ts.map +1 -0
  97. package/dist/Entities/MemoizedColor.js +20 -0
  98. package/dist/Entities/MemoizedColor.js.map +1 -0
  99. package/dist/Entities/MemoizedColor.test.d.ts +2 -0
  100. package/dist/Entities/MemoizedColor.test.d.ts.map +1 -0
  101. package/dist/Entities/MemoizedColor.test.js +30 -0
  102. package/dist/Entities/MemoizedColor.test.js.map +1 -0
  103. package/dist/Entities/MemoizedNumber.d.ts +9 -0
  104. package/dist/Entities/MemoizedNumber.d.ts.map +1 -0
  105. package/dist/Entities/MemoizedNumber.js +19 -0
  106. package/dist/Entities/MemoizedNumber.js.map +1 -0
  107. package/dist/Entities/MemoizedNumber.test.d.ts +2 -0
  108. package/dist/Entities/MemoizedNumber.test.d.ts.map +1 -0
  109. package/dist/Entities/MemoizedNumber.test.js +27 -0
  110. package/dist/Entities/MemoizedNumber.test.js.map +1 -0
  111. package/dist/Entities/MemoizedQuaternion.d.ts +10 -0
  112. package/dist/Entities/MemoizedQuaternion.d.ts.map +1 -0
  113. package/dist/Entities/MemoizedQuaternion.js +20 -0
  114. package/dist/Entities/MemoizedQuaternion.js.map +1 -0
  115. package/dist/Entities/MemoizedQuaternion.test.d.ts +2 -0
  116. package/dist/Entities/MemoizedQuaternion.test.d.ts.map +1 -0
  117. package/dist/Entities/MemoizedQuaternion.test.js +30 -0
  118. package/dist/Entities/MemoizedQuaternion.test.js.map +1 -0
  119. package/dist/Entities/MemoizedString.d.ts +9 -0
  120. package/dist/Entities/MemoizedString.d.ts.map +1 -0
  121. package/dist/Entities/MemoizedString.js +19 -0
  122. package/dist/Entities/MemoizedString.js.map +1 -0
  123. package/dist/Entities/MemoizedString.test.d.ts +2 -0
  124. package/dist/Entities/MemoizedString.test.d.ts.map +1 -0
  125. package/dist/Entities/MemoizedString.test.js +27 -0
  126. package/dist/Entities/MemoizedString.test.js.map +1 -0
  127. package/dist/Entities/MemoizedVector2.d.ts +10 -0
  128. package/dist/Entities/MemoizedVector2.d.ts.map +1 -0
  129. package/dist/Entities/MemoizedVector2.js +20 -0
  130. package/dist/Entities/MemoizedVector2.js.map +1 -0
  131. package/dist/Entities/MemoizedVector2.test.d.ts +2 -0
  132. package/dist/Entities/MemoizedVector2.test.d.ts.map +1 -0
  133. package/dist/Entities/MemoizedVector2.test.js +30 -0
  134. package/dist/Entities/MemoizedVector2.test.js.map +1 -0
  135. package/dist/Entities/MemoizedVector3.d.ts +10 -0
  136. package/dist/Entities/MemoizedVector3.d.ts.map +1 -0
  137. package/dist/Entities/MemoizedVector3.js +20 -0
  138. package/dist/Entities/MemoizedVector3.js.map +1 -0
  139. package/dist/Entities/MemoizedVector3.test.d.ts +2 -0
  140. package/dist/Entities/MemoizedVector3.test.d.ts.map +1 -0
  141. package/dist/Entities/MemoizedVector3.test.js +30 -0
  142. package/dist/Entities/MemoizedVector3.test.js.map +1 -0
  143. package/dist/Entities/ObservableEntity.d.ts +8 -0
  144. package/dist/Entities/ObservableEntity.d.ts.map +1 -0
  145. package/dist/Entities/ObservableEntity.js +16 -0
  146. package/dist/Entities/ObservableEntity.js.map +1 -0
  147. package/dist/Entities/ObservableEntity.test.d.ts +2 -0
  148. package/dist/Entities/ObservableEntity.test.d.ts.map +1 -0
  149. package/dist/Entities/ObservableEntity.test.js +23 -0
  150. package/dist/Entities/ObservableEntity.test.js.map +1 -0
  151. package/dist/Entities/ObserverList.d.ts +8 -0
  152. package/dist/Entities/ObserverList.d.ts.map +1 -0
  153. package/dist/Entities/ObserverList.js +23 -0
  154. package/dist/Entities/ObserverList.js.map +1 -0
  155. package/dist/Entities/ObserverList.test.d.ts +2 -0
  156. package/dist/Entities/ObserverList.test.d.ts.map +1 -0
  157. package/dist/Entities/ObserverList.test.js +42 -0
  158. package/dist/Entities/ObserverList.test.js.map +1 -0
  159. package/dist/Entities/index.d.ts +11 -0
  160. package/dist/Entities/index.d.ts.map +1 -0
  161. package/dist/Entities/index.js +11 -0
  162. package/dist/Entities/index.js.map +1 -0
  163. package/dist/Types/AppBoundary.d.ts +11 -0
  164. package/dist/Types/AppBoundary.d.ts.map +1 -0
  165. package/dist/Types/AppBoundary.js +2 -0
  166. package/dist/Types/AppBoundary.js.map +1 -0
  167. package/dist/Types/EaseFn.d.ts +2 -0
  168. package/dist/Types/EaseFn.d.ts.map +1 -0
  169. package/dist/Types/EaseFn.js +2 -0
  170. package/dist/Types/EaseFn.js.map +1 -0
  171. package/dist/Types/PmAdapter.d.ts +7 -0
  172. package/dist/Types/PmAdapter.d.ts.map +1 -0
  173. package/dist/Types/PmAdapter.js +2 -0
  174. package/dist/Types/PmAdapter.js.map +1 -0
  175. package/dist/Types/SingletonPmAdapter.d.ts +7 -0
  176. package/dist/Types/SingletonPmAdapter.d.ts.map +1 -0
  177. package/dist/Types/SingletonPmAdapter.js +2 -0
  178. package/dist/Types/SingletonPmAdapter.js.map +1 -0
  179. package/dist/Types/index.d.ts +5 -0
  180. package/dist/Types/index.d.ts.map +1 -0
  181. package/dist/Types/index.js +5 -0
  182. package/dist/Types/index.js.map +1 -0
  183. package/dist/ValueObjects/Angle.d.ts +27 -0
  184. package/dist/ValueObjects/Angle.d.ts.map +1 -0
  185. package/dist/ValueObjects/Angle.js +43 -0
  186. package/dist/ValueObjects/Angle.js.map +1 -0
  187. package/dist/ValueObjects/Angle.test.d.ts +2 -0
  188. package/dist/ValueObjects/Angle.test.d.ts.map +1 -0
  189. package/dist/ValueObjects/Angle.test.js +26 -0
  190. package/dist/ValueObjects/Angle.test.js.map +1 -0
  191. package/dist/ValueObjects/Color.d.ts +83 -0
  192. package/dist/ValueObjects/Color.d.ts.map +1 -0
  193. package/dist/ValueObjects/Color.js +855 -0
  194. package/dist/ValueObjects/Color.js.map +1 -0
  195. package/dist/ValueObjects/Color.test.d.ts +2 -0
  196. package/dist/ValueObjects/Color.test.d.ts.map +1 -0
  197. package/dist/ValueObjects/Color.test.js +145 -0
  198. package/dist/ValueObjects/Color.test.js.map +1 -0
  199. package/dist/ValueObjects/LineSegment2D.d.ts +12 -0
  200. package/dist/ValueObjects/LineSegment2D.d.ts.map +1 -0
  201. package/dist/ValueObjects/LineSegment2D.js +68 -0
  202. package/dist/ValueObjects/LineSegment2D.js.map +1 -0
  203. package/dist/ValueObjects/LineSegment2D.test.d.ts +2 -0
  204. package/dist/ValueObjects/LineSegment2D.test.d.ts.map +1 -0
  205. package/dist/ValueObjects/LineSegment2D.test.js +100 -0
  206. package/dist/ValueObjects/LineSegment2D.test.js.map +1 -0
  207. package/dist/ValueObjects/Matrix.d.ts +124 -0
  208. package/dist/ValueObjects/Matrix.d.ts.map +1 -0
  209. package/dist/ValueObjects/Matrix.js +462 -0
  210. package/dist/ValueObjects/Matrix.js.map +1 -0
  211. package/dist/ValueObjects/Matrix.test.d.ts +2 -0
  212. package/dist/ValueObjects/Matrix.test.d.ts.map +1 -0
  213. package/dist/ValueObjects/Matrix.test.js +383 -0
  214. package/dist/ValueObjects/Matrix.test.js.map +1 -0
  215. package/dist/ValueObjects/ParametricLine.d.ts +31 -0
  216. package/dist/ValueObjects/ParametricLine.d.ts.map +1 -0
  217. package/dist/ValueObjects/ParametricLine.js +73 -0
  218. package/dist/ValueObjects/ParametricLine.js.map +1 -0
  219. package/dist/ValueObjects/ParametricLine.test.d.ts +2 -0
  220. package/dist/ValueObjects/ParametricLine.test.d.ts.map +1 -0
  221. package/dist/ValueObjects/ParametricLine.test.js +124 -0
  222. package/dist/ValueObjects/ParametricLine.test.js.map +1 -0
  223. package/dist/ValueObjects/ParametricPlane.d.ts +21 -0
  224. package/dist/ValueObjects/ParametricPlane.d.ts.map +1 -0
  225. package/dist/ValueObjects/ParametricPlane.js +61 -0
  226. package/dist/ValueObjects/ParametricPlane.js.map +1 -0
  227. package/dist/ValueObjects/ParametricPlane.test.d.ts +2 -0
  228. package/dist/ValueObjects/ParametricPlane.test.d.ts.map +1 -0
  229. package/dist/ValueObjects/ParametricPlane.test.js +99 -0
  230. package/dist/ValueObjects/ParametricPlane.test.js.map +1 -0
  231. package/dist/ValueObjects/Quaternion.d.ts +113 -0
  232. package/dist/ValueObjects/Quaternion.d.ts.map +1 -0
  233. package/dist/ValueObjects/Quaternion.js +286 -0
  234. package/dist/ValueObjects/Quaternion.js.map +1 -0
  235. package/dist/ValueObjects/Quaternion.test.d.ts +2 -0
  236. package/dist/ValueObjects/Quaternion.test.d.ts.map +1 -0
  237. package/dist/ValueObjects/Quaternion.test.js +238 -0
  238. package/dist/ValueObjects/Quaternion.test.js.map +1 -0
  239. package/dist/ValueObjects/Rectangle.d.ts +16 -0
  240. package/dist/ValueObjects/Rectangle.d.ts.map +1 -0
  241. package/dist/ValueObjects/Rectangle.js +20 -0
  242. package/dist/ValueObjects/Rectangle.js.map +1 -0
  243. package/dist/ValueObjects/Rectangle.test.d.ts +2 -0
  244. package/dist/ValueObjects/Rectangle.test.d.ts.map +1 -0
  245. package/dist/ValueObjects/Rectangle.test.js +30 -0
  246. package/dist/ValueObjects/Rectangle.test.js.map +1 -0
  247. package/dist/ValueObjects/Vector2.d.ts +121 -0
  248. package/dist/ValueObjects/Vector2.d.ts.map +1 -0
  249. package/dist/ValueObjects/Vector2.js +180 -0
  250. package/dist/ValueObjects/Vector2.js.map +1 -0
  251. package/dist/ValueObjects/Vector2.test.d.ts +2 -0
  252. package/dist/ValueObjects/Vector2.test.d.ts.map +1 -0
  253. package/dist/ValueObjects/Vector2.test.js +134 -0
  254. package/dist/ValueObjects/Vector2.test.js.map +1 -0
  255. package/dist/ValueObjects/Vector3.d.ts +150 -0
  256. package/dist/ValueObjects/Vector3.d.ts.map +1 -0
  257. package/dist/ValueObjects/Vector3.js +227 -0
  258. package/dist/ValueObjects/Vector3.js.map +1 -0
  259. package/dist/ValueObjects/Vector3.test.d.ts +2 -0
  260. package/dist/ValueObjects/Vector3.test.d.ts.map +1 -0
  261. package/dist/ValueObjects/Vector3.test.js +186 -0
  262. package/dist/ValueObjects/Vector3.test.js.map +1 -0
  263. package/dist/ValueObjects/index.d.ts +11 -0
  264. package/dist/ValueObjects/index.d.ts.map +1 -0
  265. package/dist/ValueObjects/index.js +11 -0
  266. package/dist/ValueObjects/index.js.map +1 -0
  267. package/dist/index.d.ts +5 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +5 -0
  270. package/dist/index.js.map +1 -0
  271. package/jestconfig.json +10 -0
  272. package/package.json +41 -0
  273. package/src/AppObject/AppObject.test.ts +158 -0
  274. package/src/AppObject/AppObject.ts +83 -0
  275. package/src/AppObject/AppObjectComponent.test.ts +219 -0
  276. package/src/AppObject/AppObjectComponent.ts +100 -0
  277. package/src/AppObject/AppObjectController.ts +8 -0
  278. package/src/AppObject/AppObjectEntity.test.ts +151 -0
  279. package/src/AppObject/AppObjectEntity.ts +45 -0
  280. package/src/AppObject/AppObjectEntityRepo.test.ts +211 -0
  281. package/src/AppObject/AppObjectEntityRepo.ts +61 -0
  282. package/src/AppObject/AppObjectPM.test.ts +152 -0
  283. package/src/AppObject/AppObjectPM.ts +43 -0
  284. package/src/AppObject/AppObjectRepo.test.ts +317 -0
  285. package/src/AppObject/AppObjectRepo.ts +203 -0
  286. package/src/AppObject/AppObjectUC.ts +5 -0
  287. package/src/AppObject/AppObjectView.ts +5 -0
  288. package/src/AppObject/getSingletonComponent.test.ts +17 -0
  289. package/src/AppObject/getSingletonComponent.ts +9 -0
  290. package/src/AppObject/index.ts +10 -0
  291. package/src/AppObject/printAppObjectDetails.ts +17 -0
  292. package/src/Entities/MemoizedAngle.test.ts +38 -0
  293. package/src/Entities/MemoizedAngle.ts +25 -0
  294. package/src/Entities/MemoizedBoolean.test.ts +45 -0
  295. package/src/Entities/MemoizedBoolean.ts +23 -0
  296. package/src/Entities/MemoizedColor.test.ts +39 -0
  297. package/src/Entities/MemoizedColor.ts +27 -0
  298. package/src/Entities/MemoizedNumber.test.ts +37 -0
  299. package/src/Entities/MemoizedNumber.ts +23 -0
  300. package/src/Entities/MemoizedQuaternion.test.ts +39 -0
  301. package/src/Entities/MemoizedQuaternion.ts +27 -0
  302. package/src/Entities/MemoizedString.test.ts +37 -0
  303. package/src/Entities/MemoizedString.ts +23 -0
  304. package/src/Entities/MemoizedVector2.test.ts +39 -0
  305. package/src/Entities/MemoizedVector2.ts +27 -0
  306. package/src/Entities/MemoizedVector3.test.ts +39 -0
  307. package/src/Entities/MemoizedVector3.ts +27 -0
  308. package/src/Entities/ObservableEntity.test.ts +28 -0
  309. package/src/Entities/ObservableEntity.ts +17 -0
  310. package/src/Entities/ObserverList.test.ts +61 -0
  311. package/src/Entities/ObserverList.ts +24 -0
  312. package/src/Entities/index.ts +10 -0
  313. package/src/Types/AppBoundary.ts +13 -0
  314. package/src/Types/EaseFn.ts +1 -0
  315. package/src/Types/PmAdapter.ts +15 -0
  316. package/src/Types/SingletonPmAdapter.ts +7 -0
  317. package/src/Types/index.ts +4 -0
  318. package/src/ValueObjects/Angle.test.ts +30 -0
  319. package/src/ValueObjects/Angle.ts +47 -0
  320. package/src/ValueObjects/Color.test.ts +181 -0
  321. package/src/ValueObjects/Color.ts +891 -0
  322. package/src/ValueObjects/LineSegment2D.test.ts +144 -0
  323. package/src/ValueObjects/LineSegment2D.ts +93 -0
  324. package/src/ValueObjects/Matrix.test.ts +498 -0
  325. package/src/ValueObjects/Matrix.ts +567 -0
  326. package/src/ValueObjects/ParametricLine.test.ts +155 -0
  327. package/src/ValueObjects/ParametricLine.ts +114 -0
  328. package/src/ValueObjects/ParametricPlane.test.ts +122 -0
  329. package/src/ValueObjects/ParametricPlane.ts +82 -0
  330. package/src/ValueObjects/Quaternion.test.ts +356 -0
  331. package/src/ValueObjects/Quaternion.ts +353 -0
  332. package/src/ValueObjects/Rectangle.test.ts +32 -0
  333. package/src/ValueObjects/Rectangle.ts +33 -0
  334. package/src/ValueObjects/Vector2.test.ts +167 -0
  335. package/src/ValueObjects/Vector2.ts +209 -0
  336. package/src/ValueObjects/Vector3.test.ts +228 -0
  337. package/src/ValueObjects/Vector3.ts +269 -0
  338. package/src/ValueObjects/index.ts +14 -0
  339. package/src/index.ts +4 -0
  340. package/tsconfig.json +18 -0
  341. package/tslint.json +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParametricLine.test.js","sourceRoot":"","sources":["../../src/ValueObjects/ParametricLine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ParametricLine } from "./ParametricLine";
2
+ import { Vector3 } from "../ValueObjects/Vector3";
3
+ export interface PlaneParameters {
4
+ a: number;
5
+ b: number;
6
+ c: number;
7
+ d: number;
8
+ }
9
+ export declare class ParametricPlane {
10
+ private point;
11
+ private normal;
12
+ static FromPointNormal(point: Vector3, normal: Vector3): ParametricPlane;
13
+ static FromThreePoints(A: Vector3, B: Vector3, C: Vector3): ParametricPlane;
14
+ static XY(): ParametricPlane;
15
+ static ZX(): ParametricPlane;
16
+ static YZ(): ParametricPlane;
17
+ GetParameters(): PlaneParameters;
18
+ intersectLine(line: ParametricLine): Vector3 | undefined;
19
+ constructor(point: Vector3, normal: Vector3);
20
+ }
21
+ //# sourceMappingURL=ParametricPlane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParametricPlane.d.ts","sourceRoot":"","sources":["../../src/ValueObjects/ParametricPlane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIlD,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,eAAe;IAoEd,OAAO,CAAC,KAAK;IAAW,OAAO,CAAC,MAAM;IAnElD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,eAAe;IAIxE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,eAAe;IAS3E,MAAM,CAAC,EAAE,IAAI,eAAe;IAM5B,MAAM,CAAC,EAAE,IAAI,eAAe;IAM5B,MAAM,CAAC,EAAE,IAAI,eAAe;IAM5B,aAAa,IAAI,eAAe;IAkBzB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS;gBAkB3C,KAAK,EAAE,OAAO,EAAU,MAAM,EAAE,OAAO;CAC5D"}
@@ -0,0 +1,61 @@
1
+ import { ParametricLine } from "./ParametricLine";
2
+ import { Vector3 } from "../ValueObjects/Vector3";
3
+ export class ParametricPlane {
4
+ static FromPointNormal(point, normal) {
5
+ return new ParametricPlane(point, normal);
6
+ }
7
+ static FromThreePoints(A, B, C) {
8
+ const point = A;
9
+ const AB = Vector3.Subtract(B, A);
10
+ const AC = Vector3.Subtract(C, A);
11
+ const normal = Vector3.Cross(AB, AC);
12
+ return new ParametricPlane(point, normal);
13
+ }
14
+ static XY() {
15
+ const p = Vector3.Zero();
16
+ const n = new Vector3(0, 0, 1);
17
+ return new ParametricPlane(p, n);
18
+ }
19
+ static ZX() {
20
+ const p = Vector3.Zero();
21
+ const n = new Vector3(0, 1, 0);
22
+ return new ParametricPlane(p, n);
23
+ }
24
+ static YZ() {
25
+ const p = Vector3.Zero();
26
+ const n = new Vector3(1, 0, 0);
27
+ return new ParametricPlane(p, n);
28
+ }
29
+ GetParameters() {
30
+ const a = this.normal.x;
31
+ const b = this.normal.y;
32
+ const c = this.normal.z;
33
+ let d = Vector3.Dot(this.point, this.normal);
34
+ if (d !== 0) {
35
+ d *= -1;
36
+ }
37
+ return {
38
+ a,
39
+ b,
40
+ c,
41
+ d,
42
+ };
43
+ }
44
+ intersectLine(line) {
45
+ const { x0, y0, z0, a, b, c } = line;
46
+ const { a: A, b: B, c: C, d: D } = this.GetParameters();
47
+ const tNumerator = -(A * x0 + B * y0 + C * z0 + D);
48
+ const tDenominator = A * a + B * b + C * c;
49
+ if (tDenominator === 0) {
50
+ return undefined;
51
+ }
52
+ const t = tNumerator / tDenominator;
53
+ const intersect = ParametricLine.GetPointAtDistance(line, t);
54
+ return intersect;
55
+ }
56
+ constructor(point, normal) {
57
+ this.point = point;
58
+ this.normal = normal;
59
+ }
60
+ }
61
+ //# sourceMappingURL=ParametricPlane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParametricPlane.js","sourceRoot":"","sources":["../../src/ValueObjects/ParametricPlane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ParametricPlane.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParametricPlane.test.d.ts","sourceRoot":"","sources":["../../src/ValueObjects/ParametricPlane.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { ParametricLine } from "./ParametricLine";
2
+ import { ParametricPlane } from "./ParametricPlane";
3
+ import { Vector3 } from "../ValueObjects";
4
+ test("Setting from point and normal", () => {
5
+ const point = new Vector3(1, 2, 3);
6
+ const normal = new Vector3(4, 5, 6);
7
+ const plane = ParametricPlane.FromPointNormal(point, normal);
8
+ const parameters = plane.GetParameters();
9
+ const dot = Vector3.Dot(point, normal);
10
+ expect(parameters.a).toEqual(normal.x);
11
+ expect(parameters.b).toEqual(normal.y);
12
+ expect(parameters.c).toEqual(normal.z);
13
+ expect(parameters.d).toEqual(-dot);
14
+ });
15
+ test("From three points", () => {
16
+ // From https://keisan.casio.com/exec/system/1223596129
17
+ const A = new Vector3(1, 2, -2);
18
+ const B = new Vector3(3, -2, 1);
19
+ const C = new Vector3(5, 1, -4);
20
+ const plane = ParametricPlane.FromThreePoints(A, B, C);
21
+ const parameters = plane.GetParameters();
22
+ expect(parameters.a).toEqual(11);
23
+ expect(parameters.b).toEqual(16);
24
+ expect(parameters.c).toEqual(14);
25
+ expect(parameters.d).toEqual(-15);
26
+ });
27
+ test("Intersection", () => {
28
+ const point = new Vector3(1, 1, 1);
29
+ const dir = new Vector3(1, 0, 0);
30
+ const line = ParametricLine.FromPointDirection(point, dir);
31
+ const plane1 = new Vector3(-1, 0, 0);
32
+ const plane2 = new Vector3(-1, 1, 0);
33
+ const plane3 = new Vector3(-1, 0, 1);
34
+ const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3);
35
+ const intersect = plane.intersectLine(line);
36
+ expect(intersect?.x).toBeCloseTo(-1);
37
+ expect(intersect?.y).toBeCloseTo(1);
38
+ expect(intersect?.z).toBeCloseTo(1);
39
+ });
40
+ test("Intersection", () => {
41
+ // From http://www.ambrsoft.com/TrigoCalc/Plan3D/PlaneLineIntersection_.htm
42
+ const line1 = new Vector3(4, 1, 1);
43
+ const line2 = new Vector3(8, -2, -2);
44
+ const line = ParametricLine.FromTwoPoint(line1, line2);
45
+ const plane1 = new Vector3(-1, 2, 4);
46
+ const plane2 = new Vector3(2, 1, 3);
47
+ const plane3 = new Vector3(1, 3, 2);
48
+ const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3);
49
+ const intersect = plane.intersectLine(line);
50
+ expect(intersect?.x).toBeCloseTo(2.93);
51
+ expect(intersect?.y).toBeCloseTo(1.8);
52
+ expect(intersect?.z).toBeCloseTo(1.8);
53
+ });
54
+ test("If parallel, intersect should come back undefined", () => {
55
+ const line1 = new Vector3(0, 1, 0);
56
+ const line2 = new Vector3(0, -1, 0);
57
+ const line = ParametricLine.FromTwoPoint(line1, line2); // Vertical line going through the origin
58
+ const plane1 = new Vector3(0, 0, 0);
59
+ const plane2 = new Vector3(0, 1, 0);
60
+ const plane3 = new Vector3(0, 0, 1);
61
+ const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3); // y-z plane
62
+ const intersect = plane.intersectLine(line);
63
+ expect(intersect).toBeUndefined();
64
+ });
65
+ test("XY Plane", () => {
66
+ const plane = ParametricPlane.XY();
67
+ expect(plane.GetParameters()).toEqual({
68
+ a: 0,
69
+ b: 0,
70
+ c: 1,
71
+ d: 0,
72
+ });
73
+ });
74
+ test("ZX Plane", () => {
75
+ const plane = ParametricPlane.ZX();
76
+ expect(plane.GetParameters()).toEqual({
77
+ a: 0,
78
+ b: 1,
79
+ c: 0,
80
+ d: 0,
81
+ });
82
+ });
83
+ test("YZ Plane", () => {
84
+ const plane = ParametricPlane.YZ();
85
+ expect(plane.GetParameters()).toEqual({
86
+ a: 1,
87
+ b: 0,
88
+ c: 0,
89
+ d: 0,
90
+ });
91
+ });
92
+ test("Check for equality", () => {
93
+ const point = new Vector3(1, 2, 3);
94
+ const normal = new Vector3(4, 5, 6);
95
+ const plane1 = ParametricPlane.FromPointNormal(point, normal);
96
+ const plane2 = ParametricPlane.FromPointNormal(point, normal);
97
+ expect(plane1).toEqual(plane2);
98
+ });
99
+ //# sourceMappingURL=ParametricPlane.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParametricPlane.test.js","sourceRoot":"","sources":["../../src/ValueObjects/ParametricPlane.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { Angle } from "./Angle";
2
+ import { Matrix } from "./Matrix";
3
+ import { Vector3 } from "./Vector3";
4
+ export interface QuaternionDTO {
5
+ x: number;
6
+ y: number;
7
+ z: number;
8
+ w: number;
9
+ }
10
+ export declare class Quaternion {
11
+ /**
12
+ * Checks to see if two Quaternions are equal
13
+ * @param a Quaternion A
14
+ * @param b Quaternion B
15
+ * @returns True if they are equal, otherwise false
16
+ */
17
+ static Equal(a: Quaternion, b: Quaternion): boolean;
18
+ /**
19
+ * Checks two quaternions to see if they are close
20
+ * @param a Quaterion A
21
+ * @param b Quaterion B
22
+ * @param threshold "Close" threshold. Defaults to 0.001
23
+ * @returns True if each of Quaterion's components are within the threshold of each other
24
+ */
25
+ static Close(a: Quaternion, b: Quaternion, threshold?: number): boolean;
26
+ /**
27
+ * Multiplies A*B
28
+ * @param a Quaterion A
29
+ * @param b Quaternion B
30
+ * @returns The result of A*B
31
+ */
32
+ static Multiply(a: Quaternion, b: Quaternion): Quaternion;
33
+ /**
34
+ * Creates a new Quaterion from an array of values
35
+ * @param values The four values of the Quaterion: [x,y,z,w]
36
+ * @returns A Quaterion
37
+ */
38
+ static FromArray(values: [number, number, number, number]): Quaternion;
39
+ /**
40
+ * Creates a Quaterion from a Data Transfer Object
41
+ * @param dto The Data Transfer Object
42
+ * @returns The Quaternion
43
+ */
44
+ static FromDTO(dto: QuaternionDTO): Quaternion;
45
+ /**
46
+ * Creates an Identity Quaternion
47
+ * @returns An Identity Quaternion
48
+ */
49
+ static Identity(): Quaternion;
50
+ /**
51
+ * Creates an quaterion about an axis for a given angle
52
+ * @param axis The rotation axis
53
+ * @param angle The rotation angle
54
+ * @returns The resulting Quaterion
55
+ */
56
+ static FromAngleAxis(axis: Vector3, angle: Angle): Quaternion;
57
+ static FromDirectionVector(direction: Vector3): Quaternion;
58
+ /**
59
+ * Froms up a Quaternion from the Yaw-Pitch-Roll (Tait-Bryan) convetion
60
+ * @param yaw defines the rotation around the y axis
61
+ * @param pitch defines the rotation around the x axis
62
+ * @param roll defines the rotation around the z axis
63
+ * @returns the resulting quaterion
64
+ */
65
+ static FromYawPitchRoll(yaw: Angle, pitch: Angle, roll: Angle): Quaternion;
66
+ /**
67
+ * Creates a Quaternion from three euler angles.
68
+ * @param x Rotation about the x axis
69
+ * @param y Rotation about the y axis
70
+ * @param z Rotation about the z axis
71
+ * @returns The Quaterion
72
+ */
73
+ static FromEuler(x: Angle, y: Angle, z: Angle): Quaternion;
74
+ /**
75
+ * Returns a new Quaternion that is an invert of A
76
+ * @param a The quaternion to invert
77
+ * @returns The inverted Quaternion
78
+ */
79
+ static Inverse(a: Quaternion): Quaternion;
80
+ static AngleBetween(a: Quaternion, b: Quaternion): Angle;
81
+ /**
82
+ * Spherically interpolates between two quaternions
83
+ * @param initial The initial quaternion
84
+ * @param final The final quaterion
85
+ * @param percent The percent along the slerp. 0 will return the initial quaterion and 1 will return the final quaterion
86
+ * @returns The interpolated quaterion
87
+ */
88
+ static Slerp(initial: Quaternion, final: Quaternion, percent: number): Quaternion;
89
+ /**
90
+ * Calculates a Quaternion from a rotation matrix
91
+ * @param rotationMatrix A normalized, non-scaled rotation matrix
92
+ * @returns The Quaterion
93
+ */
94
+ static FromRotationMatrix(rotationMatrix: Matrix): Quaternion;
95
+ static ToRotationMatrix(quat: Quaternion): Matrix;
96
+ /**
97
+ * Copy the quaternion to an array
98
+ * @returns an array populated with 4 elements from the quaternion coordinates
99
+ */
100
+ toArray(): [number, number, number, number];
101
+ get angle(): Angle;
102
+ get axis(): Vector3;
103
+ /**
104
+ * Get the quaternion as a Data Transfer Object
105
+ */
106
+ get dto(): QuaternionDTO;
107
+ readonly x: number;
108
+ readonly y: number;
109
+ readonly z: number;
110
+ readonly w: number;
111
+ constructor(x: number, y: number, z: number, w: number);
112
+ }
113
+ //# sourceMappingURL=Quaternion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../src/ValueObjects/Quaternion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,UAAU;IACrB;;;;;OAKG;WACW,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO;IAQ1D;;;;;;OAMG;WACW,KAAK,CACjB,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,SAAS,SAAQ,GAChB,OAAO;IAkBV;;;;;OAKG;WACW,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU;IAQhE;;;;OAIG;WACW,SAAS,CACrB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACvC,UAAU;IAIb;;;;OAIG;WACW,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU;IAIrD;;;OAGG;WACW,QAAQ,IAAI,UAAU;IAIpC;;;;;OAKG;WACW,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU;WAUtD,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,UAAU;IAkCjE;;;;;;OAMG;WACW,gBAAgB,CAC5B,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,GACV,UAAU;IAoBb;;;;;;OAMG;WACW,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK;IAIpD;;;;OAIG;WACW,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;WAIlC,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,KAAK;IAY/D;;;;;;OAMG;WACW,KAAK,CACjB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd,UAAU;IAiCb;;;;OAIG;WACW,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU;WAmDtD,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAIxD;;;OAGG;IACH,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAI3C,IAAI,KAAK,IAAI,KAAK,CAGjB;IAED,IAAI,IAAI,IAAI,OAAO,CAKlB;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,aAAa,CAEvB;IAED,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;gBAEP,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;CAMvD"}
@@ -0,0 +1,286 @@
1
+ import { Angle } from "./Angle";
2
+ import { Matrix } from "./Matrix";
3
+ import { Vector3 } from "./Vector3";
4
+ export class Quaternion {
5
+ /**
6
+ * Checks to see if two Quaternions are equal
7
+ * @param a Quaternion A
8
+ * @param b Quaternion B
9
+ * @returns True if they are equal, otherwise false
10
+ */
11
+ static Equal(a, b) {
12
+ if (a.x === b.x && a.y === b.y && a.z === b.z && a.w === b.w) {
13
+ return true;
14
+ }
15
+ else {
16
+ return false;
17
+ }
18
+ }
19
+ /**
20
+ * Checks two quaternions to see if they are close
21
+ * @param a Quaterion A
22
+ * @param b Quaterion B
23
+ * @param threshold "Close" threshold. Defaults to 0.001
24
+ * @returns True if each of Quaterion's components are within the threshold of each other
25
+ */
26
+ static Close(a, b, threshold = 0.001) {
27
+ const aArray = a.toArray();
28
+ const bArray = b.toArray();
29
+ let areClose = true;
30
+ for (let i = 0; i < 4; i++) {
31
+ let diff = aArray[i] - bArray[i];
32
+ if (diff < 0) {
33
+ diff = -diff;
34
+ }
35
+ if (diff > threshold) {
36
+ areClose = false;
37
+ break;
38
+ }
39
+ }
40
+ return areClose;
41
+ }
42
+ /**
43
+ * Multiplies A*B
44
+ * @param a Quaterion A
45
+ * @param b Quaternion B
46
+ * @returns The result of A*B
47
+ */
48
+ static Multiply(a, b) {
49
+ const x = a.x * b.w + a.y * b.z - a.z * b.y + a.w * b.x;
50
+ const y = -a.x * b.z + a.y * b.w + a.z * b.x + a.w * b.y;
51
+ const z = a.x * b.y - a.y * b.x + a.z * b.w + a.w * b.z;
52
+ const w = -a.x * b.x - a.y * b.y - a.z * b.z + a.w * b.w;
53
+ return Quaternion.FromArray([x, y, z, w]);
54
+ }
55
+ /**
56
+ * Creates a new Quaterion from an array of values
57
+ * @param values The four values of the Quaterion: [x,y,z,w]
58
+ * @returns A Quaterion
59
+ */
60
+ static FromArray(values) {
61
+ return new Quaternion(values[0], values[1], values[2], values[3]);
62
+ }
63
+ /**
64
+ * Creates a Quaterion from a Data Transfer Object
65
+ * @param dto The Data Transfer Object
66
+ * @returns The Quaternion
67
+ */
68
+ static FromDTO(dto) {
69
+ return new Quaternion(dto.x, dto.y, dto.z, dto.w);
70
+ }
71
+ /**
72
+ * Creates an Identity Quaternion
73
+ * @returns An Identity Quaternion
74
+ */
75
+ static Identity() {
76
+ return new Quaternion(0, 0, 0, 1);
77
+ }
78
+ /**
79
+ * Creates an quaterion about an axis for a given angle
80
+ * @param axis The rotation axis
81
+ * @param angle The rotation angle
82
+ * @returns The resulting Quaterion
83
+ */
84
+ static FromAngleAxis(axis, angle) {
85
+ const sin = Math.sin(angle.radians / 2);
86
+ const axisUnit = axis.unit;
87
+ const w = Math.cos(angle.radians / 2);
88
+ const x = axisUnit.x * sin;
89
+ const y = axisUnit.y * sin;
90
+ const z = axisUnit.z * sin;
91
+ return new Quaternion(x, y, z, w);
92
+ }
93
+ static FromDirectionVector(direction) {
94
+ if (direction.magnitude === 0) {
95
+ return Quaternion.Identity();
96
+ }
97
+ const dirUnit = direction.unit;
98
+ if (dirUnit.x === 0 && dirUnit.z === 0) {
99
+ if (dirUnit.y > 0) {
100
+ return Quaternion.FromYawPitchRoll(Angle.FromDegrees(0), Angle.FromDegrees(-90), Angle.FromDegrees(0));
101
+ }
102
+ else {
103
+ return Quaternion.FromYawPitchRoll(Angle.FromDegrees(0), Angle.FromDegrees(90), Angle.FromDegrees(0));
104
+ }
105
+ }
106
+ const yawRadians = -Math.atan2(dirUnit.z, dirUnit.x) + Math.PI / 2;
107
+ const len = Math.sqrt(dirUnit.x * dirUnit.x + dirUnit.z * dirUnit.z);
108
+ const pitchRadians = -Math.atan2(dirUnit.y, len);
109
+ const yaw = Angle.FromRadians(yawRadians);
110
+ const pitch = Angle.FromRadians(pitchRadians);
111
+ const roll = Angle.FromRadians(0);
112
+ return Quaternion.FromYawPitchRoll(yaw, pitch, roll);
113
+ }
114
+ /**
115
+ * Froms up a Quaternion from the Yaw-Pitch-Roll (Tait-Bryan) convetion
116
+ * @param yaw defines the rotation around the y axis
117
+ * @param pitch defines the rotation around the x axis
118
+ * @param roll defines the rotation around the z axis
119
+ * @returns the resulting quaterion
120
+ */
121
+ static FromYawPitchRoll(yaw, pitch, roll) {
122
+ const halfRoll = roll.radians * 0.5;
123
+ const halfPitch = pitch.radians * 0.5;
124
+ const halfYaw = yaw.radians * 0.5;
125
+ const sinRoll = Math.sin(halfRoll);
126
+ const cosRoll = Math.cos(halfRoll);
127
+ const sinPitch = Math.sin(halfPitch);
128
+ const cosPitch = Math.cos(halfPitch);
129
+ const sinYaw = Math.sin(halfYaw);
130
+ const cosYaw = Math.cos(halfYaw);
131
+ const x = cosYaw * sinPitch * cosRoll + sinYaw * cosPitch * sinRoll;
132
+ const y = sinYaw * cosPitch * cosRoll - cosYaw * sinPitch * sinRoll;
133
+ const z = cosYaw * cosPitch * sinRoll - sinYaw * sinPitch * cosRoll;
134
+ const w = cosYaw * cosPitch * cosRoll + sinYaw * sinPitch * sinRoll;
135
+ return new Quaternion(x, y, z, w);
136
+ }
137
+ /**
138
+ * Creates a Quaternion from three euler angles.
139
+ * @param x Rotation about the x axis
140
+ * @param y Rotation about the y axis
141
+ * @param z Rotation about the z axis
142
+ * @returns The Quaterion
143
+ */
144
+ static FromEuler(x, y, z) {
145
+ return this.FromYawPitchRoll(y, x, z);
146
+ }
147
+ /**
148
+ * Returns a new Quaternion that is an invert of A
149
+ * @param a The quaternion to invert
150
+ * @returns The inverted Quaternion
151
+ */
152
+ static Inverse(a) {
153
+ return new Quaternion(-a.x, -a.y, -a.z, a.w);
154
+ }
155
+ static AngleBetween(a, b) {
156
+ const aInv = this.Inverse(a);
157
+ const diffQ = this.Multiply(aInv, b);
158
+ const angDeg = diffQ.angle.degrees;
159
+ if (angDeg > 180) {
160
+ return Angle.FromDegrees(360 - angDeg);
161
+ }
162
+ else {
163
+ return diffQ.angle;
164
+ }
165
+ }
166
+ /**
167
+ * Spherically interpolates between two quaternions
168
+ * @param initial The initial quaternion
169
+ * @param final The final quaterion
170
+ * @param percent The percent along the slerp. 0 will return the initial quaterion and 1 will return the final quaterion
171
+ * @returns The interpolated quaterion
172
+ */
173
+ static Slerp(initial, final, percent) {
174
+ let A;
175
+ let B;
176
+ let C = initial.x * final.x +
177
+ initial.y * final.y +
178
+ initial.z * final.z +
179
+ initial.w * final.w;
180
+ let flip = false;
181
+ if (C < 0) {
182
+ flip = true;
183
+ C = -C;
184
+ }
185
+ if (C > 0.999999) {
186
+ B = 1 - percent;
187
+ A = flip ? -percent : percent;
188
+ }
189
+ else {
190
+ const D = Math.acos(C);
191
+ const E = 1.0 / Math.sin(D);
192
+ B = Math.sin((1.0 - percent) * D) * E;
193
+ A = flip ? -Math.sin(percent * D) * E : Math.sin(percent * D) * E;
194
+ }
195
+ const x = B * initial.x + A * final.x;
196
+ const y = B * initial.y + A * final.y;
197
+ const z = B * initial.z + A * final.z;
198
+ const w = B * initial.w + A * final.w;
199
+ return new Quaternion(x, y, z, w);
200
+ }
201
+ /**
202
+ * Calculates a Quaternion from a rotation matrix
203
+ * @param rotationMatrix A normalized, non-scaled rotation matrix
204
+ * @returns The Quaterion
205
+ */
206
+ static FromRotationMatrix(rotationMatrix) {
207
+ const m = rotationMatrix.m;
208
+ const m11 = m[0];
209
+ const m12 = m[4];
210
+ const m13 = m[8];
211
+ const m21 = m[1];
212
+ const m22 = m[5];
213
+ const m23 = m[9];
214
+ const m31 = m[2];
215
+ const m32 = m[6];
216
+ const m33 = m[10];
217
+ const trace = m11 + m22 + m33;
218
+ let s;
219
+ let x = 0;
220
+ let y = 0;
221
+ let z = 0;
222
+ let w = 0;
223
+ if (trace > 0) {
224
+ s = 0.5 / Math.sqrt(trace + 1.0);
225
+ w = 0.25 / s;
226
+ x = (m32 - m23) * s;
227
+ y = (m13 - m31) * s;
228
+ z = (m21 - m12) * s;
229
+ }
230
+ else if (m11 > m22 && m11 > m33) {
231
+ s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);
232
+ w = (m32 - m23) / s;
233
+ x = 0.25 * s;
234
+ y = (m12 + m21) / s;
235
+ z = (m13 + m31) / s;
236
+ }
237
+ else if (m22 > m33) {
238
+ s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);
239
+ w = (m13 - m31) / s;
240
+ x = (m12 + m21) / s;
241
+ y = 0.25 * s;
242
+ z = (m23 + m32) / s;
243
+ }
244
+ else {
245
+ s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);
246
+ w = (m21 - m12) / s;
247
+ x = (m13 + m31) / s;
248
+ y = (m23 + m32) / s;
249
+ z = 0.25 * s;
250
+ }
251
+ return new Quaternion(x, y, z, w);
252
+ }
253
+ static ToRotationMatrix(quat) {
254
+ return Matrix.Compose(Vector3.One(), quat, Vector3.Zero());
255
+ }
256
+ /**
257
+ * Copy the quaternion to an array
258
+ * @returns an array populated with 4 elements from the quaternion coordinates
259
+ */
260
+ toArray() {
261
+ return [this.x, this.y, this.z, this.w];
262
+ }
263
+ get angle() {
264
+ const angle = 2 * Math.acos(this.w);
265
+ return Angle.FromRadians(angle);
266
+ }
267
+ get axis() {
268
+ const x = this.x / Math.sqrt(1 - this.w * this.w);
269
+ const y = this.y / Math.sqrt(1 - this.w * this.w);
270
+ const z = this.z / Math.sqrt(1 - this.w * this.w);
271
+ return new Vector3(x, y, z);
272
+ }
273
+ /**
274
+ * Get the quaternion as a Data Transfer Object
275
+ */
276
+ get dto() {
277
+ return { x: this.x, y: this.y, z: this.z, w: this.w };
278
+ }
279
+ constructor(x, y, z, w) {
280
+ this.x = x;
281
+ this.y = y;
282
+ this.z = z;
283
+ this.w = w;
284
+ }
285
+ }
286
+ //# sourceMappingURL=Quaternion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quaternion.js","sourceRoot":"","sources":["../../src/ValueObjects/Quaternion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Quaternion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Quaternion.test.d.ts","sourceRoot":"","sources":["../../src/ValueObjects/Quaternion.test.ts"],"names":[],"mappings":""}