@vived/core 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/package.json +3 -6
  2. package/dist/cjs/AppObject/AppObject.js +0 -59
  3. package/dist/cjs/AppObject/AppObject.js.map +0 -1
  4. package/dist/cjs/AppObject/AppObject.test.js +0 -113
  5. package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
  6. package/dist/cjs/AppObject/AppObjectComponent.js +0 -82
  7. package/dist/cjs/AppObject/AppObjectComponent.js.map +0 -1
  8. package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
  9. package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
  10. package/dist/cjs/AppObject/AppObjectController.js +0 -12
  11. package/dist/cjs/AppObject/AppObjectController.js.map +0 -1
  12. package/dist/cjs/AppObject/AppObjectEntity.js +0 -38
  13. package/dist/cjs/AppObject/AppObjectEntity.js.map +0 -1
  14. package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
  15. package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
  16. package/dist/cjs/AppObject/AppObjectEntityRepo.js +0 -56
  17. package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +0 -1
  18. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
  19. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  20. package/dist/cjs/AppObject/AppObjectPM.js +0 -40
  21. package/dist/cjs/AppObject/AppObjectPM.js.map +0 -1
  22. package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
  23. package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
  24. package/dist/cjs/AppObject/AppObjectRepo.js +0 -133
  25. package/dist/cjs/AppObject/AppObjectRepo.js.map +0 -1
  26. package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
  27. package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
  28. package/dist/cjs/AppObject/AppObjectUC.js +0 -12
  29. package/dist/cjs/AppObject/AppObjectUC.js.map +0 -1
  30. package/dist/cjs/AppObject/AppObjectView.js +0 -12
  31. package/dist/cjs/AppObject/AppObjectView.js.map +0 -1
  32. package/dist/cjs/AppObject/getSingletonComponent.js +0 -7
  33. package/dist/cjs/AppObject/getSingletonComponent.js.map +0 -1
  34. package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
  35. package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
  36. package/dist/cjs/AppObject/index.js +0 -27
  37. package/dist/cjs/AppObject/index.js.map +0 -1
  38. package/dist/cjs/AppObject/printAppObjectDetails.js +0 -18
  39. package/dist/cjs/AppObject/printAppObjectDetails.js.map +0 -1
  40. package/dist/cjs/Entities/MemoizedAngle.js +0 -23
  41. package/dist/cjs/Entities/MemoizedAngle.js.map +0 -1
  42. package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
  43. package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
  44. package/dist/cjs/Entities/MemoizedBoolean.js +0 -23
  45. package/dist/cjs/Entities/MemoizedBoolean.js.map +0 -1
  46. package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
  47. package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
  48. package/dist/cjs/Entities/MemoizedColor.js +0 -24
  49. package/dist/cjs/Entities/MemoizedColor.js.map +0 -1
  50. package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
  51. package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
  52. package/dist/cjs/Entities/MemoizedNumber.js +0 -23
  53. package/dist/cjs/Entities/MemoizedNumber.js.map +0 -1
  54. package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
  55. package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
  56. package/dist/cjs/Entities/MemoizedQuaternion.js +0 -24
  57. package/dist/cjs/Entities/MemoizedQuaternion.js.map +0 -1
  58. package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
  59. package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
  60. package/dist/cjs/Entities/MemoizedString.js +0 -23
  61. package/dist/cjs/Entities/MemoizedString.js.map +0 -1
  62. package/dist/cjs/Entities/MemoizedString.test.js +0 -29
  63. package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
  64. package/dist/cjs/Entities/MemoizedVector2.js +0 -24
  65. package/dist/cjs/Entities/MemoizedVector2.js.map +0 -1
  66. package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
  67. package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
  68. package/dist/cjs/Entities/MemoizedVector3.js +0 -24
  69. package/dist/cjs/Entities/MemoizedVector3.js.map +0 -1
  70. package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
  71. package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
  72. package/dist/cjs/Entities/ObservableEntity.js +0 -20
  73. package/dist/cjs/Entities/ObservableEntity.js.map +0 -1
  74. package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
  75. package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
  76. package/dist/cjs/Entities/ObserverList.js +0 -27
  77. package/dist/cjs/Entities/ObserverList.js.map +0 -1
  78. package/dist/cjs/Entities/ObserverList.test.js +0 -44
  79. package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
  80. package/dist/cjs/Entities/RangedNumber.js +0 -36
  81. package/dist/cjs/Entities/RangedNumber.js.map +0 -1
  82. package/dist/cjs/Entities/RangedNumber.test.js +0 -96
  83. package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
  84. package/dist/cjs/Entities/index.js +0 -28
  85. package/dist/cjs/Entities/index.js.map +0 -1
  86. package/dist/cjs/Types/AppBoundary.js +0 -3
  87. package/dist/cjs/Types/AppBoundary.js.map +0 -1
  88. package/dist/cjs/Types/EaseFn.js +0 -3
  89. package/dist/cjs/Types/EaseFn.js.map +0 -1
  90. package/dist/cjs/Types/PmAdapter.js +0 -3
  91. package/dist/cjs/Types/PmAdapter.js.map +0 -1
  92. package/dist/cjs/Types/SingletonPmAdapter.js +0 -3
  93. package/dist/cjs/Types/SingletonPmAdapter.js.map +0 -1
  94. package/dist/cjs/Types/index.js +0 -21
  95. package/dist/cjs/Types/index.js.map +0 -1
  96. package/dist/cjs/Utilities/LengthConverters.js +0 -21
  97. package/dist/cjs/Utilities/LengthConverters.js.map +0 -1
  98. package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
  99. package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
  100. package/dist/cjs/Utilities/LerpNumber.js +0 -85
  101. package/dist/cjs/Utilities/LerpNumber.js.map +0 -1
  102. package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
  103. package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
  104. package/dist/cjs/Utilities/addAlphaToHex.js +0 -16
  105. package/dist/cjs/Utilities/addAlphaToHex.js.map +0 -1
  106. package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
  107. package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
  108. package/dist/cjs/Utilities/alphaToHex.js +0 -21
  109. package/dist/cjs/Utilities/alphaToHex.js.map +0 -1
  110. package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
  111. package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
  112. package/dist/cjs/Utilities/degreesToRadians.js +0 -7
  113. package/dist/cjs/Utilities/degreesToRadians.js.map +0 -1
  114. package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
  115. package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
  116. package/dist/cjs/Utilities/downloadFile.js +0 -14
  117. package/dist/cjs/Utilities/downloadFile.js.map +0 -1
  118. package/dist/cjs/Utilities/easeFunctions.js +0 -208
  119. package/dist/cjs/Utilities/easeFunctions.js.map +0 -1
  120. package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
  121. package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
  122. package/dist/cjs/Utilities/generateUniqueID.js +0 -8
  123. package/dist/cjs/Utilities/generateUniqueID.js.map +0 -1
  124. package/dist/cjs/Utilities/index.js +0 -25
  125. package/dist/cjs/Utilities/index.js.map +0 -1
  126. package/dist/cjs/Utilities/interpolateNumber.js +0 -18
  127. package/dist/cjs/Utilities/interpolateNumber.js.map +0 -1
  128. package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
  129. package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
  130. package/dist/cjs/ValueObjects/Angle.js +0 -47
  131. package/dist/cjs/ValueObjects/Angle.js.map +0 -1
  132. package/dist/cjs/ValueObjects/Angle.test.js +0 -28
  133. package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
  134. package/dist/cjs/ValueObjects/Color.js +0 -859
  135. package/dist/cjs/ValueObjects/Color.js.map +0 -1
  136. package/dist/cjs/ValueObjects/Color.test.js +0 -147
  137. package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
  138. package/dist/cjs/ValueObjects/LineSegment2D.js +0 -72
  139. package/dist/cjs/ValueObjects/LineSegment2D.js.map +0 -1
  140. package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
  141. package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
  142. package/dist/cjs/ValueObjects/Matrix.js +0 -466
  143. package/dist/cjs/ValueObjects/Matrix.js.map +0 -1
  144. package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
  145. package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
  146. package/dist/cjs/ValueObjects/ParametricLine.js +0 -77
  147. package/dist/cjs/ValueObjects/ParametricLine.js.map +0 -1
  148. package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
  149. package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
  150. package/dist/cjs/ValueObjects/ParametricPlane.js +0 -65
  151. package/dist/cjs/ValueObjects/ParametricPlane.js.map +0 -1
  152. package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
  153. package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
  154. package/dist/cjs/ValueObjects/Quaternion.js +0 -290
  155. package/dist/cjs/ValueObjects/Quaternion.js.map +0 -1
  156. package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
  157. package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
  158. package/dist/cjs/ValueObjects/Rectangle.js +0 -24
  159. package/dist/cjs/ValueObjects/Rectangle.js.map +0 -1
  160. package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
  161. package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
  162. package/dist/cjs/ValueObjects/Vector2.js +0 -184
  163. package/dist/cjs/ValueObjects/Vector2.js.map +0 -1
  164. package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
  165. package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
  166. package/dist/cjs/ValueObjects/Vector3.js +0 -231
  167. package/dist/cjs/ValueObjects/Vector3.js.map +0 -1
  168. package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
  169. package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
  170. package/dist/cjs/ValueObjects/Version.js +0 -171
  171. package/dist/cjs/ValueObjects/Version.js.map +0 -1
  172. package/dist/cjs/ValueObjects/Version.test.js +0 -310
  173. package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
  174. package/dist/cjs/ValueObjects/index.js +0 -28
  175. package/dist/cjs/ValueObjects/index.js.map +0 -1
  176. package/dist/cjs/index.js +0 -22
  177. package/dist/cjs/index.js.map +0 -1
