@vived/core 1.2.2 → 1.2.4
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/dist/cjs/AppObject/AppObject.js +59 -0
- package/dist/cjs/AppObject/AppObject.js.map +1 -0
- package/dist/cjs/AppObject/AppObject.test.js +113 -0
- package/dist/cjs/AppObject/AppObject.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectComponent.js +82 -0
- package/dist/cjs/AppObject/AppObjectComponent.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectComponent.test.js +132 -0
- package/dist/cjs/AppObject/AppObjectComponent.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectController.js +12 -0
- package/dist/cjs/AppObject/AppObjectController.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntity.js +38 -0
- package/dist/cjs/AppObject/AppObjectEntity.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntity.test.js +108 -0
- package/dist/cjs/AppObject/AppObjectEntity.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.js +56 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +149 -0
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectPM.js +40 -0
- package/dist/cjs/AppObject/AppObjectPM.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectPM.test.js +103 -0
- package/dist/cjs/AppObject/AppObjectPM.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectRepo.js +133 -0
- package/dist/cjs/AppObject/AppObjectRepo.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectRepo.test.js +213 -0
- package/dist/cjs/AppObject/AppObjectRepo.test.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectUC.js +12 -0
- package/dist/cjs/AppObject/AppObjectUC.js.map +1 -0
- package/dist/cjs/AppObject/AppObjectView.js +12 -0
- package/dist/cjs/AppObject/AppObjectView.js.map +1 -0
- package/dist/cjs/AppObject/getSingletonComponent.js +7 -0
- package/dist/cjs/AppObject/getSingletonComponent.js.map +1 -0
- package/dist/cjs/AppObject/getSingletonComponent.test.js +13 -0
- package/dist/cjs/AppObject/getSingletonComponent.test.js.map +1 -0
- package/dist/cjs/AppObject/index.js +27 -0
- package/dist/cjs/AppObject/index.js.map +1 -0
- package/dist/cjs/AppObject/printAppObjectDetails.js +18 -0
- package/dist/cjs/AppObject/printAppObjectDetails.js.map +1 -0
- package/dist/cjs/Entities/MemoizedAngle.js +23 -0
- package/dist/cjs/Entities/MemoizedAngle.js.map +1 -0
- package/dist/cjs/Entities/MemoizedAngle.test.js +30 -0
- package/dist/cjs/Entities/MemoizedAngle.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedBoolean.js +23 -0
- package/dist/cjs/Entities/MemoizedBoolean.js.map +1 -0
- package/dist/cjs/Entities/MemoizedBoolean.test.js +34 -0
- package/dist/cjs/Entities/MemoizedBoolean.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedColor.js +24 -0
- package/dist/cjs/Entities/MemoizedColor.js.map +1 -0
- package/dist/cjs/Entities/MemoizedColor.test.js +32 -0
- package/dist/cjs/Entities/MemoizedColor.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedNumber.js +23 -0
- package/dist/cjs/Entities/MemoizedNumber.js.map +1 -0
- package/dist/cjs/Entities/MemoizedNumber.test.js +29 -0
- package/dist/cjs/Entities/MemoizedNumber.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedQuaternion.js +24 -0
- package/dist/cjs/Entities/MemoizedQuaternion.js.map +1 -0
- package/dist/cjs/Entities/MemoizedQuaternion.test.js +32 -0
- package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedString.js +23 -0
- package/dist/cjs/Entities/MemoizedString.js.map +1 -0
- package/dist/cjs/Entities/MemoizedString.test.js +29 -0
- package/dist/cjs/Entities/MemoizedString.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector2.js +24 -0
- package/dist/cjs/Entities/MemoizedVector2.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector2.test.js +32 -0
- package/dist/cjs/Entities/MemoizedVector2.test.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector3.js +24 -0
- package/dist/cjs/Entities/MemoizedVector3.js.map +1 -0
- package/dist/cjs/Entities/MemoizedVector3.test.js +32 -0
- package/dist/cjs/Entities/MemoizedVector3.test.js.map +1 -0
- package/dist/cjs/Entities/ObservableEntity.js +20 -0
- package/dist/cjs/Entities/ObservableEntity.js.map +1 -0
- package/dist/cjs/Entities/ObservableEntity.test.js +25 -0
- package/dist/cjs/Entities/ObservableEntity.test.js.map +1 -0
- package/dist/cjs/Entities/ObserverList.js +27 -0
- package/dist/cjs/Entities/ObserverList.js.map +1 -0
- package/dist/cjs/Entities/ObserverList.test.js +44 -0
- package/dist/cjs/Entities/ObserverList.test.js.map +1 -0
- package/dist/cjs/Entities/RangedNumber.js +36 -0
- package/dist/cjs/Entities/RangedNumber.js.map +1 -0
- package/dist/cjs/Entities/RangedNumber.test.js +96 -0
- package/dist/cjs/Entities/RangedNumber.test.js.map +1 -0
- package/dist/cjs/Entities/index.js +28 -0
- package/dist/cjs/Entities/index.js.map +1 -0
- package/dist/cjs/Types/AppBoundary.js +3 -0
- package/dist/cjs/Types/AppBoundary.js.map +1 -0
- package/dist/cjs/Types/EaseFn.js +3 -0
- package/dist/cjs/Types/EaseFn.js.map +1 -0
- package/dist/cjs/Types/PmAdapter.js +3 -0
- package/dist/cjs/Types/PmAdapter.js.map +1 -0
- package/dist/cjs/Types/SingletonPmAdapter.js +3 -0
- package/dist/cjs/Types/SingletonPmAdapter.js.map +1 -0
- package/dist/cjs/Types/index.js +21 -0
- package/dist/cjs/Types/index.js.map +1 -0
- package/dist/cjs/Utilities/LengthConverters.js +21 -0
- package/dist/cjs/Utilities/LengthConverters.js.map +1 -0
- package/dist/cjs/Utilities/LengthConverters.test.js +24 -0
- package/dist/cjs/Utilities/LengthConverters.test.js.map +1 -0
- package/dist/cjs/Utilities/LerpNumber.js +85 -0
- package/dist/cjs/Utilities/LerpNumber.js.map +1 -0
- package/dist/cjs/Utilities/LerpNumber.test.js +90 -0
- package/dist/cjs/Utilities/LerpNumber.test.js.map +1 -0
- package/dist/cjs/Utilities/degreesToRadians.js +7 -0
- package/dist/cjs/Utilities/degreesToRadians.js.map +1 -0
- package/dist/cjs/Utilities/degreesToRadians.test.js +9 -0
- package/dist/cjs/Utilities/degreesToRadians.test.js.map +1 -0
- package/dist/cjs/Utilities/easeFunctions.js +208 -0
- package/dist/cjs/Utilities/easeFunctions.js.map +1 -0
- package/dist/cjs/Utilities/easeFunctions.test.js +209 -0
- package/dist/cjs/Utilities/easeFunctions.test.js.map +1 -0
- package/dist/cjs/Utilities/generateUniqueID.js +8 -0
- package/dist/cjs/Utilities/generateUniqueID.js.map +1 -0
- package/dist/cjs/Utilities/index.js +22 -0
- package/dist/cjs/Utilities/index.js.map +1 -0
- package/dist/cjs/Utilities/interpolateNumber.js +18 -0
- package/dist/cjs/Utilities/interpolateNumber.js.map +1 -0
- package/dist/cjs/Utilities/interpolateNumber.test.js +26 -0
- package/dist/cjs/Utilities/interpolateNumber.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Angle.js +47 -0
- package/dist/cjs/ValueObjects/Angle.js.map +1 -0
- package/dist/cjs/ValueObjects/Angle.test.js +28 -0
- package/dist/cjs/ValueObjects/Angle.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Color.js +859 -0
- package/dist/cjs/ValueObjects/Color.js.map +1 -0
- package/dist/cjs/ValueObjects/Color.test.js +147 -0
- package/dist/cjs/ValueObjects/Color.test.js.map +1 -0
- package/dist/cjs/ValueObjects/LineSegment2D.js +72 -0
- package/dist/cjs/ValueObjects/LineSegment2D.js.map +1 -0
- package/dist/cjs/ValueObjects/LineSegment2D.test.js +102 -0
- package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Matrix.js +466 -0
- package/dist/cjs/ValueObjects/Matrix.js.map +1 -0
- package/dist/cjs/ValueObjects/Matrix.test.js +385 -0
- package/dist/cjs/ValueObjects/Matrix.test.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricLine.js +77 -0
- package/dist/cjs/ValueObjects/ParametricLine.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricLine.test.js +126 -0
- package/dist/cjs/ValueObjects/ParametricLine.test.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricPlane.js +65 -0
- package/dist/cjs/ValueObjects/ParametricPlane.js.map +1 -0
- package/dist/cjs/ValueObjects/ParametricPlane.test.js +101 -0
- package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Quaternion.js +290 -0
- package/dist/cjs/ValueObjects/Quaternion.js.map +1 -0
- package/dist/cjs/ValueObjects/Quaternion.test.js +240 -0
- package/dist/cjs/ValueObjects/Quaternion.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Rectangle.js +24 -0
- package/dist/cjs/ValueObjects/Rectangle.js.map +1 -0
- package/dist/cjs/ValueObjects/Rectangle.test.js +32 -0
- package/dist/cjs/ValueObjects/Rectangle.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector2.js +184 -0
- package/dist/cjs/ValueObjects/Vector2.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector2.test.js +136 -0
- package/dist/cjs/ValueObjects/Vector2.test.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector3.js +231 -0
- package/dist/cjs/ValueObjects/Vector3.js.map +1 -0
- package/dist/cjs/ValueObjects/Vector3.test.js +188 -0
- package/dist/cjs/ValueObjects/Vector3.test.js.map +1 -0
- package/dist/cjs/ValueObjects/index.js +27 -0
- package/dist/cjs/ValueObjects/index.js.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/AppObject/AppObject.js +54 -0
- package/dist/esm/AppObject/AppObject.js.map +1 -0
- package/dist/esm/AppObject/AppObject.test.js +110 -0
- package/dist/esm/AppObject/AppObject.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectComponent.js +78 -0
- package/dist/esm/AppObject/AppObjectComponent.js.map +1 -0
- package/dist/esm/AppObject/AppObjectComponent.test.js +130 -0
- package/dist/esm/AppObject/AppObjectComponent.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectController.js +8 -0
- package/dist/esm/AppObject/AppObjectController.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntity.js +34 -0
- package/dist/esm/AppObject/AppObjectEntity.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntity.test.js +106 -0
- package/dist/esm/AppObject/AppObjectEntity.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.js +52 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.js.map +1 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.test.js +147 -0
- package/dist/esm/AppObject/AppObjectEntityRepo.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectPM.js +36 -0
- package/dist/esm/AppObject/AppObjectPM.js.map +1 -0
- package/dist/esm/AppObject/AppObjectPM.test.js +101 -0
- package/dist/esm/AppObject/AppObjectPM.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectRepo.js +128 -0
- package/dist/esm/AppObject/AppObjectRepo.js.map +1 -0
- package/dist/esm/AppObject/AppObjectRepo.test.js +211 -0
- package/dist/esm/AppObject/AppObjectRepo.test.js.map +1 -0
- package/dist/esm/AppObject/AppObjectUC.js +8 -0
- package/dist/esm/AppObject/AppObjectUC.js.map +1 -0
- package/dist/esm/AppObject/AppObjectView.js +8 -0
- package/dist/esm/AppObject/AppObjectView.js.map +1 -0
- package/dist/esm/AppObject/getSingletonComponent.js +4 -0
- package/dist/esm/AppObject/getSingletonComponent.js.map +1 -0
- package/dist/esm/AppObject/getSingletonComponent.test.js +11 -0
- package/dist/esm/AppObject/getSingletonComponent.test.js.map +1 -0
- package/dist/esm/AppObject/index.js +11 -0
- package/dist/esm/AppObject/index.js.map +1 -0
- package/dist/esm/AppObject/printAppObjectDetails.js +15 -0
- package/dist/esm/AppObject/printAppObjectDetails.js.map +1 -0
- package/dist/esm/Entities/MemoizedAngle.js +19 -0
- package/dist/esm/Entities/MemoizedAngle.js.map +1 -0
- package/dist/esm/Entities/MemoizedAngle.test.js +28 -0
- package/dist/esm/Entities/MemoizedAngle.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedBoolean.js +19 -0
- package/dist/esm/Entities/MemoizedBoolean.js.map +1 -0
- package/dist/esm/Entities/MemoizedBoolean.test.js +32 -0
- package/dist/esm/Entities/MemoizedBoolean.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedColor.js +20 -0
- package/dist/esm/Entities/MemoizedColor.js.map +1 -0
- package/dist/esm/Entities/MemoizedColor.test.js +30 -0
- package/dist/esm/Entities/MemoizedColor.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedNumber.js +19 -0
- package/dist/esm/Entities/MemoizedNumber.js.map +1 -0
- package/dist/esm/Entities/MemoizedNumber.test.js +27 -0
- package/dist/esm/Entities/MemoizedNumber.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedQuaternion.js +20 -0
- package/dist/esm/Entities/MemoizedQuaternion.js.map +1 -0
- package/dist/esm/Entities/MemoizedQuaternion.test.js +30 -0
- package/dist/esm/Entities/MemoizedQuaternion.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedString.js +19 -0
- package/dist/esm/Entities/MemoizedString.js.map +1 -0
- package/dist/esm/Entities/MemoizedString.test.js +27 -0
- package/dist/esm/Entities/MemoizedString.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector2.js +20 -0
- package/dist/esm/Entities/MemoizedVector2.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector2.test.js +30 -0
- package/dist/esm/Entities/MemoizedVector2.test.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector3.js +20 -0
- package/dist/esm/Entities/MemoizedVector3.js.map +1 -0
- package/dist/esm/Entities/MemoizedVector3.test.js +30 -0
- package/dist/esm/Entities/MemoizedVector3.test.js.map +1 -0
- package/dist/esm/Entities/ObservableEntity.js +16 -0
- package/dist/esm/Entities/ObservableEntity.js.map +1 -0
- package/dist/esm/Entities/ObservableEntity.test.js +23 -0
- package/dist/esm/Entities/ObservableEntity.test.js.map +1 -0
- package/dist/esm/Entities/ObserverList.js +23 -0
- package/dist/esm/Entities/ObserverList.js.map +1 -0
- package/dist/esm/Entities/ObserverList.test.js +42 -0
- package/dist/esm/Entities/ObserverList.test.js.map +1 -0
- package/dist/esm/Entities/RangedNumber.js +32 -0
- package/dist/esm/Entities/RangedNumber.js.map +1 -0
- package/dist/esm/Entities/RangedNumber.test.js +94 -0
- package/dist/esm/Entities/RangedNumber.test.js.map +1 -0
- package/{src/Entities/index.ts → dist/esm/Entities/index.js} +12 -11
- package/dist/esm/Entities/index.js.map +1 -0
- package/dist/esm/Types/AppBoundary.js +2 -0
- package/dist/esm/Types/AppBoundary.js.map +1 -0
- package/dist/esm/Types/EaseFn.js +2 -0
- package/dist/esm/Types/EaseFn.js.map +1 -0
- package/dist/esm/Types/PmAdapter.js +2 -0
- package/dist/esm/Types/PmAdapter.js.map +1 -0
- package/dist/esm/Types/SingletonPmAdapter.js +2 -0
- package/dist/esm/Types/SingletonPmAdapter.js.map +1 -0
- package/{src/Types/index.ts → dist/esm/Types/index.js} +5 -4
- package/dist/esm/Types/index.js.map +1 -0
- package/dist/esm/Utilities/LengthConverters.js +15 -0
- package/dist/esm/Utilities/LengthConverters.js.map +1 -0
- package/dist/esm/Utilities/LengthConverters.test.js +22 -0
- package/dist/esm/Utilities/LengthConverters.test.js.map +1 -0
- package/dist/esm/Utilities/LerpNumber.js +81 -0
- package/dist/esm/Utilities/LerpNumber.js.map +1 -0
- package/dist/esm/Utilities/LerpNumber.test.js +88 -0
- package/dist/esm/Utilities/LerpNumber.test.js.map +1 -0
- package/dist/esm/Utilities/degreesToRadians.js +4 -0
- package/dist/esm/Utilities/degreesToRadians.js.map +1 -0
- package/dist/esm/Utilities/degreesToRadians.test.js +7 -0
- package/dist/esm/Utilities/degreesToRadians.test.js.map +1 -0
- package/dist/esm/Utilities/easeFunctions.js +183 -0
- package/dist/esm/Utilities/easeFunctions.js.map +1 -0
- package/dist/esm/Utilities/easeFunctions.test.js +207 -0
- package/dist/esm/Utilities/easeFunctions.test.js.map +1 -0
- package/dist/esm/Utilities/generateUniqueID.js +5 -0
- package/dist/esm/Utilities/generateUniqueID.js.map +1 -0
- package/{src/Utilities/index.ts → dist/esm/Utilities/index.js} +6 -6
- package/dist/esm/Utilities/index.js.map +1 -0
- package/dist/esm/Utilities/interpolateNumber.js +15 -0
- package/dist/esm/Utilities/interpolateNumber.js.map +1 -0
- package/dist/esm/Utilities/interpolateNumber.test.js +24 -0
- package/dist/esm/Utilities/interpolateNumber.test.js.map +1 -0
- package/dist/esm/ValueObjects/Angle.js +43 -0
- package/dist/esm/ValueObjects/Angle.js.map +1 -0
- package/dist/esm/ValueObjects/Angle.test.js +26 -0
- package/dist/esm/ValueObjects/Angle.test.js.map +1 -0
- package/dist/esm/ValueObjects/Color.js +855 -0
- package/dist/esm/ValueObjects/Color.js.map +1 -0
- package/dist/esm/ValueObjects/Color.test.js +145 -0
- package/dist/esm/ValueObjects/Color.test.js.map +1 -0
- package/dist/esm/ValueObjects/LineSegment2D.js +68 -0
- package/dist/esm/ValueObjects/LineSegment2D.js.map +1 -0
- package/dist/esm/ValueObjects/LineSegment2D.test.js +100 -0
- package/dist/esm/ValueObjects/LineSegment2D.test.js.map +1 -0
- package/dist/esm/ValueObjects/Matrix.js +462 -0
- package/dist/esm/ValueObjects/Matrix.js.map +1 -0
- package/dist/esm/ValueObjects/Matrix.test.js +383 -0
- package/dist/esm/ValueObjects/Matrix.test.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricLine.js +73 -0
- package/dist/esm/ValueObjects/ParametricLine.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricLine.test.js +124 -0
- package/dist/esm/ValueObjects/ParametricLine.test.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricPlane.js +61 -0
- package/dist/esm/ValueObjects/ParametricPlane.js.map +1 -0
- package/dist/esm/ValueObjects/ParametricPlane.test.js +99 -0
- package/dist/esm/ValueObjects/ParametricPlane.test.js.map +1 -0
- package/dist/esm/ValueObjects/Quaternion.js +286 -0
- package/dist/esm/ValueObjects/Quaternion.js.map +1 -0
- package/dist/esm/ValueObjects/Quaternion.test.js +238 -0
- package/dist/esm/ValueObjects/Quaternion.test.js.map +1 -0
- package/dist/esm/ValueObjects/Rectangle.js +20 -0
- package/dist/esm/ValueObjects/Rectangle.js.map +1 -0
- package/dist/esm/ValueObjects/Rectangle.test.js +30 -0
- package/dist/esm/ValueObjects/Rectangle.test.js.map +1 -0
- package/dist/esm/ValueObjects/Vector2.js +180 -0
- package/dist/esm/ValueObjects/Vector2.js.map +1 -0
- package/dist/esm/ValueObjects/Vector2.test.js +134 -0
- package/dist/esm/ValueObjects/Vector2.test.js.map +1 -0
- package/dist/esm/ValueObjects/Vector3.js +227 -0
- package/dist/esm/ValueObjects/Vector3.js.map +1 -0
- package/dist/esm/ValueObjects/Vector3.test.js +186 -0
- package/dist/esm/ValueObjects/Vector3.test.js.map +1 -0
- package/{src/ValueObjects/index.ts → dist/esm/ValueObjects/index.js} +11 -14
- package/dist/esm/ValueObjects/index.js.map +1 -0
- package/{src/index.ts → dist/esm/index.js} +6 -5
- package/dist/esm/index.js.map +1 -0
- package/dist/types/AppObject/AppObject.d.ts +15 -0
- package/dist/types/AppObject/AppObject.d.ts.map +1 -0
- package/dist/types/AppObject/AppObject.test.d.ts +7 -0
- package/dist/types/AppObject/AppObject.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectComponent.d.ts +26 -0
- package/dist/types/AppObject/AppObjectComponent.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectComponent.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectComponent.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectController.d.ts +5 -0
- package/dist/types/AppObject/AppObjectController.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntity.d.ts +16 -0
- package/dist/types/AppObject/AppObjectEntity.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntity.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectEntity.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntityRepo.d.ts +16 -0
- package/dist/types/AppObject/AppObjectEntityRepo.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectPM.d.ts +13 -0
- package/dist/types/AppObject/AppObjectPM.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectPM.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectPM.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectRepo.d.ts +26 -0
- package/dist/types/AppObject/AppObjectRepo.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectRepo.test.d.ts +2 -0
- package/dist/types/AppObject/AppObjectRepo.test.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectUC.d.ts +5 -0
- package/dist/types/AppObject/AppObjectUC.d.ts.map +1 -0
- package/dist/types/AppObject/AppObjectView.d.ts +5 -0
- package/dist/types/AppObject/AppObjectView.d.ts.map +1 -0
- package/dist/types/AppObject/getSingletonComponent.d.ts +4 -0
- package/dist/types/AppObject/getSingletonComponent.d.ts.map +1 -0
- package/dist/types/AppObject/getSingletonComponent.test.d.ts +2 -0
- package/dist/types/AppObject/getSingletonComponent.test.d.ts.map +1 -0
- package/dist/types/AppObject/index.d.ts +11 -0
- package/dist/types/AppObject/index.d.ts.map +1 -0
- package/dist/types/AppObject/printAppObjectDetails.d.ts +3 -0
- package/dist/types/AppObject/printAppObjectDetails.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedAngle.d.ts +10 -0
- package/dist/types/Entities/MemoizedAngle.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedAngle.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedAngle.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedBoolean.d.ts +9 -0
- package/dist/types/Entities/MemoizedBoolean.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedBoolean.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedBoolean.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedColor.d.ts +10 -0
- package/dist/types/Entities/MemoizedColor.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedColor.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedColor.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedNumber.d.ts +9 -0
- package/dist/types/Entities/MemoizedNumber.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedNumber.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedNumber.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedQuaternion.d.ts +10 -0
- package/dist/types/Entities/MemoizedQuaternion.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedQuaternion.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedQuaternion.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedString.d.ts +9 -0
- package/dist/types/Entities/MemoizedString.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedString.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedString.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector2.d.ts +10 -0
- package/dist/types/Entities/MemoizedVector2.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector2.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedVector2.test.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector3.d.ts +10 -0
- package/dist/types/Entities/MemoizedVector3.d.ts.map +1 -0
- package/dist/types/Entities/MemoizedVector3.test.d.ts +2 -0
- package/dist/types/Entities/MemoizedVector3.test.d.ts.map +1 -0
- package/dist/types/Entities/ObservableEntity.d.ts +8 -0
- package/dist/types/Entities/ObservableEntity.d.ts.map +1 -0
- package/dist/types/Entities/ObservableEntity.test.d.ts +2 -0
- package/dist/types/Entities/ObservableEntity.test.d.ts.map +1 -0
- package/dist/types/Entities/ObserverList.d.ts +8 -0
- package/dist/types/Entities/ObserverList.d.ts.map +1 -0
- package/dist/types/Entities/ObserverList.test.d.ts +2 -0
- package/dist/types/Entities/ObserverList.test.d.ts.map +1 -0
- package/dist/types/Entities/RangedNumber.d.ts +17 -0
- package/dist/types/Entities/RangedNumber.d.ts.map +1 -0
- package/dist/types/Entities/RangedNumber.test.d.ts +2 -0
- package/dist/types/Entities/RangedNumber.test.d.ts.map +1 -0
- package/dist/types/Entities/index.d.ts +12 -0
- package/dist/types/Entities/index.d.ts.map +1 -0
- package/dist/types/Types/AppBoundary.d.ts +11 -0
- package/dist/types/Types/AppBoundary.d.ts.map +1 -0
- package/dist/types/Types/EaseFn.d.ts +2 -0
- package/dist/types/Types/EaseFn.d.ts.map +1 -0
- package/dist/types/Types/PmAdapter.d.ts +7 -0
- package/dist/types/Types/PmAdapter.d.ts.map +1 -0
- package/dist/types/Types/SingletonPmAdapter.d.ts +7 -0
- package/dist/types/Types/SingletonPmAdapter.d.ts.map +1 -0
- package/dist/types/Types/index.d.ts +5 -0
- package/dist/types/Types/index.d.ts.map +1 -0
- package/dist/types/Utilities/LengthConverters.d.ts +5 -0
- package/dist/types/Utilities/LengthConverters.d.ts.map +1 -0
- package/dist/types/Utilities/LengthConverters.test.d.ts +2 -0
- package/dist/types/Utilities/LengthConverters.test.d.ts.map +1 -0
- package/dist/types/Utilities/LerpNumber.d.ts +57 -0
- package/dist/types/Utilities/LerpNumber.d.ts.map +1 -0
- package/dist/types/Utilities/LerpNumber.test.d.ts +2 -0
- package/dist/types/Utilities/LerpNumber.test.d.ts.map +1 -0
- package/dist/types/Utilities/degreesToRadians.d.ts +2 -0
- package/dist/types/Utilities/degreesToRadians.d.ts.map +1 -0
- package/dist/types/Utilities/degreesToRadians.test.d.ts +2 -0
- package/dist/types/Utilities/degreesToRadians.test.d.ts.map +1 -0
- package/dist/types/Utilities/easeFunctions.d.ts +24 -0
- package/dist/types/Utilities/easeFunctions.d.ts.map +1 -0
- package/dist/types/Utilities/easeFunctions.test.d.ts +2 -0
- package/dist/types/Utilities/easeFunctions.test.d.ts.map +1 -0
- package/dist/types/Utilities/generateUniqueID.d.ts +2 -0
- package/dist/types/Utilities/generateUniqueID.d.ts.map +1 -0
- package/dist/types/Utilities/index.d.ts +6 -0
- package/dist/types/Utilities/index.d.ts.map +1 -0
- package/dist/types/Utilities/interpolateNumber.d.ts +2 -0
- package/dist/types/Utilities/interpolateNumber.d.ts.map +1 -0
- package/dist/types/Utilities/interpolateNumber.test.d.ts +2 -0
- package/dist/types/Utilities/interpolateNumber.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Angle.d.ts +27 -0
- package/dist/types/ValueObjects/Angle.d.ts.map +1 -0
- package/dist/types/ValueObjects/Angle.test.d.ts +2 -0
- package/dist/types/ValueObjects/Angle.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Color.d.ts +83 -0
- package/dist/types/ValueObjects/Color.d.ts.map +1 -0
- package/dist/types/ValueObjects/Color.test.d.ts +2 -0
- package/dist/types/ValueObjects/Color.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/LineSegment2D.d.ts +12 -0
- package/dist/types/ValueObjects/LineSegment2D.d.ts.map +1 -0
- package/dist/types/ValueObjects/LineSegment2D.test.d.ts +2 -0
- package/dist/types/ValueObjects/LineSegment2D.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Matrix.d.ts +124 -0
- package/dist/types/ValueObjects/Matrix.d.ts.map +1 -0
- package/dist/types/ValueObjects/Matrix.test.d.ts +2 -0
- package/dist/types/ValueObjects/Matrix.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricLine.d.ts +31 -0
- package/dist/types/ValueObjects/ParametricLine.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricLine.test.d.ts +2 -0
- package/dist/types/ValueObjects/ParametricLine.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricPlane.d.ts +21 -0
- package/dist/types/ValueObjects/ParametricPlane.d.ts.map +1 -0
- package/dist/types/ValueObjects/ParametricPlane.test.d.ts +2 -0
- package/dist/types/ValueObjects/ParametricPlane.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Quaternion.d.ts +113 -0
- package/dist/types/ValueObjects/Quaternion.d.ts.map +1 -0
- package/dist/types/ValueObjects/Quaternion.test.d.ts +2 -0
- package/dist/types/ValueObjects/Quaternion.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Rectangle.d.ts +16 -0
- package/dist/types/ValueObjects/Rectangle.d.ts.map +1 -0
- package/dist/types/ValueObjects/Rectangle.test.d.ts +2 -0
- package/dist/types/ValueObjects/Rectangle.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector2.d.ts +121 -0
- package/dist/types/ValueObjects/Vector2.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector2.test.d.ts +2 -0
- package/dist/types/ValueObjects/Vector2.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector3.d.ts +150 -0
- package/dist/types/ValueObjects/Vector3.d.ts.map +1 -0
- package/dist/types/ValueObjects/Vector3.test.d.ts +2 -0
- package/dist/types/ValueObjects/Vector3.test.d.ts.map +1 -0
- package/dist/types/ValueObjects/index.d.ts +11 -0
- package/dist/types/ValueObjects/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +5 -2
- package/babel.config.js +0 -12
- package/jestconfig.json +0 -10
- package/src/AppObject/AppObject.test.ts +0 -158
- package/src/AppObject/AppObject.ts +0 -83
- package/src/AppObject/AppObjectComponent.test.ts +0 -219
- package/src/AppObject/AppObjectComponent.ts +0 -100
- package/src/AppObject/AppObjectController.ts +0 -8
- package/src/AppObject/AppObjectEntity.test.ts +0 -151
- package/src/AppObject/AppObjectEntity.ts +0 -45
- package/src/AppObject/AppObjectEntityRepo.test.ts +0 -211
- package/src/AppObject/AppObjectEntityRepo.ts +0 -61
- package/src/AppObject/AppObjectPM.test.ts +0 -152
- package/src/AppObject/AppObjectPM.ts +0 -43
- package/src/AppObject/AppObjectRepo.test.ts +0 -317
- package/src/AppObject/AppObjectRepo.ts +0 -203
- package/src/AppObject/AppObjectUC.ts +0 -5
- package/src/AppObject/AppObjectView.ts +0 -5
- package/src/AppObject/getSingletonComponent.test.ts +0 -17
- package/src/AppObject/getSingletonComponent.ts +0 -9
- package/src/AppObject/index.ts +0 -10
- package/src/AppObject/printAppObjectDetails.ts +0 -17
- package/src/Entities/MemoizedAngle.test.ts +0 -38
- package/src/Entities/MemoizedAngle.ts +0 -25
- package/src/Entities/MemoizedBoolean.test.ts +0 -45
- package/src/Entities/MemoizedBoolean.ts +0 -23
- package/src/Entities/MemoizedColor.test.ts +0 -39
- package/src/Entities/MemoizedColor.ts +0 -27
- package/src/Entities/MemoizedNumber.test.ts +0 -37
- package/src/Entities/MemoizedNumber.ts +0 -23
- package/src/Entities/MemoizedQuaternion.test.ts +0 -39
- package/src/Entities/MemoizedQuaternion.ts +0 -27
- package/src/Entities/MemoizedString.test.ts +0 -37
- package/src/Entities/MemoizedString.ts +0 -23
- package/src/Entities/MemoizedVector2.test.ts +0 -39
- package/src/Entities/MemoizedVector2.ts +0 -27
- package/src/Entities/MemoizedVector3.test.ts +0 -39
- package/src/Entities/MemoizedVector3.ts +0 -27
- package/src/Entities/ObservableEntity.test.ts +0 -28
- package/src/Entities/ObservableEntity.ts +0 -17
- package/src/Entities/ObserverList.test.ts +0 -61
- package/src/Entities/ObserverList.ts +0 -24
- package/src/Entities/RangedNumber.test.ts +0 -118
- package/src/Entities/RangedNumber.ts +0 -45
- package/src/Types/AppBoundary.ts +0 -13
- package/src/Types/EaseFn.ts +0 -1
- package/src/Types/PmAdapter.ts +0 -15
- package/src/Types/SingletonPmAdapter.ts +0 -7
- package/src/Utilities/LengthConverters.test.ts +0 -30
- package/src/Utilities/LengthConverters.ts +0 -18
- package/src/Utilities/LerpNumber.test.ts +0 -109
- package/src/Utilities/LerpNumber.ts +0 -109
- package/src/Utilities/degreesToRadians.test.ts +0 -8
- package/src/Utilities/degreesToRadians.ts +0 -3
- package/src/Utilities/easeFunctions.test.ts +0 -251
- package/src/Utilities/easeFunctions.ts +0 -180
- package/src/Utilities/generateUniqueID.ts +0 -5
- package/src/Utilities/interpolateNumber.test.ts +0 -28
- package/src/Utilities/interpolateNumber.ts +0 -21
- package/src/ValueObjects/Angle.test.ts +0 -30
- package/src/ValueObjects/Angle.ts +0 -47
- package/src/ValueObjects/Color.test.ts +0 -181
- package/src/ValueObjects/Color.ts +0 -891
- package/src/ValueObjects/LineSegment2D.test.ts +0 -144
- package/src/ValueObjects/LineSegment2D.ts +0 -93
- package/src/ValueObjects/Matrix.test.ts +0 -498
- package/src/ValueObjects/Matrix.ts +0 -567
- package/src/ValueObjects/ParametricLine.test.ts +0 -155
- package/src/ValueObjects/ParametricLine.ts +0 -114
- package/src/ValueObjects/ParametricPlane.test.ts +0 -122
- package/src/ValueObjects/ParametricPlane.ts +0 -82
- package/src/ValueObjects/Quaternion.test.ts +0 -356
- package/src/ValueObjects/Quaternion.ts +0 -353
- package/src/ValueObjects/Rectangle.test.ts +0 -32
- package/src/ValueObjects/Rectangle.ts +0 -33
- package/src/ValueObjects/Vector2.test.ts +0 -167
- package/src/ValueObjects/Vector2.ts +0 -209
- package/src/ValueObjects/Vector3.test.ts +0 -228
- package/src/ValueObjects/Vector3.ts +0 -269
- package/tsconfig.build.json +0 -7
- package/tsconfig.cjs.json +0 -9
- package/tsconfig.esm.json +0 -12
- package/tsconfig.json +0 -19
- package/tslint.json +0 -11
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Vector3 } from "../ValueObjects/Vector3";
|
|
2
|
-
|
|
3
|
-
export interface LineParameters {
|
|
4
|
-
x0: number;
|
|
5
|
-
y0: number;
|
|
6
|
-
z0: number;
|
|
7
|
-
a: number;
|
|
8
|
-
b: number;
|
|
9
|
-
c: number;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class ParametricLine {
|
|
13
|
-
// See https://planetcalc.com/8253/
|
|
14
|
-
|
|
15
|
-
public static FromTwoPoint(p1: Vector3, p2: Vector3): ParametricLine {
|
|
16
|
-
const dir = Vector3.Subtract(p2, p1).unit;
|
|
17
|
-
return this.FromPointDirection(p1, dir);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
public static FromPointDirection(
|
|
21
|
-
point: Vector3,
|
|
22
|
-
direction: Vector3
|
|
23
|
-
): ParametricLine {
|
|
24
|
-
return new ParametricLine({
|
|
25
|
-
x0: point.x,
|
|
26
|
-
y0: point.y,
|
|
27
|
-
z0: point.z,
|
|
28
|
-
a: direction.x,
|
|
29
|
-
b: direction.y,
|
|
30
|
-
c: direction.z,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public static Forward(): ParametricLine {
|
|
35
|
-
const p = Vector3.Zero();
|
|
36
|
-
const d = new Vector3(0, 0, 1);
|
|
37
|
-
return this.FromPointDirection(p, d);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public static Backward(): ParametricLine {
|
|
41
|
-
const p = Vector3.Zero();
|
|
42
|
-
const d = new Vector3(0, 0, -1);
|
|
43
|
-
return this.FromPointDirection(p, d);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public static Up(): ParametricLine {
|
|
47
|
-
const p = Vector3.Zero();
|
|
48
|
-
const d = new Vector3(0, 1, 0);
|
|
49
|
-
return this.FromPointDirection(p, d);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public static Down(): ParametricLine {
|
|
53
|
-
const p = Vector3.Zero();
|
|
54
|
-
const d = new Vector3(0, -1, 0);
|
|
55
|
-
return this.FromPointDirection(p, d);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public static Left(): ParametricLine {
|
|
59
|
-
const p = Vector3.Zero();
|
|
60
|
-
const d = new Vector3(-1, 0, 0);
|
|
61
|
-
return this.FromPointDirection(p, d);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public static Right(): ParametricLine {
|
|
65
|
-
const p = Vector3.Zero();
|
|
66
|
-
const d = new Vector3(1, 0, 0);
|
|
67
|
-
return this.FromPointDirection(p, d);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
public static GetPointAtDistance(
|
|
71
|
-
line: ParametricLine,
|
|
72
|
-
distance: number
|
|
73
|
-
): Vector3 {
|
|
74
|
-
const x = line.x0 + line.a * distance;
|
|
75
|
-
const y = line.y0 + line.b * distance;
|
|
76
|
-
const z = line.z0 + line.c * distance;
|
|
77
|
-
|
|
78
|
-
return new Vector3(x, y, z);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
public static GetDistanceToPoint(
|
|
82
|
-
line: ParametricLine,
|
|
83
|
-
point: Vector3
|
|
84
|
-
): number {
|
|
85
|
-
return Vector3.Subtract(line.origin, point).magnitude;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
readonly x0: number;
|
|
89
|
-
readonly y0: number;
|
|
90
|
-
readonly z0: number;
|
|
91
|
-
readonly a: number;
|
|
92
|
-
readonly b: number;
|
|
93
|
-
readonly c: number;
|
|
94
|
-
|
|
95
|
-
get origin(): Vector3 {
|
|
96
|
-
return new Vector3(this.x0, this.y0, this.z0);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
get direction(): Vector3 {
|
|
100
|
-
return new Vector3(this.a, this.b, this.c);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
constructor(parameters: LineParameters) {
|
|
104
|
-
this.x0 = parameters.x0;
|
|
105
|
-
this.y0 = parameters.y0;
|
|
106
|
-
this.z0 = parameters.z0;
|
|
107
|
-
|
|
108
|
-
const dir = new Vector3(parameters.a, parameters.b, parameters.c).unit;
|
|
109
|
-
|
|
110
|
-
this.a = dir.x;
|
|
111
|
-
this.b = dir.y;
|
|
112
|
-
this.c = dir.z;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { ParametricLine } from "./ParametricLine";
|
|
2
|
-
import { ParametricPlane } from "./ParametricPlane";
|
|
3
|
-
import { Vector3 } from "../ValueObjects";
|
|
4
|
-
|
|
5
|
-
test("Setting from point and normal", () => {
|
|
6
|
-
const point = new Vector3(1, 2, 3);
|
|
7
|
-
const normal = new Vector3(4, 5, 6);
|
|
8
|
-
const plane = ParametricPlane.FromPointNormal(point, normal);
|
|
9
|
-
|
|
10
|
-
const parameters = plane.GetParameters();
|
|
11
|
-
|
|
12
|
-
const dot = Vector3.Dot(point, normal);
|
|
13
|
-
expect(parameters.a).toEqual(normal.x);
|
|
14
|
-
expect(parameters.b).toEqual(normal.y);
|
|
15
|
-
expect(parameters.c).toEqual(normal.z);
|
|
16
|
-
expect(parameters.d).toEqual(-dot);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
test("From three points", () => {
|
|
20
|
-
// From https://keisan.casio.com/exec/system/1223596129
|
|
21
|
-
const A = new Vector3(1, 2, -2);
|
|
22
|
-
const B = new Vector3(3, -2, 1);
|
|
23
|
-
const C = new Vector3(5, 1, -4);
|
|
24
|
-
|
|
25
|
-
const plane = ParametricPlane.FromThreePoints(A, B, C);
|
|
26
|
-
const parameters = plane.GetParameters();
|
|
27
|
-
|
|
28
|
-
expect(parameters.a).toEqual(11);
|
|
29
|
-
expect(parameters.b).toEqual(16);
|
|
30
|
-
expect(parameters.c).toEqual(14);
|
|
31
|
-
expect(parameters.d).toEqual(-15);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test("Intersection", () => {
|
|
35
|
-
const point = new Vector3(1, 1, 1);
|
|
36
|
-
const dir = new Vector3(1, 0, 0);
|
|
37
|
-
const line = ParametricLine.FromPointDirection(point, dir);
|
|
38
|
-
|
|
39
|
-
const plane1 = new Vector3(-1, 0, 0);
|
|
40
|
-
const plane2 = new Vector3(-1, 1, 0);
|
|
41
|
-
const plane3 = new Vector3(-1, 0, 1);
|
|
42
|
-
const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3);
|
|
43
|
-
|
|
44
|
-
const intersect = plane.intersectLine(line);
|
|
45
|
-
|
|
46
|
-
expect(intersect?.x).toBeCloseTo(-1);
|
|
47
|
-
expect(intersect?.y).toBeCloseTo(1);
|
|
48
|
-
expect(intersect?.z).toBeCloseTo(1);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
test("Intersection", () => {
|
|
52
|
-
// From http://www.ambrsoft.com/TrigoCalc/Plan3D/PlaneLineIntersection_.htm
|
|
53
|
-
|
|
54
|
-
const line1 = new Vector3(4, 1, 1);
|
|
55
|
-
const line2 = new Vector3(8, -2, -2);
|
|
56
|
-
const line = ParametricLine.FromTwoPoint(line1, line2);
|
|
57
|
-
|
|
58
|
-
const plane1 = new Vector3(-1, 2, 4);
|
|
59
|
-
const plane2 = new Vector3(2, 1, 3);
|
|
60
|
-
const plane3 = new Vector3(1, 3, 2);
|
|
61
|
-
const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3);
|
|
62
|
-
|
|
63
|
-
const intersect = plane.intersectLine(line);
|
|
64
|
-
|
|
65
|
-
expect(intersect?.x).toBeCloseTo(2.93);
|
|
66
|
-
expect(intersect?.y).toBeCloseTo(1.8);
|
|
67
|
-
expect(intersect?.z).toBeCloseTo(1.8);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
test("If parallel, intersect should come back undefined", () => {
|
|
71
|
-
const line1 = new Vector3(0, 1, 0);
|
|
72
|
-
const line2 = new Vector3(0, -1, 0);
|
|
73
|
-
const line = ParametricLine.FromTwoPoint(line1, line2); // Vertical line going through the origin
|
|
74
|
-
|
|
75
|
-
const plane1 = new Vector3(0, 0, 0);
|
|
76
|
-
const plane2 = new Vector3(0, 1, 0);
|
|
77
|
-
const plane3 = new Vector3(0, 0, 1);
|
|
78
|
-
const plane = ParametricPlane.FromThreePoints(plane1, plane2, plane3); // y-z plane
|
|
79
|
-
|
|
80
|
-
const intersect = plane.intersectLine(line);
|
|
81
|
-
|
|
82
|
-
expect(intersect).toBeUndefined();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test("XY Plane", () => {
|
|
86
|
-
const plane = ParametricPlane.XY();
|
|
87
|
-
expect(plane.GetParameters()).toEqual({
|
|
88
|
-
a: 0,
|
|
89
|
-
b: 0,
|
|
90
|
-
c: 1,
|
|
91
|
-
d: 0,
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
test("ZX Plane", () => {
|
|
96
|
-
const plane = ParametricPlane.ZX();
|
|
97
|
-
expect(plane.GetParameters()).toEqual({
|
|
98
|
-
a: 0,
|
|
99
|
-
b: 1,
|
|
100
|
-
c: 0,
|
|
101
|
-
d: 0,
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
test("YZ Plane", () => {
|
|
106
|
-
const plane = ParametricPlane.YZ();
|
|
107
|
-
expect(plane.GetParameters()).toEqual({
|
|
108
|
-
a: 1,
|
|
109
|
-
b: 0,
|
|
110
|
-
c: 0,
|
|
111
|
-
d: 0,
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
test("Check for equality", () => {
|
|
116
|
-
const point = new Vector3(1, 2, 3);
|
|
117
|
-
const normal = new Vector3(4, 5, 6);
|
|
118
|
-
const plane1 = ParametricPlane.FromPointNormal(point, normal);
|
|
119
|
-
const plane2 = ParametricPlane.FromPointNormal(point, normal);
|
|
120
|
-
|
|
121
|
-
expect(plane1).toEqual(plane2);
|
|
122
|
-
});
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { ParametricLine } from "./ParametricLine";
|
|
2
|
-
import { Vector3 } from "../ValueObjects/Vector3";
|
|
3
|
-
|
|
4
|
-
// Plane equation: a*x + b*y + c*x + d = 0;
|
|
5
|
-
|
|
6
|
-
export interface PlaneParameters {
|
|
7
|
-
a: number;
|
|
8
|
-
b: number;
|
|
9
|
-
c: number;
|
|
10
|
-
d: number;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export class ParametricPlane {
|
|
14
|
-
static FromPointNormal(point: Vector3, normal: Vector3): ParametricPlane {
|
|
15
|
-
return new ParametricPlane(point, normal);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
static FromThreePoints(A: Vector3, B: Vector3, C: Vector3): ParametricPlane {
|
|
19
|
-
const point = A;
|
|
20
|
-
const AB = Vector3.Subtract(B, A);
|
|
21
|
-
const AC = Vector3.Subtract(C, A);
|
|
22
|
-
const normal = Vector3.Cross(AB, AC);
|
|
23
|
-
|
|
24
|
-
return new ParametricPlane(point, normal);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
static XY(): ParametricPlane {
|
|
28
|
-
const p = Vector3.Zero();
|
|
29
|
-
const n = new Vector3(0, 0, 1);
|
|
30
|
-
return new ParametricPlane(p, n);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
static ZX(): ParametricPlane {
|
|
34
|
-
const p = Vector3.Zero();
|
|
35
|
-
const n = new Vector3(0, 1, 0);
|
|
36
|
-
return new ParametricPlane(p, n);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static YZ(): ParametricPlane {
|
|
40
|
-
const p = Vector3.Zero();
|
|
41
|
-
const n = new Vector3(1, 0, 0);
|
|
42
|
-
return new ParametricPlane(p, n);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
GetParameters(): PlaneParameters {
|
|
46
|
-
const a = this.normal.x;
|
|
47
|
-
const b = this.normal.y;
|
|
48
|
-
const c = this.normal.z;
|
|
49
|
-
let d = Vector3.Dot(this.point, this.normal);
|
|
50
|
-
|
|
51
|
-
if (d !== 0) {
|
|
52
|
-
d *= -1;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
a,
|
|
57
|
-
b,
|
|
58
|
-
c,
|
|
59
|
-
d,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public intersectLine(line: ParametricLine): Vector3 | undefined {
|
|
64
|
-
const { x0, y0, z0, a, b, c } = line;
|
|
65
|
-
const { a: A, b: B, c: C, d: D } = this.GetParameters();
|
|
66
|
-
|
|
67
|
-
const tNumerator = -(A * x0 + B * y0 + C * z0 + D);
|
|
68
|
-
const tDenominator = A * a + B * b + C * c;
|
|
69
|
-
|
|
70
|
-
if (tDenominator === 0) {
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const t = tNumerator / tDenominator;
|
|
75
|
-
|
|
76
|
-
const intersect = ParametricLine.GetPointAtDistance(line, t);
|
|
77
|
-
|
|
78
|
-
return intersect;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
constructor(private point: Vector3, private normal: Vector3) {}
|
|
82
|
-
}
|
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
import { Angle } from "./Angle";
|
|
2
|
-
import { Matrix } from "./Matrix";
|
|
3
|
-
import { Quaternion } from "./Quaternion";
|
|
4
|
-
import { Vector3 } from "./Vector3";
|
|
5
|
-
describe("Quaterion Value Object", () => {
|
|
6
|
-
it("Checks for equality", () => {
|
|
7
|
-
const quat1 = new Quaternion(1, 2, 3, 4);
|
|
8
|
-
const quat2 = new Quaternion(1, 2, 3, 4);
|
|
9
|
-
const quat3 = new Quaternion(10, 20, 30, 40);
|
|
10
|
-
|
|
11
|
-
expect(Quaternion.Equal(quat1, quat2)).toEqual(true);
|
|
12
|
-
expect(Quaternion.Equal(quat1, quat3)).toEqual(false);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it("Constructs a new quaternion from an array", () => {
|
|
16
|
-
const quat = 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
|
-
|
|
23
|
-
it("Constructs an identity quaternion", () => {
|
|
24
|
-
const quat = Quaternion.Identity();
|
|
25
|
-
expect(quat.x).toEqual(0);
|
|
26
|
-
expect(quat.y).toEqual(0);
|
|
27
|
-
expect(quat.z).toEqual(0);
|
|
28
|
-
expect(quat.w).toEqual(1);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("Equates two quaternions for testing", () => {
|
|
32
|
-
const quat1 = new Quaternion(1, 2, 3, 4);
|
|
33
|
-
const quat2 = new Quaternion(1, 2, 3, 4);
|
|
34
|
-
|
|
35
|
-
expect(quat1).toEqual(quat2);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("Returns an array", () => {
|
|
39
|
-
const quat1 = new Quaternion(1, 2, 3, 4);
|
|
40
|
-
expect(quat1.toArray()).toEqual([1, 2, 3, 4]);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("Multiplies two quaternions", () => {
|
|
44
|
-
// See https://www.omnicalculator.com/math/quaternion
|
|
45
|
-
const quat1 = new Quaternion(1, 2, 3, 4);
|
|
46
|
-
const quat2 = new Quaternion(5, 6, 7, 8);
|
|
47
|
-
const product = Quaternion.Multiply(quat1, quat2);
|
|
48
|
-
const expected = new Quaternion(24, 48, 48, -6);
|
|
49
|
-
expect(product).toEqual(expected);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("Inverts a quaternion", () => {
|
|
53
|
-
const quat1 = new Quaternion(1, 2, 3, 4);
|
|
54
|
-
const inverted = Quaternion.Inverse(quat1);
|
|
55
|
-
const expected = new Quaternion(-1, -2, -3, 4);
|
|
56
|
-
expect(inverted).toEqual(expected);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("Creates an Quaterion from an Axis and Angle", () => {
|
|
60
|
-
// See https://www.andre-gaschler.com/rotationconverter
|
|
61
|
-
const axis = new Vector3(1, 2, 3);
|
|
62
|
-
const angle = Angle.FromRadians(4);
|
|
63
|
-
const quat = Quaternion.FromAngleAxis(axis, angle);
|
|
64
|
-
|
|
65
|
-
expect(quat.x).toBeCloseTo(0.24302);
|
|
66
|
-
expect(quat.y).toBeCloseTo(0.4860399);
|
|
67
|
-
expect(quat.z).toBeCloseTo(0.7290599);
|
|
68
|
-
expect(quat.w).toBeCloseTo(-0.4161468);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it("Creates an Quaterion from a Yaw Pitch Roll", () => {
|
|
72
|
-
// Numbers are from the babylon playground
|
|
73
|
-
|
|
74
|
-
const yaw = Angle.FromRadians(1);
|
|
75
|
-
const pitch = Angle.FromRadians(2);
|
|
76
|
-
const roll = Angle.FromRadians(3);
|
|
77
|
-
const quat = Quaternion.FromYawPitchRoll(yaw, pitch, roll);
|
|
78
|
-
|
|
79
|
-
expect(quat.x).toBeCloseTo(0.310622);
|
|
80
|
-
expect(quat.y).toBeCloseTo(-0.71828);
|
|
81
|
-
expect(quat.z).toBeCloseTo(0.444435);
|
|
82
|
-
expect(quat.w).toBeCloseTo(0.4359528);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("Creates an Quaterion from Euler angles", () => {
|
|
86
|
-
// Numbers are from the babylon playground
|
|
87
|
-
|
|
88
|
-
const x = Angle.FromRadians(1);
|
|
89
|
-
const y = Angle.FromRadians(2);
|
|
90
|
-
const z = Angle.FromRadians(3);
|
|
91
|
-
const quat = Quaternion.FromEuler(x, y, z);
|
|
92
|
-
|
|
93
|
-
expect(quat.x).toBeCloseTo(0.754933);
|
|
94
|
-
expect(quat.y).toBeCloseTo(-0.206149);
|
|
95
|
-
expect(quat.z).toBeCloseTo(0.444435);
|
|
96
|
-
expect(quat.w).toBeCloseTo(0.4359528);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it("Slerps", () => {
|
|
100
|
-
// See https://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/index.htm
|
|
101
|
-
const q1 = new Quaternion(0.1, 0.2, 0.3, 0.9);
|
|
102
|
-
const q2 = new Quaternion(0.5, 0.8, 0.1, 0.4);
|
|
103
|
-
|
|
104
|
-
const initial = Quaternion.Slerp(q1, q2, 0);
|
|
105
|
-
expect(initial.x).toBeCloseTo(q1.x);
|
|
106
|
-
expect(initial.y).toBeCloseTo(q1.y);
|
|
107
|
-
expect(initial.z).toBeCloseTo(q1.z);
|
|
108
|
-
expect(initial.w).toBeCloseTo(q1.w);
|
|
109
|
-
|
|
110
|
-
const final = Quaternion.Slerp(q1, q2, 1);
|
|
111
|
-
expect(final.x).toBeCloseTo(q2.x);
|
|
112
|
-
expect(final.y).toBeCloseTo(q2.y);
|
|
113
|
-
expect(final.z).toBeCloseTo(q2.z);
|
|
114
|
-
expect(final.w).toBeCloseTo(q2.w);
|
|
115
|
-
|
|
116
|
-
const middle = Quaternion.Slerp(q1, q2, 0.35);
|
|
117
|
-
expect(middle.x).toBeCloseTo(0.27016);
|
|
118
|
-
expect(middle.y).toBeCloseTo(0.46061);
|
|
119
|
-
expect(middle.z).toBeCloseTo(0.25244);
|
|
120
|
-
expect(middle.w).toBeCloseTo(0.7972);
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
it("Makes a quaterion from a rotation matrix", () => {
|
|
124
|
-
const x = Angle.FromRadians(1);
|
|
125
|
-
const y = Angle.FromRadians(2);
|
|
126
|
-
const z = Angle.FromRadians(3);
|
|
127
|
-
const originalQ = Quaternion.FromEuler(x, y, z);
|
|
128
|
-
|
|
129
|
-
const matrix = Matrix.Compose(Vector3.One(), originalQ, Vector3.Zero());
|
|
130
|
-
|
|
131
|
-
const result = Quaternion.FromRotationMatrix(matrix);
|
|
132
|
-
expect(result.x).toBeCloseTo(originalQ.x);
|
|
133
|
-
expect(result.y).toBeCloseTo(originalQ.y);
|
|
134
|
-
expect(result.z).toBeCloseTo(originalQ.z);
|
|
135
|
-
expect(result.w).toBeCloseTo(originalQ.w);
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
it("Checks if two quaternions are close", () => {
|
|
139
|
-
const a = new Quaternion(1, 2, 3, 4);
|
|
140
|
-
const bigger = new Quaternion(1.01, 2.01, 3.01, 4.01);
|
|
141
|
-
const smaller = new Quaternion(0.99, 1.99, 2.99, 3.99);
|
|
142
|
-
|
|
143
|
-
expect(Quaternion.Close(a, bigger, 0.0101)).toEqual(true);
|
|
144
|
-
expect(Quaternion.Close(a, bigger, 0.0099)).toEqual(false);
|
|
145
|
-
|
|
146
|
-
expect(Quaternion.Close(a, smaller, 0.0101)).toEqual(true);
|
|
147
|
-
expect(Quaternion.Close(a, smaller, 0.0099)).toEqual(false);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it("Retuns the angle", () => {
|
|
151
|
-
const angle = Angle.FromDegrees(25);
|
|
152
|
-
const axis = new Vector3(1, 2, 3);
|
|
153
|
-
const q = Quaternion.FromAngleAxis(axis, angle);
|
|
154
|
-
|
|
155
|
-
expect(Angle.Close(q.angle, angle)).toEqual(true);
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
it("Retuns the axis", () => {
|
|
159
|
-
const angle = Angle.FromDegrees(25);
|
|
160
|
-
const axis = new Vector3(1, 2, 3);
|
|
161
|
-
const q = Quaternion.FromAngleAxis(axis, angle);
|
|
162
|
-
|
|
163
|
-
expect(Vector3.Close(q.axis, axis.unit)).toEqual(true);
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it("Makes a quaternion into a rotation matrix", () => {
|
|
167
|
-
const x = Angle.FromRadians(1);
|
|
168
|
-
const y = Angle.FromRadians(2);
|
|
169
|
-
const z = Angle.FromRadians(3);
|
|
170
|
-
const originalQ = Quaternion.FromEuler(x, y, z);
|
|
171
|
-
|
|
172
|
-
const mat = Quaternion.ToRotationMatrix(originalQ);
|
|
173
|
-
|
|
174
|
-
expect(Quaternion.Close(mat.rotation, originalQ)).toEqual(true);
|
|
175
|
-
expect(Vector3.Close(mat.scale, Vector3.One())).toEqual(true);
|
|
176
|
-
expect(Vector3.Close(mat.translation, Vector3.Zero())).toEqual(true);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
it("Gets the Data Transfer Object", () => {
|
|
180
|
-
const quat = new Quaternion(1, 2, 3, 4);
|
|
181
|
-
|
|
182
|
-
expect(quat.dto).toEqual({
|
|
183
|
-
x: 1,
|
|
184
|
-
y: 2,
|
|
185
|
-
z: 3,
|
|
186
|
-
w: 4,
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it("Makes a Quaterion from a DTO", () => {
|
|
191
|
-
const quat = Quaternion.FromDTO({
|
|
192
|
-
x: 1,
|
|
193
|
-
y: 2,
|
|
194
|
-
z: 3,
|
|
195
|
-
w: 4,
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
expect(quat.x).toEqual(1);
|
|
199
|
-
expect(quat.y).toEqual(2);
|
|
200
|
-
expect(quat.z).toEqual(3);
|
|
201
|
-
expect(quat.w).toEqual(4);
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
it("Forms a quaternion from a forward direction", () => {
|
|
205
|
-
const dir = new Vector3(0, 0, 1);
|
|
206
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
207
|
-
|
|
208
|
-
const expectedQ = Quaternion.Identity();
|
|
209
|
-
|
|
210
|
-
expect(q).toEqual(expectedQ);
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
it("Forms a quaternion from a right direction", () => {
|
|
214
|
-
const dir = new Vector3(1, 0, 0);
|
|
215
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
216
|
-
|
|
217
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
218
|
-
Angle.FromDegrees(90),
|
|
219
|
-
Angle.FromRadians(0),
|
|
220
|
-
Angle.FromDegrees(0)
|
|
221
|
-
);
|
|
222
|
-
|
|
223
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
it("Forms a quaternion from a left direction", () => {
|
|
227
|
-
const dir = new Vector3(-1, 0, 0);
|
|
228
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
229
|
-
|
|
230
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
231
|
-
Angle.FromDegrees(-90),
|
|
232
|
-
Angle.FromRadians(0),
|
|
233
|
-
Angle.FromDegrees(0)
|
|
234
|
-
);
|
|
235
|
-
|
|
236
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
it("Forms a quaternion from a behind direction", () => {
|
|
240
|
-
const dir = new Vector3(0, 0, -1);
|
|
241
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
242
|
-
|
|
243
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
244
|
-
Angle.FromDegrees(180),
|
|
245
|
-
Angle.FromRadians(0),
|
|
246
|
-
Angle.FromDegrees(0)
|
|
247
|
-
);
|
|
248
|
-
|
|
249
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
it("Forms a quaternion from a 45 degree up direction", () => {
|
|
253
|
-
const dir = new Vector3(0, 1, 1);
|
|
254
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
255
|
-
|
|
256
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
257
|
-
Angle.FromDegrees(0),
|
|
258
|
-
Angle.FromDegrees(-45),
|
|
259
|
-
Angle.FromDegrees(0)
|
|
260
|
-
);
|
|
261
|
-
|
|
262
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
it("Forms a quaternion from a 45 degree up direction", () => {
|
|
266
|
-
const dir = new Vector3(1, 1, 0);
|
|
267
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
268
|
-
|
|
269
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
270
|
-
Angle.FromDegrees(90),
|
|
271
|
-
Angle.FromDegrees(-45),
|
|
272
|
-
Angle.FromDegrees(0)
|
|
273
|
-
);
|
|
274
|
-
|
|
275
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
it("Returns an identity if the direction is zero", () => {
|
|
279
|
-
const dir = new Vector3(0, 0, 0);
|
|
280
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
281
|
-
|
|
282
|
-
const expectedQ = Quaternion.Identity();
|
|
283
|
-
|
|
284
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
it("Works with an up vector", () => {
|
|
288
|
-
const dir = new Vector3(0, 1, 0);
|
|
289
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
290
|
-
|
|
291
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
292
|
-
Angle.FromDegrees(0),
|
|
293
|
-
Angle.FromDegrees(-90),
|
|
294
|
-
Angle.FromDegrees(0)
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
it("Works with an down vector", () => {
|
|
301
|
-
const dir = new Vector3(0, -1, 0);
|
|
302
|
-
const q = Quaternion.FromDirectionVector(dir);
|
|
303
|
-
|
|
304
|
-
const expectedQ = Quaternion.FromYawPitchRoll(
|
|
305
|
-
Angle.FromDegrees(0),
|
|
306
|
-
Angle.FromDegrees(90),
|
|
307
|
-
Angle.FromDegrees(0)
|
|
308
|
-
);
|
|
309
|
-
|
|
310
|
-
expect(Quaternion.Close(q, expectedQ)).toEqual(true);
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
it("Gets the angle between two quaternions", () => {
|
|
314
|
-
const q1 = Quaternion.FromYawPitchRoll(
|
|
315
|
-
Angle.FromDegrees(0),
|
|
316
|
-
Angle.FromDegrees(90),
|
|
317
|
-
Angle.FromDegrees(0)
|
|
318
|
-
);
|
|
319
|
-
|
|
320
|
-
const q2 = Quaternion.FromYawPitchRoll(
|
|
321
|
-
Angle.FromDegrees(0),
|
|
322
|
-
Angle.FromDegrees(80),
|
|
323
|
-
Angle.FromDegrees(0)
|
|
324
|
-
);
|
|
325
|
-
|
|
326
|
-
const ang = Quaternion.AngleBetween(q1, q2);
|
|
327
|
-
expect(ang.degrees).toBeCloseTo(10);
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
it("Keeps the angle between two quaternions less than 180", () => {
|
|
331
|
-
const q1 = Quaternion.FromYawPitchRoll(
|
|
332
|
-
Angle.FromDegrees(0),
|
|
333
|
-
Angle.FromDegrees(0),
|
|
334
|
-
Angle.FromDegrees(0)
|
|
335
|
-
);
|
|
336
|
-
|
|
337
|
-
const q2 = Quaternion.FromYawPitchRoll(
|
|
338
|
-
Angle.FromDegrees(0),
|
|
339
|
-
Angle.FromDegrees(200),
|
|
340
|
-
Angle.FromDegrees(0)
|
|
341
|
-
);
|
|
342
|
-
|
|
343
|
-
const ang = Quaternion.AngleBetween(q1, q2);
|
|
344
|
-
expect(ang.degrees).toBeCloseTo(160);
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
it("Returns 0 if the quaterions are the same", () => {
|
|
348
|
-
const q1 = Quaternion.FromYawPitchRoll(
|
|
349
|
-
Angle.FromDegrees(0),
|
|
350
|
-
Angle.FromDegrees(0),
|
|
351
|
-
Angle.FromDegrees(0)
|
|
352
|
-
);
|
|
353
|
-
const ang = Quaternion.AngleBetween(q1, q1);
|
|
354
|
-
expect(ang.degrees).toEqual(0);
|
|
355
|
-
});
|
|
356
|
-
});
|