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