@@ -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"]}
@@ -1,231 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Vector3 = void 0;
4
- class Vector3 {
5
- /**
6
- * Creates a zero vector
7
- * @returns Vector [0,0,0]
8
- */
9
- static Zero() {
10
- return new Vector3(0, 0, 0);
11
- }
12
- /**
13
- * Creates a vector of ones
14
- * @returns Vector [1,1,1]
15
- */
16
- static One() {
17
- return new Vector3(1, 1, 1);
18
- }
19
- /**
20
- * Creates a Right vector (positive X)
21
- * @param length optional length of the right unit. Default is 1
22
- * @returns Vector [length, 0,0]
23
- */
24
- static Right(length = 1) {
25
- return new Vector3(length, 0, 0);
26
- }
27
- /**
28
- * Creates a Left vector (negative X)
29
- * @param length optional length of the left unit. Default is 1
30
- * @returns Vector [-length, 0, 0]
31
- */
32
- static Left(length = 1) {
33
- return new Vector3(-length, 0, 0);
34
- }
35
- /**
36
- * Creates an Up vector (positive Y)
37
- * @param length optional length of the vector. Default is 1
38
- * @returns Vector [0, length, 0]
39
- */
40
- static Up(length = 1) {
41
- return new Vector3(0, length, 0);
42
- }
43
- /**
44
- * Creates a Down vector (negative Y)
45
- * @param length optional length of the vector. Default is 1
46
- * @returns Vector [0, -length, 0]
47
- */
48
- static Down(length = 1) {
49
- return new Vector3(0, -length, 0);
50
- }
51
- /**
52
- * Creates a Forward vector (positive Z)
53
- * @param length optional length of the vector. Default is 1
54
- * @returns Vector [0, 0, length]
55
- */
56
- static Forward(length = 1) {
57
- return new Vector3(0, 0, length);
58
- }
59
- /**
60
- * Creates a Backward vector (negative Z)
61
- * @param length optional length of the vector. Default is 1
62
- * @returns Vector [0, 0, -length]
63
- */
64
- static Backward(length = 1) {
65
- return new Vector3(0, 0, -length);
66
- }
67
- /**
68
- * Creates a Vector from an array of components
69
- * @param values The x, y, z components as an array
70
- * @returns The Vector
71
- */
72
- static FromArray(values) {
73
- return new Vector3(values[0], values[1], values[2]);
74
- }
75
- /**
76
- * Creates a Vector from a Data Transfer Object
77
- * @param dto The Data Transfer Object
78
- * @returns The Vector
79
- */
80
- static FromDTO(dto) {
81
- return new Vector3(dto.x, dto.y, dto.z);
82
- }
83
- static interpolateNumber(a, b, percent) {
84
- return a + (b - a) * percent;
85
- }
86
- /**
87
- * Gets the magnitude of the Vector3
88
- * @returns the magnitude of the Vector3
89
- */
90
- get magnitude() {
91
- const xSqr = this.x * this.x;
92
- const ySqr = this.y * this.y;
93
- const zSqr = this.z * this.z;
94
- const magnitude = Math.sqrt(xSqr + ySqr + zSqr);
95
- return magnitude;
96
- }
97
- /**
98
- * Gets the unit vector for this Vector3
99
- * @returns the unit vector
100
- */
101
- get unit() {
102
- const mag = this.magnitude;
103
- if (mag === 0) {
104
- return Vector3.Zero();
105
- }
106
- const unitX = this.x / mag;
107
- const unitY = this.y / mag;
108
- const unitZ = this.z / mag;
109
- return new Vector3(unitX, unitY, unitZ);
110
- }
111
- /**
112
- * Gets the vector as an array
113
- * @returns an array representing the vector
114
- */
115
- get array() {
116
- return [this.x, this.y, this.z];
117
- }
118
- /**
119
- * Get the vector as a Data Transfer Object
120
- */
121
- get dto() {
122
- return { x: this.x, y: this.y, z: this.z };
123
- }
124
- constructor(x, y, z) {
125
- this.x = x;
126
- this.y = y;
127
- this.z = z;
128
- }
129
- }
130
- exports.Vector3 = Vector3;
131
- /**
132
- * Adds Vector B to Vector A
133
- * @param a Vector A
134
- * @param b Vector B
135
- * @return Result of A + B
136
- */
137
- Vector3.Add = (a, b) => {
138
- return new Vector3(a.x + b.x, a.y + b.y, a.z + b.z);
139
- };
140
- /**
141
- * Subtracts Vector B from Vector A
142
- * @param a Vector A
143
- * @param b Vector B
144
- * @return Result of A - B
145
- */
146
- Vector3.Subtract = (a, b) => {
147
- return new Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
148
- };
149
- /**
150
- * Checks to see if the two vectors are equal
151
- * @param a Vector A
152
- * @param b Vector B
153
- * @return True if the two vectors are equal, otherwise false
154
- */
155
- Vector3.Equal = (a, b) => {
156
- if (a.x === b.x && a.y === b.y && a.z === b.z)
157
- return true;
158
- else
159
- return false;
160
- };
161
- /**
162
- * Checks to see if the two vectors are close
163
- * @param a Vector A
164
- * @param b Vector B
165
- * @param tolerance Tolerance for checking. Defaulted to 0.01
166
- * @return True if the distance between the two vectors is less than the tolerance, otherwise false
167
- */
168
- Vector3.Close = (a, b, tolerance = 0.01) => {
169
- const diff = Vector3.Subtract(a, b);
170
- const diffMag = diff.magnitude;
171
- if (diffMag < tolerance)
172
- return true;
173
- else
174
- return false;
175
- };
176
- /**
177
- * Calculates the Cross Product between two vectors
178
- * @param a Vector A
179
- * @param b Vector B
180
- * @return the cross product between the two vectors
181
- */
182
- Vector3.Cross = (a, b) => {
183
- const x = a.y * b.z - a.z * b.y;
184
- const y = a.z * b.x - a.x * b.z;
185
- const z = a.x * b.y - a.y * b.x;
186
- return new Vector3(x, y, z);
187
- };
188
- /**
189
- * Calculates the Dot Product between two vectors
190
- * @param a Vector A
191
- * @param b Vector B
192
- * @return the dot product between the two vectors
193
- */
194
- Vector3.Dot = (a, b) => {
195
- return a.x * b.x + a.y * b.y + a.z * b.z;
196
- };
197
- /**
198
- * Create a new vector that will have the same unit as the original vector but set to the desired length
199
- * @param vec The original vector
200
- * @param length Desired length of the final vector
201
- * @return The resulting vector
202
- */
203
- Vector3.NewVectorOfLength = (vec, length) => {
204
- const unit = vec.unit;
205
- return new Vector3(length * unit.x, length * unit.y, length * unit.z);
206
- };
207
- Vector3.Transform = (vector, matrix) => {
208
- const m = matrix.m;
209
- const rx = vector.x * m[0] + vector.y * m[4] + vector.z * m[8] + m[12];
210
- const ry = vector.x * m[1] + vector.y * m[5] + vector.z * m[9] + m[13];
211
- const rz = vector.x * m[2] + vector.y * m[6] + vector.z * m[10] + m[14];
212
- const rw = 1 / (vector.x * m[3] + vector.y * m[7] + vector.z * m[11] + m[15]);
213
- const x = rx * rw;
214
- const y = ry * rw;
215
- const z = rz * rw;
216
- return new Vector3(x, y, z);
217
- };
218
- /**
219
- * Linearly interpolates between two vectors
220
- * @param initial The starting point
221
- * @param final The end point
222
- * @param percent Percent of the lerp. 0 will return initial and 1 will return final
223
- * @return the LERP result Vector3
224
- */
225
- Vector3.Lerp = (initial, final, percent) => {
226
- const x = Vector3.interpolateNumber(initial.x, final.x, percent);
227
- const y = Vector3.interpolateNumber(initial.y, final.y, percent);
228
- const z = Vector3.interpolateNumber(initial.z, final.z, percent);
229
- return new Vector3(x, y, z);
230
- };
231
- //# sourceMappingURL=Vector3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Vector3.js","sourceRoot":"","sources":["../../../src/ValueObjects/Vector3.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix } from \"./Matrix\";\r\n\r\nexport interface Vector3DTO {\r\n x: number;\r\n y: number;\r\n z: number;\r\n}\r\n\r\nexport class Vector3 {\r\n /**\r\n * Creates a zero vector\r\n * @returns Vector [0,0,0]\r\n */\r\n public static Zero() {\r\n return new Vector3(0, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates a vector of ones\r\n * @returns Vector [1,1,1]\r\n */\r\n public static One() {\r\n return new Vector3(1, 1, 1);\r\n }\r\n\r\n /**\r\n * Creates a Right vector (positive X)\r\n * @param length optional length of the right unit. Default is 1\r\n * @returns Vector [length, 0,0]\r\n */\r\n public static Right(length = 1) {\r\n return new Vector3(length, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates a Left vector (negative X)\r\n * @param length optional length of the left unit. Default is 1\r\n * @returns Vector [-length, 0, 0]\r\n */\r\n public static Left(length = 1) {\r\n return new Vector3(-length, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates an Up vector (positive Y)\r\n * @param length optional length of the vector. Default is 1\r\n * @returns Vector [0, length, 0]\r\n */\r\n public static Up(length = 1) {\r\n return new Vector3(0, length, 0);\r\n }\r\n\r\n /**\r\n * Creates a Down vector (negative Y)\r\n * @param length optional length of the vector. Default is 1\r\n * @returns Vector [0, -length, 0]\r\n */\r\n public static Down(length = 1) {\r\n return new Vector3(0, -length, 0);\r\n }\r\n\r\n /**\r\n * Creates a Forward vector (positive Z)\r\n * @param length optional length of the vector. Default is 1\r\n * @returns Vector [0, 0, length]\r\n */\r\n public static Forward(length = 1) {\r\n return new Vector3(0, 0, length);\r\n }\r\n\r\n /**\r\n * Creates a Backward vector (negative Z)\r\n * @param length optional length of the vector. Default is 1\r\n * @returns Vector [0, 0, -length]\r\n */\r\n public static Backward(length = 1) {\r\n return new Vector3(0, 0, -length);\r\n }\r\n\r\n /**\r\n * Creates a Vector from an array of components\r\n * @param values The x, y, z components as an array\r\n * @returns The Vector\r\n */\r\n public static FromArray(values: [number, number, number]): Vector3 {\r\n return new Vector3(values[0], values[1], values[2]);\r\n }\r\n\r\n /**\r\n * Creates a Vector from a Data Transfer Object\r\n * @param dto The Data Transfer Object\r\n * @returns The Vector\r\n */\r\n public static FromDTO(dto: Vector3DTO): Vector3 {\r\n return new Vector3(dto.x, dto.y, dto.z);\r\n }\r\n\r\n /**\r\n * Adds Vector B to Vector A\r\n * @param a Vector A\r\n * @param b Vector B\r\n * @return Result of A + B\r\n */\r\n static Add = (a: Vector3, b: Vector3): Vector3 => {\r\n return new Vector3(a.x + b.x, a.y + b.y, a.z + b.z);\r\n };\r\n\r\n /**\r\n * Subtracts Vector B from Vector A\r\n * @param a Vector A\r\n * @param b Vector B\r\n * @return Result of A - B\r\n */\r\n static Subtract = (a: Vector3, b: Vector3): Vector3 => {\r\n return new Vector3(a.x - b.x, a.y - b.y, a.z - b.z);\r\n };\r\n\r\n /**\r\n * Checks to see if the two vectors are equal\r\n * @param a Vector A\r\n * @param b Vector B\r\n * @return True if the two vectors are equal, otherwise false\r\n */\r\n static Equal = (a: Vector3, b: Vector3): boolean => {\r\n if (a.x === b.x && a.y === b.y && a.z === b.z) return true;\r\n else return false;\r\n };\r\n\r\n /**\r\n * Checks to see if the two vectors are close\r\n * @param a Vector A\r\n * @param b Vector B\r\n * @param tolerance Tolerance for checking. Defaulted to 0.01\r\n * @return True if the distance between the two vectors is less than the tolerance, otherwise false\r\n */\r\n static Close = (a: Vector3, b: Vector3, tolerance = 0.01): boolean => {\r\n const diff = Vector3.Subtract(a, b);\r\n const diffMag = diff.magnitude;\r\n\r\n if (diffMag < tolerance) return true;\r\n else return false;\r\n };\r\n\r\n /**\r\n * Calculates the Cross Product between two vectors\r\n * @param a Vector A\r\n * @param b Vector B\r\n * @return the cross product between the two vectors\r\n */\r\n static Cross = (a: Vector3, b: Vector3): Vector3 => {\r\n const x = a.y * b.z - a.z * b.y;\r\n const y = a.z * b.x - a.x * b.z;\r\n const z = a.x * b.y - a.y * b.x;\r\n return new Vector3(x, y, z);\r\n };\r\n\r\n /**\r\n * Calculates the Dot Product between two vectors\r\n * @param a Vector A\r\n * @param b Vector B\r\n * @return the dot product between the two vectors\r\n */\r\n static Dot = (a: Vector3, b: Vector3): number => {\r\n return a.x * b.x + a.y * b.y + a.z * b.z;\r\n };\r\n\r\n /**\r\n * Create a new vector that will have the same unit as the original vector but set to the desired length\r\n * @param vec The original vector\r\n * @param length Desired length of the final vector\r\n * @return The resulting vector\r\n */\r\n static NewVectorOfLength = (vec: Vector3, length: number): Vector3 => {\r\n const unit = vec.unit;\r\n return new Vector3(length * unit.x, length * unit.y, length * unit.z);\r\n };\r\n\r\n static Transform = (vector: Vector3, matrix: Matrix): Vector3 => {\r\n const m = matrix.m;\r\n const rx = vector.x * m[0] + vector.y * m[4] + vector.z * m[8] + m[12];\r\n const ry = vector.x * m[1] + vector.y * m[5] + vector.z * m[9] + m[13];\r\n const rz = vector.x * m[2] + vector.y * m[6] + vector.z * m[10] + m[14];\r\n const rw =\r\n 1 / (vector.x * m[3] + vector.y * m[7] + vector.z * m[11] + m[15]);\r\n\r\n const x = rx * rw;\r\n const y = ry * rw;\r\n const z = rz * rw;\r\n\r\n return new Vector3(x, y, z);\r\n };\r\n\r\n /**\r\n * Linearly interpolates between two vectors\r\n * @param initial The starting point\r\n * @param final The end point\r\n * @param percent Percent of the lerp. 0 will return initial and 1 will return final\r\n * @return the LERP result Vector3\r\n */\r\n static Lerp = (\r\n initial: Vector3,\r\n final: Vector3,\r\n percent: number\r\n ): Vector3 => {\r\n const x = Vector3.interpolateNumber(initial.x, final.x, percent);\r\n const y = Vector3.interpolateNumber(initial.y, final.y, percent);\r\n const z = Vector3.interpolateNumber(initial.z, final.z, percent);\r\n\r\n return new Vector3(x, y, z);\r\n };\r\n\r\n private static interpolateNumber(a: number, b: number, percent: number) {\r\n return a + (b - a) * percent;\r\n }\r\n\r\n readonly x: number;\r\n readonly y: number;\r\n readonly z: number;\r\n\r\n /**\r\n * Gets the magnitude of the Vector3\r\n * @returns the magnitude of the Vector3\r\n */\r\n get magnitude(): number {\r\n const xSqr = this.x * this.x;\r\n const ySqr = this.y * this.y;\r\n const zSqr = this.z * this.z;\r\n\r\n const magnitude = Math.sqrt(xSqr + ySqr + zSqr);\r\n return magnitude;\r\n }\r\n\r\n /**\r\n * Gets the unit vector for this Vector3\r\n * @returns the unit vector\r\n */\r\n get unit(): Vector3 {\r\n const mag = this.magnitude;\r\n if (mag === 0) {\r\n return Vector3.Zero();\r\n }\r\n\r\n const unitX = this.x / mag;\r\n const unitY = this.y / mag;\r\n const unitZ = this.z / mag;\r\n return new Vector3(unitX, unitY, unitZ);\r\n }\r\n\r\n /**\r\n * Gets the vector as an array\r\n * @returns an array representing the vector\r\n */\r\n get array(): [number, number, number] {\r\n return [this.x, this.y, this.z];\r\n }\r\n\r\n /**\r\n * Get the vector as a Data Transfer Object\r\n */\r\n get dto(): Vector3DTO {\r\n return { x: this.x, y: this.y, z: this.z };\r\n }\r\n\r\n constructor(x: number, y: number, z: number) {\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n }\r\n}\r\n"]}
@@ -1,188 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const _1 = require(".");
4
- const Angle_1 = require("./Angle");
5
- const Matrix_1 = require("./Matrix");
6
- const Quaternion_1 = require("./Quaternion");
7
- describe("Vector 3 Value object - Creation", () => {
8
- it("Creates a zero vector", () => {
9
- const v = _1.Vector3.Zero();
10
- expect(v).toEqual(new _1.Vector3(0, 0, 0));
11
- });
12
- it("Creates a one vector", () => {
13
- const v = _1.Vector3.One();
14
- expect(v).toEqual(new _1.Vector3(1, 1, 1));
15
- });
16
- it("Creates a vector from an array", () => {
17
- const v = _1.Vector3.FromArray([2, 5, 7]);
18
- expect(v).toEqual(new _1.Vector3(2, 5, 7));
19
- });
20
- it("Creates a unit right vector", () => {
21
- const v = _1.Vector3.Right();
22
- expect(v).toEqual(new _1.Vector3(1, 0, 0));
23
- });
24
- it("Creates a right vector with length", () => {
25
- const v = _1.Vector3.Right(3);
26
- expect(v).toEqual(new _1.Vector3(3, 0, 0));
27
- });
28
- it("Creates a unit left vector", () => {
29
- const v = _1.Vector3.Left();
30
- expect(v).toEqual(new _1.Vector3(-1, 0, 0));
31
- });
32
- it("Creates a left vector with length", () => {
33
- const v = _1.Vector3.Left(3);
34
- expect(v).toEqual(new _1.Vector3(-3, 0, 0));
35
- });
36
- it("Creates a unit up vector", () => {
37
- const v = _1.Vector3.Up();
38
- expect(v).toEqual(new _1.Vector3(0, 1, 0));
39
- });
40
- it("Creates a up vector with length", () => {
41
- const v = _1.Vector3.Up(3);
42
- expect(v).toEqual(new _1.Vector3(0, 3, 0));
43
- });
44
- it("Creates a unit down vector", () => {
45
- const v = _1.Vector3.Down();
46
- expect(v).toEqual(new _1.Vector3(0, -1, 0));
47
- });
48
- it("Creates a down vector with length", () => {
49
- const v = _1.Vector3.Down(3);
50
- expect(v).toEqual(new _1.Vector3(0, -3, 0));
51
- });
52
- it("Creates a unit forward vector", () => {
53
- const v = _1.Vector3.Forward();
54
- expect(v).toEqual(new _1.Vector3(0, 0, 1));
55
- });
56
- it("Creates a forward vector with length", () => {
57
- const v = _1.Vector3.Forward(3);
58
- expect(v).toEqual(new _1.Vector3(0, 0, 3));
59
- });
60
- it("Creates a unit backward vector", () => {
61
- const v = _1.Vector3.Backward();
62
- expect(v).toEqual(new _1.Vector3(0, 0, -1));
63
- });
64
- it("Creates a backward vector with length", () => {
65
- const v = _1.Vector3.Backward(3);
66
- expect(v).toEqual(new _1.Vector3(0, 0, -3));
67
- });
68
- });
69
- describe("Vector 3 Value object - Static actions", () => {
70
- it("Adds two vectors", () => {
71
- const v1 = new _1.Vector3(1, 2, 3);
72
- const v2 = new _1.Vector3(4, 5, 6);
73
- const v3 = _1.Vector3.Add(v1, v2);
74
- expect(v3).toEqual(new _1.Vector3(5, 7, 9));
75
- });
76
- test("Subtracts two vectors", () => {
77
- const v1 = new _1.Vector3(1, 2, 3);
78
- const v2 = new _1.Vector3(6, 5, 4);
79
- const v3 = _1.Vector3.Subtract(v1, v2);
80
- expect(v3).toEqual(new _1.Vector3(-5, -3, -1));
81
- });
82
- test("Checks if two vectors are equal", () => {
83
- const v1 = new _1.Vector3(1, 2, 3);
84
- const v2 = new _1.Vector3(4, 5, 6);
85
- const v3 = new _1.Vector3(1, 2, 3);
86
- expect(_1.Vector3.Equal(v1, v2)).toEqual(false);
87
- expect(_1.Vector3.Equal(v1, v3)).toEqual(true);
88
- });
89
- it("Checks if Vectors are close without a tolerance", () => {
90
- const v1 = new _1.Vector3(1, 2, 3);
91
- const v2 = new _1.Vector3(1.1, 2.2, 3.3);
92
- const v3 = new _1.Vector3(1.001, 2.001, 3.001);
93
- expect(_1.Vector3.Close(v1, v2)).toEqual(false);
94
- expect(_1.Vector3.Close(v1, v3)).toEqual(true);
95
- });
96
- it("Checks if Vectors are close with a tolerance", () => {
97
- const v1 = new _1.Vector3(1, 2, 3);
98
- const v2 = new _1.Vector3(1.1, 2.2, 3.3);
99
- expect(_1.Vector3.Close(v1, v2, 0.3)).toEqual(false);
100
- expect(_1.Vector3.Close(v1, v2, 0.4)).toEqual(true);
101
- });
102
- it("Computes the cross product", () => {
103
- // From https://www.symbolab.com/solver/vector-cross-product-calculator
104
- const v1 = new _1.Vector3(1, 2, 3);
105
- const v2 = new _1.Vector3(4, 5, -6);
106
- const cross = _1.Vector3.Cross(v1, v2);
107
- expect(cross).toEqual(new _1.Vector3(-27, 18, -3));
108
- });
109
- test("Cross product", () => {
110
- // From https://www.symbolab.com/solver/vector-cross-product-calculator
111
- const v1 = new _1.Vector3(1, 2, 3);
112
- const v2 = new _1.Vector3(4, 5, -6);
113
- const cross = _1.Vector3.Cross(v2, v1);
114
- expect(cross).toEqual(new _1.Vector3(27, -18, 3));
115
- });
116
- test("Dot product", () => {
117
- // From https://www.calculatorsoup.com/calculators/algebra/dot-product-calculator.php
118
- const v1 = new _1.Vector3(1, 5, 3);
119
- const v2 = new _1.Vector3(2, 3, 6);
120
- const dot = _1.Vector3.Dot(v1, v2);
121
- expect(dot).toEqual(35);
122
- });
123
- test("New vector of length", () => {
124
- const v1 = new _1.Vector3(1, -5, 3);
125
- const v2 = _1.Vector3.NewVectorOfLength(v1, 10);
126
- expect(v2.x).toBeCloseTo(1.69);
127
- expect(v2.y).toBeCloseTo(-8.45);
128
- expect(v2.z).toBeCloseTo(5.07);
129
- });
130
- });
131
- describe("Vector 3 Value object - parameters", () => {
132
- it("Gets the vector components", () => {
133
- const v = new _1.Vector3(2, 5, 7);
134
- expect(v.x).toEqual(2);
135
- expect(v.y).toEqual(5);
136
- expect(v.z).toEqual(7);
137
- });
138
- it("Gets the magnitue", () => {
139
- // https://www.omnicalculator.com/math/unit-vector
140
- const v1 = new _1.Vector3(1, -5, 3);
141
- expect(v1.magnitude).toBeCloseTo(5.916);
142
- });
143
- it("Gets the unit vector", () => {
144
- // https://www.omnicalculator.com/math/unit-vector
145
- const v1 = new _1.Vector3(1, -5, 3);
146
- expect(v1.unit.x).toBeCloseTo(0.169);
147
- expect(v1.unit.y).toBeCloseTo(-0.845);
148
- expect(v1.unit.z).toBeCloseTo(0.507);
149
- });
150
- it("Gets the vector as an array", () => {
151
- const v1 = new _1.Vector3(1, -5, 3);
152
- expect(v1.array).toEqual([1, -5, 3]);
153
- });
154
- it("Lerps", () => {
155
- const start = new _1.Vector3(10, 20, 30);
156
- const end = new _1.Vector3(20, 30, 40);
157
- const lerped = _1.Vector3.Lerp(start, end, 0.5);
158
- expect(lerped).toEqual(new _1.Vector3(15, 25, 35));
159
- });
160
- it("Transforms a Vector with a matrix", () => {
161
- const pos = new _1.Vector3(5, 0, 0);
162
- const rot = Quaternion_1.Quaternion.FromAngleAxis(_1.Vector3.Up(), Angle_1.Angle.FromDegrees(-90));
163
- const scale = new _1.Vector3(2, 2, 2);
164
- const matrix = Matrix_1.Matrix.Compose(scale, rot, pos);
165
- const transformed = _1.Vector3.Transform(new _1.Vector3(2, 1, -1), matrix);
166
- const expected = new _1.Vector3(7, 2, 4);
167
- expect(_1.Vector3.Close(transformed, expected)).toEqual(true);
168
- });
169
- it("Gets the Data Transfer Object", () => {
170
- const vec = new _1.Vector3(1, 2, 3);
171
- expect(vec.dto).toEqual({
172
- x: 1,
173
- y: 2,
174
- z: 3,
175
- });
176
- });
177
- it("Makes a vector from a DTO", () => {
178
- const vec = _1.Vector3.FromDTO({
179
- x: 1,
180
- y: 2,
181
- z: 3,
182
- });
183
- expect(vec.x).toEqual(1);
184
- expect(vec.y).toEqual(2);
185
- expect(vec.z).toEqual(3);
186
- });
187
- });
188
- //# sourceMappingURL=Vector3.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Vector3.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Vector3.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector3 } from \".\";\r\nimport { Angle } from \"./Angle\";\r\nimport { Matrix } from \"./Matrix\";\r\nimport { Quaternion } from \"./Quaternion\";\r\n\r\ndescribe(\"Vector 3 Value object - Creation\", () => {\r\n it(\"Creates a zero vector\", () => {\r\n const v = Vector3.Zero();\r\n expect(v).toEqual(new Vector3(0, 0, 0));\r\n });\r\n it(\"Creates a one vector\", () => {\r\n const v = Vector3.One();\r\n expect(v).toEqual(new Vector3(1, 1, 1));\r\n });\r\n\r\n it(\"Creates a vector from an array\", () => {\r\n const v = Vector3.FromArray([2, 5, 7]);\r\n expect(v).toEqual(new Vector3(2, 5, 7));\r\n });\r\n\r\n it(\"Creates a unit right vector\", () => {\r\n const v = Vector3.Right();\r\n expect(v).toEqual(new Vector3(1, 0, 0));\r\n });\r\n\r\n it(\"Creates a right vector with length\", () => {\r\n const v = Vector3.Right(3);\r\n expect(v).toEqual(new Vector3(3, 0, 0));\r\n });\r\n\r\n it(\"Creates a unit left vector\", () => {\r\n const v = Vector3.Left();\r\n expect(v).toEqual(new Vector3(-1, 0, 0));\r\n });\r\n\r\n it(\"Creates a left vector with length\", () => {\r\n const v = Vector3.Left(3);\r\n expect(v).toEqual(new Vector3(-3, 0, 0));\r\n });\r\n\r\n it(\"Creates a unit up vector\", () => {\r\n const v = Vector3.Up();\r\n expect(v).toEqual(new Vector3(0, 1, 0));\r\n });\r\n\r\n it(\"Creates a up vector with length\", () => {\r\n const v = Vector3.Up(3);\r\n expect(v).toEqual(new Vector3(0, 3, 0));\r\n });\r\n\r\n it(\"Creates a unit down vector\", () => {\r\n const v = Vector3.Down();\r\n expect(v).toEqual(new Vector3(0, -1, 0));\r\n });\r\n\r\n it(\"Creates a down vector with length\", () => {\r\n const v = Vector3.Down(3);\r\n expect(v).toEqual(new Vector3(0, -3, 0));\r\n });\r\n\r\n it(\"Creates a unit forward vector\", () => {\r\n const v = Vector3.Forward();\r\n expect(v).toEqual(new Vector3(0, 0, 1));\r\n });\r\n\r\n it(\"Creates a forward vector with length\", () => {\r\n const v = Vector3.Forward(3);\r\n expect(v).toEqual(new Vector3(0, 0, 3));\r\n });\r\n\r\n it(\"Creates a unit backward vector\", () => {\r\n const v = Vector3.Backward();\r\n expect(v).toEqual(new Vector3(0, 0, -1));\r\n });\r\n\r\n it(\"Creates a backward vector with length\", () => {\r\n const v = Vector3.Backward(3);\r\n expect(v).toEqual(new Vector3(0, 0, -3));\r\n });\r\n});\r\n\r\ndescribe(\"Vector 3 Value object - Static actions\", () => {\r\n it(\"Adds two vectors\", () => {\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(4, 5, 6);\r\n\r\n const v3 = Vector3.Add(v1, v2);\r\n expect(v3).toEqual(new Vector3(5, 7, 9));\r\n });\r\n\r\n test(\"Subtracts two vectors\", () => {\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(6, 5, 4);\r\n\r\n const v3 = Vector3.Subtract(v1, v2);\r\n expect(v3).toEqual(new Vector3(-5, -3, -1));\r\n });\r\n\r\n test(\"Checks if two vectors are equal\", () => {\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(4, 5, 6);\r\n const v3 = new Vector3(1, 2, 3);\r\n expect(Vector3.Equal(v1, v2)).toEqual(false);\r\n expect(Vector3.Equal(v1, v3)).toEqual(true);\r\n });\r\n\r\n it(\"Checks if Vectors are close without a tolerance\", () => {\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(1.1, 2.2, 3.3);\r\n const v3 = new Vector3(1.001, 2.001, 3.001);\r\n expect(Vector3.Close(v1, v2)).toEqual(false);\r\n expect(Vector3.Close(v1, v3)).toEqual(true);\r\n });\r\n\r\n it(\"Checks if Vectors are close with a tolerance\", () => {\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(1.1, 2.2, 3.3);\r\n expect(Vector3.Close(v1, v2, 0.3)).toEqual(false);\r\n expect(Vector3.Close(v1, v2, 0.4)).toEqual(true);\r\n });\r\n\r\n it(\"Computes the cross product\", () => {\r\n // From https://www.symbolab.com/solver/vector-cross-product-calculator\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(4, 5, -6);\r\n\r\n const cross = Vector3.Cross(v1, v2);\r\n expect(cross).toEqual(new Vector3(-27, 18, -3));\r\n });\r\n\r\n test(\"Cross product\", () => {\r\n // From https://www.symbolab.com/solver/vector-cross-product-calculator\r\n const v1 = new Vector3(1, 2, 3);\r\n const v2 = new Vector3(4, 5, -6);\r\n\r\n const cross = Vector3.Cross(v2, v1);\r\n expect(cross).toEqual(new Vector3(27, -18, 3));\r\n });\r\n\r\n test(\"Dot product\", () => {\r\n // From https://www.calculatorsoup.com/calculators/algebra/dot-product-calculator.php\r\n const v1 = new Vector3(1, 5, 3);\r\n const v2 = new Vector3(2, 3, 6);\r\n\r\n const dot = Vector3.Dot(v1, v2);\r\n expect(dot).toEqual(35);\r\n });\r\n\r\n test(\"New vector of length\", () => {\r\n const v1 = new Vector3(1, -5, 3);\r\n const v2 = Vector3.NewVectorOfLength(v1, 10);\r\n\r\n expect(v2.x).toBeCloseTo(1.69);\r\n expect(v2.y).toBeCloseTo(-8.45);\r\n expect(v2.z).toBeCloseTo(5.07);\r\n });\r\n});\r\n\r\ndescribe(\"Vector 3 Value object - parameters\", () => {\r\n it(\"Gets the vector components\", () => {\r\n const v = new Vector3(2, 5, 7);\r\n expect(v.x).toEqual(2);\r\n expect(v.y).toEqual(5);\r\n expect(v.z).toEqual(7);\r\n });\r\n\r\n it(\"Gets the magnitue\", () => {\r\n // https://www.omnicalculator.com/math/unit-vector\r\n const v1 = new Vector3(1, -5, 3);\r\n expect(v1.magnitude).toBeCloseTo(5.916);\r\n });\r\n\r\n it(\"Gets the unit vector\", () => {\r\n // https://www.omnicalculator.com/math/unit-vector\r\n const v1 = new Vector3(1, -5, 3);\r\n\r\n expect(v1.unit.x).toBeCloseTo(0.169);\r\n expect(v1.unit.y).toBeCloseTo(-0.845);\r\n expect(v1.unit.z).toBeCloseTo(0.507);\r\n });\r\n\r\n it(\"Gets the vector as an array\", () => {\r\n const v1 = new Vector3(1, -5, 3);\r\n expect(v1.array).toEqual([1, -5, 3]);\r\n });\r\n\r\n it(\"Lerps\", () => {\r\n const start = new Vector3(10, 20, 30);\r\n const end = new Vector3(20, 30, 40);\r\n const lerped = Vector3.Lerp(start, end, 0.5);\r\n\r\n expect(lerped).toEqual(new Vector3(15, 25, 35));\r\n });\r\n\r\n it(\"Transforms a Vector with a matrix\", () => {\r\n const pos = new Vector3(5, 0, 0);\r\n const rot = Quaternion.FromAngleAxis(Vector3.Up(), Angle.FromDegrees(-90));\r\n const scale = new Vector3(2, 2, 2);\r\n const matrix = Matrix.Compose(scale, rot, pos);\r\n\r\n const transformed = Vector3.Transform(new Vector3(2, 1, -1), matrix);\r\n const expected = new Vector3(7, 2, 4);\r\n\r\n expect(Vector3.Close(transformed, expected)).toEqual(true);\r\n });\r\n\r\n it(\"Gets the Data Transfer Object\", () => {\r\n const vec = new Vector3(1, 2, 3);\r\n\r\n expect(vec.dto).toEqual({\r\n x: 1,\r\n y: 2,\r\n z: 3,\r\n });\r\n });\r\n\r\n it(\"Makes a vector from a DTO\", () => {\r\n const vec = Vector3.FromDTO({\r\n x: 1,\r\n y: 2,\r\n z: 3,\r\n });\r\n\r\n expect(vec.x).toEqual(1);\r\n expect(vec.y).toEqual(2);\r\n expect(vec.z).toEqual(3);\r\n });\r\n});\r\n"]}