@jetta/axle-load-calculator 0.3.4 → 0.3.6
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 +13 -1
- package/build-cjs/core/contracts/ChassiReference.d.ts +7 -0
- package/build-cjs/core/contracts/ChassiReference.d.ts.map +1 -0
- package/build-cjs/core/contracts/ChassiReference.js +8 -0
- package/build-cjs/core/contracts/MsFaixasContract.d.ts +13 -0
- package/build-cjs/core/contracts/MsFaixasContract.d.ts.map +1 -0
- package/build-cjs/core/contracts/MsFaixasContract.js +93 -0
- package/build-cjs/core/contracts/RotationEnum.d.ts +11 -0
- package/build-cjs/core/contracts/RotationEnum.d.ts.map +1 -0
- package/build-cjs/core/contracts/RotationEnum.js +12 -0
- package/build-cjs/core/contracts/SuspensionType.d.ts +5 -0
- package/build-cjs/core/contracts/SuspensionType.d.ts.map +1 -0
- package/build-cjs/core/contracts/SuspensionType.js +7 -0
- package/build-cjs/core/contracts/TransportRecord.d.ts +5 -0
- package/build-cjs/core/contracts/TransportRecord.d.ts.map +1 -0
- package/build-cjs/core/contracts/TransportRecord.js +2 -0
- package/build-cjs/core/contracts/VehicleType.d.ts +12 -0
- package/build-cjs/core/contracts/VehicleType.d.ts.map +1 -0
- package/build-cjs/core/contracts/VehicleType.js +13 -0
- package/build-cjs/core/contracts/VehicleVersion.d.ts +8 -0
- package/build-cjs/core/contracts/VehicleVersion.d.ts.map +1 -0
- package/build-cjs/core/contracts/VehicleVersion.js +10 -0
- package/build-cjs/core/contracts/WireFlags.d.ts +27 -0
- package/build-cjs/core/contracts/WireFlags.d.ts.map +1 -0
- package/build-cjs/core/contracts/WireFlags.js +29 -0
- package/build-cjs/core/math/FloatTools.d.ts +7 -0
- package/build-cjs/core/math/FloatTools.d.ts.map +1 -0
- package/build-cjs/core/math/FloatTools.js +17 -0
- package/build-cjs/core/math/GaussianElimination.d.ts +8 -0
- package/build-cjs/core/math/GaussianElimination.d.ts.map +1 -0
- package/build-cjs/core/math/GaussianElimination.js +88 -0
- package/build-cjs/core/orchestration/AxleWeightPhysics.d.ts +7 -0
- package/build-cjs/core/orchestration/AxleWeightPhysics.d.ts.map +1 -0
- package/build-cjs/core/orchestration/AxleWeightPhysics.js +30 -0
- package/build-cjs/core/orchestration/CollisionChecker.d.ts +8 -0
- package/build-cjs/core/orchestration/CollisionChecker.d.ts.map +1 -0
- package/build-cjs/core/orchestration/CollisionChecker.js +63 -0
- package/build-cjs/core/orchestration/ConnectorPayloadBuilder.d.ts +11 -0
- package/build-cjs/core/orchestration/ConnectorPayloadBuilder.d.ts.map +1 -0
- package/build-cjs/core/orchestration/ConnectorPayloadBuilder.js +84 -0
- package/build-cjs/core/orchestration/ItemOverlapError.d.ts +7 -0
- package/build-cjs/core/orchestration/ItemOverlapError.d.ts.map +1 -0
- package/build-cjs/core/orchestration/ItemOverlapError.js +13 -0
- package/build-cjs/core/orchestration/JavaMassCenter.d.ts +10 -0
- package/build-cjs/core/orchestration/JavaMassCenter.d.ts.map +1 -0
- package/build-cjs/core/orchestration/JavaMassCenter.js +135 -0
- package/build-cjs/core/orchestration/OutputBuilder.d.ts +7 -0
- package/build-cjs/core/orchestration/OutputBuilder.d.ts.map +1 -0
- package/build-cjs/core/orchestration/OutputBuilder.js +10 -0
- package/build-cjs/core/orchestration/RequestSchema.d.ts +57 -0
- package/build-cjs/core/orchestration/RequestSchema.d.ts.map +1 -0
- package/build-cjs/core/orchestration/RequestSchema.js +21 -0
- package/build-cjs/core/orchestration/WeightByAxisResponse.d.ts +11 -0
- package/build-cjs/core/orchestration/WeightByAxisResponse.d.ts.map +1 -0
- package/build-cjs/core/orchestration/WeightByAxisResponse.js +2 -0
- package/build-cjs/core/orchestration/WeightByAxisTask.d.ts +18 -0
- package/build-cjs/core/orchestration/WeightByAxisTask.d.ts.map +1 -0
- package/build-cjs/core/orchestration/WeightByAxisTask.js +110 -0
- package/build-cjs/core/physics/items/AllocatedItem.d.ts +22 -0
- package/build-cjs/core/physics/items/AllocatedItem.d.ts.map +1 -0
- package/build-cjs/core/physics/items/AllocatedItem.js +33 -0
- package/build-cjs/core/physics/items/AllocatedItemManager.d.ts +31 -0
- package/build-cjs/core/physics/items/AllocatedItemManager.d.ts.map +1 -0
- package/build-cjs/core/physics/items/AllocatedItemManager.js +42 -0
- package/build-cjs/core/physics/items/BindChassiSolver.d.ts +12 -0
- package/build-cjs/core/physics/items/BindChassiSolver.d.ts.map +1 -0
- package/build-cjs/core/physics/items/BindChassiSolver.js +13 -0
- package/build-cjs/core/physics/items/CenterOfMass.d.ts +14 -0
- package/build-cjs/core/physics/items/CenterOfMass.d.ts.map +1 -0
- package/build-cjs/core/physics/items/CenterOfMass.js +28 -0
- package/build-cjs/core/physics/items/ComputeGrouperCenterOfMass.d.ts +19 -0
- package/build-cjs/core/physics/items/ComputeGrouperCenterOfMass.d.ts.map +1 -0
- package/build-cjs/core/physics/items/ComputeGrouperCenterOfMass.js +32 -0
- package/build-cjs/core/physics/items/ItemTemplates.d.ts +32 -0
- package/build-cjs/core/physics/items/ItemTemplates.d.ts.map +1 -0
- package/build-cjs/core/physics/items/ItemTemplates.js +58 -0
- package/build-cjs/core/physics/items/MultiContainerAllocatedItems.d.ts +37 -0
- package/build-cjs/core/physics/items/MultiContainerAllocatedItems.d.ts.map +1 -0
- package/build-cjs/core/physics/items/MultiContainerAllocatedItems.js +95 -0
- package/build-cjs/core/physics/items/RotationTransforms.d.ts +8 -0
- package/build-cjs/core/physics/items/RotationTransforms.d.ts.map +1 -0
- package/build-cjs/core/physics/items/RotationTransforms.js +24 -0
- package/build-cjs/core/physics/items/UnknownItemIdError.d.ts +10 -0
- package/build-cjs/core/physics/items/UnknownItemIdError.d.ts.map +1 -0
- package/build-cjs/core/physics/items/UnknownItemIdError.js +16 -0
- package/build-cjs/core/physics/models/AxleWeightModel.d.ts +32 -0
- package/build-cjs/core/physics/models/AxleWeightModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/AxleWeightModel.js +77 -0
- package/build-cjs/core/physics/models/BiTruckModel.d.ts +21 -0
- package/build-cjs/core/physics/models/BiTruckModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/BiTruckModel.js +64 -0
- package/build-cjs/core/physics/models/BiTruckTractorSemiTrailerModel.d.ts +21 -0
- package/build-cjs/core/physics/models/BiTruckTractorSemiTrailerModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/BiTruckTractorSemiTrailerModel.js +73 -0
- package/build-cjs/core/physics/models/BitremModel.d.ts +33 -0
- package/build-cjs/core/physics/models/BitremModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/BitremModel.js +128 -0
- package/build-cjs/core/physics/models/ChassiForces.d.ts +30 -0
- package/build-cjs/core/physics/models/ChassiForces.d.ts.map +1 -0
- package/build-cjs/core/physics/models/ChassiForces.js +43 -0
- package/build-cjs/core/physics/models/OldTareModel.d.ts +17 -0
- package/build-cjs/core/physics/models/OldTareModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/OldTareModel.js +45 -0
- package/build-cjs/core/physics/models/OldTareScale.d.ts +7 -0
- package/build-cjs/core/physics/models/OldTareScale.d.ts.map +1 -0
- package/build-cjs/core/physics/models/OldTareScale.js +11 -0
- package/build-cjs/core/physics/models/OldTareSemireboque.d.ts +7 -0
- package/build-cjs/core/physics/models/OldTareSemireboque.d.ts.map +1 -0
- package/build-cjs/core/physics/models/OldTareSemireboque.js +40 -0
- package/build-cjs/core/physics/models/OldTareTruck.d.ts +7 -0
- package/build-cjs/core/physics/models/OldTareTruck.d.ts.map +1 -0
- package/build-cjs/core/physics/models/OldTareTruck.js +15 -0
- package/build-cjs/core/physics/models/OldTareVanderleia.d.ts +7 -0
- package/build-cjs/core/physics/models/OldTareVanderleia.d.ts.map +1 -0
- package/build-cjs/core/physics/models/OldTareVanderleia.js +34 -0
- package/build-cjs/core/physics/models/PercentageOnAxlesCalculator.d.ts +19 -0
- package/build-cjs/core/physics/models/PercentageOnAxlesCalculator.d.ts.map +1 -0
- package/build-cjs/core/physics/models/PercentageOnAxlesCalculator.js +43 -0
- package/build-cjs/core/physics/models/QuadSemiTrailerModel.d.ts +21 -0
- package/build-cjs/core/physics/models/QuadSemiTrailerModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/QuadSemiTrailerModel.js +74 -0
- package/build-cjs/core/physics/models/RodotremModel.d.ts +33 -0
- package/build-cjs/core/physics/models/RodotremModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/RodotremModel.js +106 -0
- package/build-cjs/core/physics/models/SemiDelegate.d.ts +9 -0
- package/build-cjs/core/physics/models/SemiDelegate.d.ts.map +1 -0
- package/build-cjs/core/physics/models/SemiDelegate.js +2 -0
- package/build-cjs/core/physics/models/SemiReboqueBase.d.ts +34 -0
- package/build-cjs/core/physics/models/SemiReboqueBase.d.ts.map +1 -0
- package/build-cjs/core/physics/models/SemiReboqueBase.js +89 -0
- package/build-cjs/core/physics/models/SemiReboqueModel.d.ts +41 -0
- package/build-cjs/core/physics/models/SemiReboqueModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/SemiReboqueModel.js +89 -0
- package/build-cjs/core/physics/models/SimpleTruckBase.d.ts +29 -0
- package/build-cjs/core/physics/models/SimpleTruckBase.d.ts.map +1 -0
- package/build-cjs/core/physics/models/SimpleTruckBase.js +61 -0
- package/build-cjs/core/physics/models/SimpleTruckModel.d.ts +41 -0
- package/build-cjs/core/physics/models/SimpleTruckModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/SimpleTruckModel.js +81 -0
- package/build-cjs/core/physics/models/SingleContainerTare.d.ts +18 -0
- package/build-cjs/core/physics/models/SingleContainerTare.d.ts.map +1 -0
- package/build-cjs/core/physics/models/SingleContainerTare.js +49 -0
- package/build-cjs/core/physics/models/TareModel.d.ts +12 -0
- package/build-cjs/core/physics/models/TareModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/TareModel.js +40 -0
- package/build-cjs/core/physics/models/TruckDelegate.d.ts +9 -0
- package/build-cjs/core/physics/models/TruckDelegate.d.ts.map +1 -0
- package/build-cjs/core/physics/models/TruckDelegate.js +2 -0
- package/build-cjs/core/physics/models/UnrecognizedSuspensionTypeError.d.ts +10 -0
- package/build-cjs/core/physics/models/UnrecognizedSuspensionTypeError.d.ts.map +1 -0
- package/build-cjs/core/physics/models/UnrecognizedSuspensionTypeError.js +16 -0
- package/build-cjs/core/physics/models/UnsupportedVehicleTypeError.d.ts +10 -0
- package/build-cjs/core/physics/models/UnsupportedVehicleTypeError.d.ts.map +1 -0
- package/build-cjs/core/physics/models/UnsupportedVehicleTypeError.js +16 -0
- package/build-cjs/core/physics/models/VanderleiaModel.d.ts +33 -0
- package/build-cjs/core/physics/models/VanderleiaModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/VanderleiaModel.js +106 -0
- package/build-cjs/core/physics/models/VehicleModel.d.ts +11 -0
- package/build-cjs/core/physics/models/VehicleModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/VehicleModel.js +2 -0
- package/build-cjs/core/physics/models/deflection/BeamDeflection.d.ts +28 -0
- package/build-cjs/core/physics/models/deflection/BeamDeflection.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/BeamDeflection.js +82 -0
- package/build-cjs/core/physics/models/deflection/BitremDeflection.d.ts +22 -0
- package/build-cjs/core/physics/models/deflection/BitremDeflection.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/BitremDeflection.js +58 -0
- package/build-cjs/core/physics/models/deflection/CreateDeflectionDelegate.d.ts +9 -0
- package/build-cjs/core/physics/models/deflection/CreateDeflectionDelegate.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/CreateDeflectionDelegate.js +27 -0
- package/build-cjs/core/physics/models/deflection/DeflectionDelegate.d.ts +8 -0
- package/build-cjs/core/physics/models/deflection/DeflectionDelegate.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DeflectionDelegate.js +2 -0
- package/build-cjs/core/physics/models/deflection/DeflectionDelegateFactories.d.ts +36 -0
- package/build-cjs/core/physics/models/deflection/DeflectionDelegateFactories.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DeflectionDelegateFactories.js +57 -0
- package/build-cjs/core/physics/models/deflection/DeflectionModel.d.ts +19 -0
- package/build-cjs/core/physics/models/deflection/DeflectionModel.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DeflectionModel.js +27 -0
- package/build-cjs/core/physics/models/deflection/DeflectionModelNotImplementedError.d.ts +9 -0
- package/build-cjs/core/physics/models/deflection/DeflectionModelNotImplementedError.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DeflectionModelNotImplementedError.js +15 -0
- package/build-cjs/core/physics/models/deflection/DeflectionSupportManager.d.ts +35 -0
- package/build-cjs/core/physics/models/deflection/DeflectionSupportManager.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DeflectionSupportManager.js +58 -0
- package/build-cjs/core/physics/models/deflection/DeflectionTools.d.ts +6 -0
- package/build-cjs/core/physics/models/deflection/DeflectionTools.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DeflectionTools.js +13 -0
- package/build-cjs/core/physics/models/deflection/DelegateFactory.d.ts +12 -0
- package/build-cjs/core/physics/models/deflection/DelegateFactory.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/DelegateFactory.js +2 -0
- package/build-cjs/core/physics/models/deflection/IntegrationConstantCalculator.d.ts +25 -0
- package/build-cjs/core/physics/models/deflection/IntegrationConstantCalculator.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/IntegrationConstantCalculator.js +55 -0
- package/build-cjs/core/physics/models/deflection/RodotremDeflection.d.ts +22 -0
- package/build-cjs/core/physics/models/deflection/RodotremDeflection.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/RodotremDeflection.js +51 -0
- package/build-cjs/core/physics/models/deflection/SemiReboqueDeflection.d.ts +21 -0
- package/build-cjs/core/physics/models/deflection/SemiReboqueDeflection.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/SemiReboqueDeflection.js +35 -0
- package/build-cjs/core/physics/models/deflection/SimpleTruckDeflection.d.ts +20 -0
- package/build-cjs/core/physics/models/deflection/SimpleTruckDeflection.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/SimpleTruckDeflection.js +32 -0
- package/build-cjs/core/physics/models/deflection/VanderleiaDeflection.d.ts +21 -0
- package/build-cjs/core/physics/models/deflection/VanderleiaDeflection.d.ts.map +1 -0
- package/build-cjs/core/physics/models/deflection/VanderleiaDeflection.js +45 -0
- package/build-cjs/core/physics/services/AxleWeightOutputBuilder.d.ts +27 -0
- package/build-cjs/core/physics/services/AxleWeightOutputBuilder.d.ts.map +1 -0
- package/build-cjs/core/physics/services/AxleWeightOutputBuilder.js +47 -0
- package/build-cjs/core/physics/services/AxleWeightService.d.ts +20 -0
- package/build-cjs/core/physics/services/AxleWeightService.d.ts.map +1 -0
- package/build-cjs/core/physics/services/AxleWeightService.js +95 -0
- package/build-cjs/core/physics/services/CmAxleWeightService.d.ts +12 -0
- package/build-cjs/core/physics/services/CmAxleWeightService.d.ts.map +1 -0
- package/build-cjs/core/physics/services/CmAxleWeightService.js +37 -0
- package/build-cjs/core/physics/services/ContainerCornerForces.d.ts +33 -0
- package/build-cjs/core/physics/services/ContainerCornerForces.d.ts.map +1 -0
- package/build-cjs/core/physics/services/ContainerCornerForces.js +88 -0
- package/build-cjs/core/physics/transports/AxleManager.d.ts +22 -0
- package/build-cjs/core/physics/transports/AxleManager.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/AxleManager.js +38 -0
- package/build-cjs/core/physics/transports/AxleRecord.d.ts +21 -0
- package/build-cjs/core/physics/transports/AxleRecord.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/AxleRecord.js +61 -0
- package/build-cjs/core/physics/transports/Chassi.d.ts +52 -0
- package/build-cjs/core/physics/transports/Chassi.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/Chassi.js +109 -0
- package/build-cjs/core/physics/transports/ContainerRecord.d.ts +25 -0
- package/build-cjs/core/physics/transports/ContainerRecord.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/ContainerRecord.js +53 -0
- package/build-cjs/core/physics/transports/ContainerSequenceNotFoundError.d.ts +10 -0
- package/build-cjs/core/physics/transports/ContainerSequenceNotFoundError.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/ContainerSequenceNotFoundError.js +16 -0
- package/build-cjs/core/physics/transports/GroupedContainers.d.ts +34 -0
- package/build-cjs/core/physics/transports/GroupedContainers.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/GroupedContainers.js +73 -0
- package/build-cjs/core/physics/transports/GrouperNotFoundError.d.ts +10 -0
- package/build-cjs/core/physics/transports/GrouperNotFoundError.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/GrouperNotFoundError.js +16 -0
- package/build-cjs/core/physics/transports/MergedContainers.d.ts +26 -0
- package/build-cjs/core/physics/transports/MergedContainers.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/MergedContainers.js +50 -0
- package/build-cjs/core/physics/transports/MissingContainerError.d.ts +10 -0
- package/build-cjs/core/physics/transports/MissingContainerError.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/MissingContainerError.js +16 -0
- package/build-cjs/core/physics/transports/Transport.d.ts +33 -0
- package/build-cjs/core/physics/transports/Transport.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/Transport.js +115 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerMaxWeightCalculator.d.ts +21 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerMaxWeightCalculator.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerMaxWeightCalculator.js +44 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerTareCalculator.d.ts +28 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerTareCalculator.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerTareCalculator.js +59 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerWeightModel.d.ts +15 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerWeightModel.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/containerweight/ContainerWeightModel.js +35 -0
- package/build-cjs/core/physics/transports/containerweight/MaxWeightInput.d.ts +10 -0
- package/build-cjs/core/physics/transports/containerweight/MaxWeightInput.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/containerweight/MaxWeightInput.js +2 -0
- package/build-cjs/core/physics/transports/containerweight/MergedContainersWeightCalculator.d.ts +17 -0
- package/build-cjs/core/physics/transports/containerweight/MergedContainersWeightCalculator.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/containerweight/MergedContainersWeightCalculator.js +35 -0
- package/build-cjs/core/physics/transports/containerweight/SingleContainerWeightCalculator.d.ts +20 -0
- package/build-cjs/core/physics/transports/containerweight/SingleContainerWeightCalculator.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/containerweight/SingleContainerWeightCalculator.js +52 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplit.d.ts +8 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplit.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplit.js +2 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplitTarget.d.ts +12 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplitTarget.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplitTarget.js +2 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplitter.d.ts +26 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplitter.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleSplitter.js +88 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleWeightSplit.d.ts +13 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleWeightSplit.d.ts.map +1 -0
- package/build-cjs/core/physics/transports/tare/BitremAxleWeightSplit.js +36 -0
- package/build-cjs/index.d.ts +25 -0
- package/build-cjs/index.d.ts.map +1 -0
- package/build-cjs/index.js +35 -0
- package/build-cjs/package.json +3 -0
- package/package.json +27 -4
- package/CHANGELOG.md +0 -71
- package/tsconfig.eslint.json +0 -15
- package/tsconfig.json +0 -19
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PercentageOnAxlesCalculator = void 0;
|
|
4
|
+
const VehicleType_js_1 = require("../../contracts/VehicleType.js");
|
|
5
|
+
/**
|
|
6
|
+
* Converts loaded cargo per axle into utilization percentages.
|
|
7
|
+
*/
|
|
8
|
+
class PercentageOnAxlesCalculator {
|
|
9
|
+
transport;
|
|
10
|
+
/**
|
|
11
|
+
* @param transport - Parsed transport.
|
|
12
|
+
*/
|
|
13
|
+
constructor(transport) {
|
|
14
|
+
this.transport = transport;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @param loaded_weight_list - Cargo load per axle index.
|
|
18
|
+
* @returns Utilization ratio per axle (bitrem: 4 entries).
|
|
19
|
+
*/
|
|
20
|
+
weight_on_axles_to_percentages(loaded_weight_list) {
|
|
21
|
+
if (this.transport.vehicle_type === VehicleType_js_1.VEHICLE_TYPE.BITREM) {
|
|
22
|
+
return [
|
|
23
|
+
this.calculate_percentage(0, loaded_weight_list[0]),
|
|
24
|
+
this.calculate_percentage(1, loaded_weight_list[1]),
|
|
25
|
+
this.calculate_bitrem_joined_percentage(loaded_weight_list[2] + loaded_weight_list[3]),
|
|
26
|
+
this.calculate_percentage(4, loaded_weight_list[4])
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
return this.transport.axle_manager.list_axles_indexes().map((index) => this.calculate_percentage(index, loaded_weight_list[index]));
|
|
30
|
+
}
|
|
31
|
+
calculate_percentage(axle_index, loaded_weight) {
|
|
32
|
+
const axle = this.transport.axle_manager.get_axle(axle_index);
|
|
33
|
+
return (loaded_weight + axle.tare) / axle.max_supported_weight;
|
|
34
|
+
}
|
|
35
|
+
calculate_bitrem_joined_percentage(loaded_weight) {
|
|
36
|
+
const axle_2 = this.transport.axle_manager.get_axle(2);
|
|
37
|
+
const axle_3 = this.transport.axle_manager.get_axle(3);
|
|
38
|
+
const total_tare = axle_2.tare + axle_3.tare;
|
|
39
|
+
const total_max = axle_2.max_supported_weight + axle_3.max_supported_weight;
|
|
40
|
+
return (loaded_weight + total_tare) / total_max;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.PercentageOnAxlesCalculator = PercentageOnAxlesCalculator;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Transport } from '../transports/Transport.js';
|
|
2
|
+
import { CenterOfMass } from '../items/CenterOfMass.js';
|
|
3
|
+
import { ChassiForces } from './ChassiForces.js';
|
|
4
|
+
import { SemiReboqueBase } from './SemiReboqueBase.js';
|
|
5
|
+
/**
|
|
6
|
+
* Quad-axle semi-trailer (equivalent semi + 2×2 split on axles 3–4).
|
|
7
|
+
*/
|
|
8
|
+
export declare class QuadSemiTrailerModel {
|
|
9
|
+
private readonly chassi;
|
|
10
|
+
readonly equivalent_semi_trailer: SemiReboqueBase;
|
|
11
|
+
/**
|
|
12
|
+
* @param transport - Parsed transport.
|
|
13
|
+
*/
|
|
14
|
+
constructor(transport: Transport);
|
|
15
|
+
/**
|
|
16
|
+
* @param center_of_mass_by_grouper - CM per grouper.
|
|
17
|
+
* @returns Four-axle chassis forces.
|
|
18
|
+
*/
|
|
19
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper: Record<number, CenterOfMass>): ChassiForces;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=QuadSemiTrailerModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuadSemiTrailerModel.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/QuadSemiTrailerModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,eAAe,CAAA;IAEjD;;OAEG;gBACS,SAAS,EAAE,SAAS;IAQhC;;;OAGG;IACH,gDAAgD,CAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACxD,YAAY;CAoBlB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuadSemiTrailerModel = void 0;
|
|
4
|
+
const Chassi_js_1 = require("../transports/Chassi.js");
|
|
5
|
+
const ChassiReference_js_1 = require("../../contracts/ChassiReference.js");
|
|
6
|
+
const ChassiForces_js_1 = require("./ChassiForces.js");
|
|
7
|
+
const SemiReboqueBase_js_1 = require("./SemiReboqueBase.js");
|
|
8
|
+
const GaussianElimination_js_1 = require("../../math/GaussianElimination.js");
|
|
9
|
+
/**
|
|
10
|
+
* Quad-axle semi-trailer (equivalent semi + 2×2 split on axles 3–4).
|
|
11
|
+
*/
|
|
12
|
+
class QuadSemiTrailerModel {
|
|
13
|
+
chassi;
|
|
14
|
+
equivalent_semi_trailer;
|
|
15
|
+
/**
|
|
16
|
+
* @param transport - Parsed transport.
|
|
17
|
+
*/
|
|
18
|
+
constructor(transport) {
|
|
19
|
+
this.chassi = new Chassi_js_1.Chassi(transport);
|
|
20
|
+
this.equivalent_semi_trailer = new SemiReboqueBase_js_1.SemiReboqueBase(transport);
|
|
21
|
+
this.equivalent_semi_trailer.set_linear_system_matrix(get_equivalent_chassi_positions(this.chassi, transport));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @param center_of_mass_by_grouper - CM per grouper.
|
|
25
|
+
* @returns Four-axle chassis forces.
|
|
26
|
+
*/
|
|
27
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper) {
|
|
28
|
+
const equivalent = this.equivalent_semi_trailer
|
|
29
|
+
.calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper);
|
|
30
|
+
const equivalent_z = this.equivalent_semi_trailer.chassi_positions[4];
|
|
31
|
+
const independent = [
|
|
32
|
+
equivalent.get_force_on_axle(2),
|
|
33
|
+
equivalent.get_force_on_axle(2) * equivalent_z
|
|
34
|
+
];
|
|
35
|
+
const quad = (0, GaussianElimination_js_1.solve_linear_system)(generate_quad_matrix(this.chassi), independent);
|
|
36
|
+
const forces = new ChassiForces_js_1.ChassiForces();
|
|
37
|
+
forces.add_axle_forces([
|
|
38
|
+
equivalent.get_force_on_axle(0),
|
|
39
|
+
equivalent.get_force_on_axle(1),
|
|
40
|
+
quad[0],
|
|
41
|
+
quad[1]
|
|
42
|
+
]);
|
|
43
|
+
forces.add_pin_forces([equivalent.get_force_on_pin(0)]);
|
|
44
|
+
return forces;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.QuadSemiTrailerModel = QuadSemiTrailerModel;
|
|
48
|
+
/**
|
|
49
|
+
* @param chassi - Chassis geometry.
|
|
50
|
+
* @returns 2×2 quad axle matrix.
|
|
51
|
+
*/
|
|
52
|
+
function generate_quad_matrix(chassi) {
|
|
53
|
+
const semi_axle_3 = chassi.get_axle_position(2, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
54
|
+
const semi_axle_4 = chassi.get_axle_position(3, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
55
|
+
return [[1, 1], [semi_axle_3, semi_axle_4]];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @param chassi - Chassis geometry.
|
|
59
|
+
* @param transport - Parsed transport.
|
|
60
|
+
* @returns Equivalent 5-position layout for semi base.
|
|
61
|
+
*/
|
|
62
|
+
function get_equivalent_chassi_positions(chassi, transport) {
|
|
63
|
+
const tractor_pin = chassi.get_pin_position(0, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR);
|
|
64
|
+
const tractor_axle_1 = chassi.get_axle_position(0, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR);
|
|
65
|
+
const tractor_axle_2 = chassi.get_axle_position(1, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR);
|
|
66
|
+
const semi_pin = chassi.get_pin_position(0, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
67
|
+
const semi_axle_3 = chassi.get_axle_position(2, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
68
|
+
const semi_axle_4 = chassi.get_axle_position(3, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
69
|
+
const axle_3 = transport.axle_manager.get_axle(2);
|
|
70
|
+
const axle_4 = transport.axle_manager.get_axle(3);
|
|
71
|
+
const semi_equivalent = (semi_axle_3 * axle_3.max_supported_weight
|
|
72
|
+
+ semi_axle_4 * axle_4.max_supported_weight) / (axle_3.max_supported_weight + axle_4.max_supported_weight);
|
|
73
|
+
return [tractor_pin, tractor_axle_1, tractor_axle_2, semi_pin, semi_equivalent];
|
|
74
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Transport } from '../transports/Transport.js';
|
|
2
|
+
import type { MultiContainerAllocatedItems } from '../items/MultiContainerAllocatedItems.js';
|
|
3
|
+
import { Chassi } from '../transports/Chassi.js';
|
|
4
|
+
import { CenterOfMass } from '../items/CenterOfMass.js';
|
|
5
|
+
import { ChassiForces } from './ChassiForces.js';
|
|
6
|
+
/**
|
|
7
|
+
* Rodotrem: semi+tractor 4×4 plus simple trailer 2-axle lever.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RodotremModel {
|
|
10
|
+
private readonly transport;
|
|
11
|
+
readonly chassi: Chassi;
|
|
12
|
+
private readonly matrix;
|
|
13
|
+
/**
|
|
14
|
+
* @param transport - Parsed transport.
|
|
15
|
+
*/
|
|
16
|
+
constructor(transport: Transport);
|
|
17
|
+
/**
|
|
18
|
+
* @param multi_items - Allocated items.
|
|
19
|
+
* @returns Loaded weights per axle.
|
|
20
|
+
*/
|
|
21
|
+
calculate_weight_on_axles(multi_items: MultiContainerAllocatedItems): number[];
|
|
22
|
+
/**
|
|
23
|
+
* @param multi_items - Allocated items.
|
|
24
|
+
* @returns Chassis forces.
|
|
25
|
+
*/
|
|
26
|
+
calculate_chassi_forces(multi_items: MultiContainerAllocatedItems): ChassiForces;
|
|
27
|
+
/**
|
|
28
|
+
* @param center_of_mass_by_grouper - CM for groupers 1 and 2.
|
|
29
|
+
* @returns Five-axle chassis forces.
|
|
30
|
+
*/
|
|
31
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper: Record<number, CenterOfMass>): ChassiForces;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=RodotremModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RodotremModel.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/RodotremModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAA;AAG5F,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD;;GAEG;AACH,qBAAa,aAAa;IAQV,OAAO,CAAC,QAAQ,CAAC,SAAS;IANtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC;;OAEG;gBAC0B,SAAS,EAAE,SAAS;IAMjD;;;OAGG;IACH,yBAAyB,CAAC,WAAW,EAAE,4BAA4B,GAAG,MAAM,EAAE;IAM9E;;;OAGG;IACH,uBAAuB,CAAC,WAAW,EAAE,4BAA4B,GAAG,YAAY;IAQhF;;;OAGG;IACH,gDAAgD,CAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACxD,YAAY;CAmBlB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RodotremModel = void 0;
|
|
4
|
+
const ComputeGrouperCenterOfMass_js_1 = require("../items/ComputeGrouperCenterOfMass.js");
|
|
5
|
+
const BindChassiSolver_js_1 = require("../items/BindChassiSolver.js");
|
|
6
|
+
const Chassi_js_1 = require("../transports/Chassi.js");
|
|
7
|
+
const ChassiReference_js_1 = require("../../contracts/ChassiReference.js");
|
|
8
|
+
const ChassiForces_js_1 = require("./ChassiForces.js");
|
|
9
|
+
const GaussianElimination_js_1 = require("../../math/GaussianElimination.js");
|
|
10
|
+
/**
|
|
11
|
+
* Rodotrem: semi+tractor 4×4 plus simple trailer 2-axle lever.
|
|
12
|
+
*/
|
|
13
|
+
class RodotremModel {
|
|
14
|
+
transport;
|
|
15
|
+
chassi;
|
|
16
|
+
matrix;
|
|
17
|
+
/**
|
|
18
|
+
* @param transport - Parsed transport.
|
|
19
|
+
*/
|
|
20
|
+
constructor(transport) {
|
|
21
|
+
this.transport = transport;
|
|
22
|
+
this.chassi = new Chassi_js_1.Chassi(transport);
|
|
23
|
+
this.matrix = generate_rodotrem_semi_matrix(this.chassi);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @param multi_items - Allocated items.
|
|
27
|
+
* @returns Loaded weights per axle.
|
|
28
|
+
*/
|
|
29
|
+
calculate_weight_on_axles(multi_items) {
|
|
30
|
+
const forces = this.calculate_chassi_forces(multi_items);
|
|
31
|
+
return forces.list_axles_indexes().map((index) => forces.get_force_on_axle(index));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @param multi_items - Allocated items.
|
|
35
|
+
* @returns Chassis forces.
|
|
36
|
+
*/
|
|
37
|
+
calculate_chassi_forces(multi_items) {
|
|
38
|
+
return (0, ComputeGrouperCenterOfMass_js_1.calculate_chassi_forces_from_multi)(this.transport, multi_items, (0, BindChassiSolver_js_1.bind_chassi_solver)(this));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @param center_of_mass_by_grouper - CM for groupers 1 and 2.
|
|
42
|
+
* @returns Five-axle chassis forces.
|
|
43
|
+
*/
|
|
44
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper) {
|
|
45
|
+
const semi_solution = solve_semi_tractor_system(this.matrix, center_of_mass_by_grouper[1]);
|
|
46
|
+
const simple_solution = solve_simple_trailer_system(this.chassi, center_of_mass_by_grouper[2]);
|
|
47
|
+
const forces = new ChassiForces_js_1.ChassiForces();
|
|
48
|
+
forces.add_pin_forces([semi_solution[1]]);
|
|
49
|
+
forces.add_axle_forces([
|
|
50
|
+
semi_solution[3],
|
|
51
|
+
semi_solution[2],
|
|
52
|
+
semi_solution[0],
|
|
53
|
+
simple_solution[1],
|
|
54
|
+
simple_solution[0]
|
|
55
|
+
]);
|
|
56
|
+
return forces;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.RodotremModel = RodotremModel;
|
|
60
|
+
/**
|
|
61
|
+
* @param chassi - Chassis geometry.
|
|
62
|
+
* @returns Semi+tractor 4×4 matrix.
|
|
63
|
+
*/
|
|
64
|
+
function generate_rodotrem_semi_matrix(chassi) {
|
|
65
|
+
const tractor_pin = chassi.get_pin_position(0, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR);
|
|
66
|
+
const tractor_axle_1 = chassi.get_axle_position(0, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR);
|
|
67
|
+
const tractor_axle_2 = chassi.get_axle_position(1, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR);
|
|
68
|
+
const semi_pin = chassi.get_pin_position(0, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
69
|
+
const semi_axle_3 = chassi.get_axle_position(2, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1);
|
|
70
|
+
return [
|
|
71
|
+
[1, 1, 0, 0],
|
|
72
|
+
[semi_axle_3, semi_pin, 0, 0],
|
|
73
|
+
[0, -1, 1, 1],
|
|
74
|
+
[0, -tractor_pin, tractor_axle_2, tractor_axle_1]
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @param matrix - Semi system matrix.
|
|
79
|
+
* @param center_of_mass - Semi trailer CM.
|
|
80
|
+
* @returns 4-vector solution.
|
|
81
|
+
*/
|
|
82
|
+
function solve_semi_tractor_system(matrix, center_of_mass) {
|
|
83
|
+
const independent = [
|
|
84
|
+
center_of_mass.mass,
|
|
85
|
+
center_of_mass.mass * center_of_mass.z,
|
|
86
|
+
0,
|
|
87
|
+
0
|
|
88
|
+
];
|
|
89
|
+
return (0, GaussianElimination_js_1.solve_linear_system)(matrix, independent);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @param chassi - Chassis geometry.
|
|
93
|
+
* @param center_of_mass - Simple trailer CM.
|
|
94
|
+
* @returns Two-axle lever solution [axle4, axle5].
|
|
95
|
+
*/
|
|
96
|
+
function solve_simple_trailer_system(chassi, center_of_mass) {
|
|
97
|
+
const axle_4 = chassi.get_axle_position(3, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_2);
|
|
98
|
+
const axle_5 = chassi.get_axle_position(4, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_2);
|
|
99
|
+
const axle_4_force = center_of_mass.mass
|
|
100
|
+
* (axle_4 - center_of_mass.z)
|
|
101
|
+
/ (axle_4 - axle_5);
|
|
102
|
+
const axle_5_force = center_of_mass.mass
|
|
103
|
+
* (center_of_mass.z - axle_5)
|
|
104
|
+
/ (axle_4 - axle_5);
|
|
105
|
+
return [axle_4_force, axle_5_force];
|
|
106
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CenterOfMass } from '../items/CenterOfMass.js';
|
|
2
|
+
import type { ChassiForces } from './ChassiForces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Semi-reboque delegate for chassis force calculation.
|
|
5
|
+
*/
|
|
6
|
+
export type SemiDelegate = {
|
|
7
|
+
calculate_chassi_forces_with_load_center_of_mass: (center_of_mass_by_grouper: Record<number, CenterOfMass>) => ChassiForces;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=SemiDelegate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemiDelegate.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/SemiDelegate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,gDAAgD,EAAE,CAC9C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KACtD,YAAY,CAAA;CACpB,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Transport } from '../transports/Transport.js';
|
|
2
|
+
import { CenterOfMass } from '../items/CenterOfMass.js';
|
|
3
|
+
import { ChassiForces } from './ChassiForces.js';
|
|
4
|
+
/**
|
|
5
|
+
* Semi-trailer 4×4 static system base.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SemiReboqueBase {
|
|
8
|
+
private readonly transport;
|
|
9
|
+
chassi_positions: number[];
|
|
10
|
+
private matrix;
|
|
11
|
+
/**
|
|
12
|
+
* @param transport - Parsed transport.
|
|
13
|
+
*/
|
|
14
|
+
constructor(transport: Transport);
|
|
15
|
+
/**
|
|
16
|
+
* @param center_of_mass_by_grouper - CM per grouper.
|
|
17
|
+
* @returns Chassis forces.
|
|
18
|
+
*/
|
|
19
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper: Record<number, CenterOfMass>): ChassiForces;
|
|
20
|
+
/**
|
|
21
|
+
* @param chassi_positions - Optional preset positions.
|
|
22
|
+
*/
|
|
23
|
+
set_linear_system_matrix(chassi_positions?: number[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* @param center_of_mass - Load CM.
|
|
26
|
+
* @returns 4-vector solution.
|
|
27
|
+
*/
|
|
28
|
+
private solve_weight_on_axles_system;
|
|
29
|
+
/**
|
|
30
|
+
* @returns Default chassis positions for semi system.
|
|
31
|
+
*/
|
|
32
|
+
private get_chassi_positions;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=SemiReboqueBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemiReboqueBase.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/SemiReboqueBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD;;GAEG;AACH,qBAAa,eAAe;IAQZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IANtC,gBAAgB,EAAE,MAAM,EAAE,CAAK;IAC/B,OAAO,CAAC,MAAM,CAAiB;IAE/B;;OAEG;gBAC0B,SAAS,EAAE,SAAS;IAKjD;;;OAGG;IACH,gDAAgD,CAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACxD,YAAY;IASf;;OAEG;IACH,wBAAwB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAa3D;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAW/B"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SemiReboqueBase = void 0;
|
|
4
|
+
const Chassi_js_1 = require("../transports/Chassi.js");
|
|
5
|
+
const ChassiReference_js_1 = require("../../contracts/ChassiReference.js");
|
|
6
|
+
const ChassiForces_js_1 = require("./ChassiForces.js");
|
|
7
|
+
const GaussianElimination_js_1 = require("../../math/GaussianElimination.js");
|
|
8
|
+
/**
|
|
9
|
+
* Semi-trailer 4×4 static system base.
|
|
10
|
+
*/
|
|
11
|
+
class SemiReboqueBase {
|
|
12
|
+
transport;
|
|
13
|
+
chassi_positions = [];
|
|
14
|
+
matrix = [];
|
|
15
|
+
/**
|
|
16
|
+
* @param transport - Parsed transport.
|
|
17
|
+
*/
|
|
18
|
+
constructor(transport) {
|
|
19
|
+
this.transport = transport;
|
|
20
|
+
this.set_linear_system_matrix();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @param center_of_mass_by_grouper - CM per grouper.
|
|
24
|
+
* @returns Chassis forces.
|
|
25
|
+
*/
|
|
26
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper) {
|
|
27
|
+
const solution = this.solve_weight_on_axles_system(center_of_mass_by_grouper[1]);
|
|
28
|
+
const forces = new ChassiForces_js_1.ChassiForces();
|
|
29
|
+
forces.add_pin_forces([solution[1]]);
|
|
30
|
+
forces.add_axle_forces([solution[3], solution[2], solution[0]]);
|
|
31
|
+
return forces;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @param chassi_positions - Optional preset positions.
|
|
35
|
+
*/
|
|
36
|
+
set_linear_system_matrix(chassi_positions) {
|
|
37
|
+
if (chassi_positions) {
|
|
38
|
+
this.chassi_positions = chassi_positions;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.chassi_positions = this.get_chassi_positions();
|
|
42
|
+
}
|
|
43
|
+
this.matrix = build_semi_matrix(this.chassi_positions);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @param center_of_mass - Load CM.
|
|
47
|
+
* @returns 4-vector solution.
|
|
48
|
+
*/
|
|
49
|
+
solve_weight_on_axles_system(center_of_mass) {
|
|
50
|
+
const independent = [
|
|
51
|
+
center_of_mass.mass,
|
|
52
|
+
center_of_mass.mass * center_of_mass.z,
|
|
53
|
+
0,
|
|
54
|
+
0
|
|
55
|
+
];
|
|
56
|
+
return (0, GaussianElimination_js_1.solve_linear_system)(this.matrix, independent);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @returns Default chassis positions for semi system.
|
|
60
|
+
*/
|
|
61
|
+
get_chassi_positions() {
|
|
62
|
+
const chassi = new Chassi_js_1.Chassi(this.transport);
|
|
63
|
+
return [
|
|
64
|
+
chassi.get_pin_position(0, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR),
|
|
65
|
+
chassi.get_axle_position(0, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR),
|
|
66
|
+
chassi.get_axle_position(1, ChassiReference_js_1.CHASSI_REFERENCE.TRACTOR),
|
|
67
|
+
chassi.get_pin_position(0, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1),
|
|
68
|
+
chassi.get_axle_position(2, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1)
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.SemiReboqueBase = SemiReboqueBase;
|
|
73
|
+
/**
|
|
74
|
+
* @param positions - Pin and axle positions.
|
|
75
|
+
* @returns 4×4 coefficient matrix.
|
|
76
|
+
*/
|
|
77
|
+
function build_semi_matrix(positions) {
|
|
78
|
+
const tractor_pin = positions[0];
|
|
79
|
+
const tractor_axle_1 = positions[1];
|
|
80
|
+
const tractor_axle_2 = positions[2];
|
|
81
|
+
const semi_pin = positions[3];
|
|
82
|
+
const semi_axle_3 = positions[4];
|
|
83
|
+
return [
|
|
84
|
+
[1, 1, 0, 0],
|
|
85
|
+
[semi_axle_3, semi_pin, 0, 0],
|
|
86
|
+
[0, -1, 1, 1],
|
|
87
|
+
[0, -tractor_pin, tractor_axle_2, tractor_axle_1]
|
|
88
|
+
];
|
|
89
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Transport } from '../transports/Transport.js';
|
|
2
|
+
import type { MultiContainerAllocatedItems } from '../items/MultiContainerAllocatedItems.js';
|
|
3
|
+
import { CenterOfMass } from '../items/CenterOfMass.js';
|
|
4
|
+
import { ChassiForces } from './ChassiForces.js';
|
|
5
|
+
/**
|
|
6
|
+
* Semi-reboque axle weight with quad/bitruck variants.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SemiReboqueModel {
|
|
9
|
+
private readonly delegate;
|
|
10
|
+
private readonly transport;
|
|
11
|
+
private readonly merged_containers;
|
|
12
|
+
/**
|
|
13
|
+
* @param transport - Parsed transport.
|
|
14
|
+
*/
|
|
15
|
+
constructor(transport: Transport);
|
|
16
|
+
/**
|
|
17
|
+
* @param multi_items - Allocated items.
|
|
18
|
+
* @returns Loaded weights per axle.
|
|
19
|
+
*/
|
|
20
|
+
calculate_weight_on_axles(multi_items: MultiContainerAllocatedItems): number[];
|
|
21
|
+
/**
|
|
22
|
+
* @param multi_items - Allocated items.
|
|
23
|
+
* @returns Chassis forces.
|
|
24
|
+
*/
|
|
25
|
+
calculate_chassi_forces(multi_items: MultiContainerAllocatedItems): ChassiForces;
|
|
26
|
+
/**
|
|
27
|
+
* @param multi_items - Allocated items.
|
|
28
|
+
* @returns Deflection support pairs.
|
|
29
|
+
*/
|
|
30
|
+
calculate_support_data(multi_items: MultiContainerAllocatedItems): [number, number][];
|
|
31
|
+
/**
|
|
32
|
+
* @returns Merged grouper 1 length.
|
|
33
|
+
*/
|
|
34
|
+
calculate_container_length(): number;
|
|
35
|
+
/**
|
|
36
|
+
* @param center_of_mass_by_grouper - CM per grouper.
|
|
37
|
+
* @returns Chassis forces.
|
|
38
|
+
*/
|
|
39
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper: Record<number, CenterOfMass>): ChassiForces;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=SemiReboqueModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemiReboqueModel.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/SemiReboqueModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAA;AAO5F,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMhD;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGxB;IACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IAEpD;;OAEG;gBACS,SAAS,EAAE,SAAS;IAqBhC;;;OAGG;IACH,yBAAyB,CAAC,WAAW,EAAE,4BAA4B,GAAG,MAAM,EAAE;IAM9E;;;OAGG;IACH,uBAAuB,CAAC,WAAW,EAAE,4BAA4B,GAAG,YAAY;IAQhF;;;OAGG;IACH,sBAAsB,CAAC,WAAW,EAAE,4BAA4B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAwBrF;;OAEG;IACH,0BAA0B,IAAI,MAAM;IAKpC;;;OAGG;IACH,gDAAgD,CAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACxD,YAAY;CAKlB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SemiReboqueModel = void 0;
|
|
4
|
+
const MergedContainers_js_1 = require("../transports/MergedContainers.js");
|
|
5
|
+
const ComputeGrouperCenterOfMass_js_1 = require("../items/ComputeGrouperCenterOfMass.js");
|
|
6
|
+
const BindChassiSolver_js_1 = require("../items/BindChassiSolver.js");
|
|
7
|
+
const VehicleVersion_js_1 = require("../../contracts/VehicleVersion.js");
|
|
8
|
+
const SemiReboqueBase_js_1 = require("./SemiReboqueBase.js");
|
|
9
|
+
const QuadSemiTrailerModel_js_1 = require("./QuadSemiTrailerModel.js");
|
|
10
|
+
const BiTruckTractorSemiTrailerModel_js_1 = require("./BiTruckTractorSemiTrailerModel.js");
|
|
11
|
+
/**
|
|
12
|
+
* Semi-reboque axle weight with quad/bitruck variants.
|
|
13
|
+
*/
|
|
14
|
+
class SemiReboqueModel {
|
|
15
|
+
delegate;
|
|
16
|
+
transport;
|
|
17
|
+
merged_containers;
|
|
18
|
+
/**
|
|
19
|
+
* @param transport - Parsed transport.
|
|
20
|
+
*/
|
|
21
|
+
constructor(transport) {
|
|
22
|
+
this.transport = transport;
|
|
23
|
+
this.merged_containers = new MergedContainers_js_1.MergedContainers(transport);
|
|
24
|
+
if (transport.vehicle_version === VehicleVersion_js_1.VEHICLE_VERSION.SEMIREBOQUE_QUAD
|
|
25
|
+
|| transport.vehicle_version === VehicleVersion_js_1.VEHICLE_VERSION.SEMIREBOQUE_QUAD_ALT) {
|
|
26
|
+
this.delegate = new QuadSemiTrailerModel_js_1.QuadSemiTrailerModel(transport);
|
|
27
|
+
}
|
|
28
|
+
else if (transport.vehicle_version === VehicleVersion_js_1.VEHICLE_VERSION.SEMIREBOQUE_BITRUCK) {
|
|
29
|
+
this.delegate = new BiTruckTractorSemiTrailerModel_js_1.BiTruckTractorSemiTrailerModel(transport);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const base = new SemiReboqueBase_js_1.SemiReboqueBase(transport);
|
|
33
|
+
base.set_linear_system_matrix();
|
|
34
|
+
this.delegate = base;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @param multi_items - Allocated items.
|
|
39
|
+
* @returns Loaded weights per axle.
|
|
40
|
+
*/
|
|
41
|
+
calculate_weight_on_axles(multi_items) {
|
|
42
|
+
const forces = this.calculate_chassi_forces(multi_items);
|
|
43
|
+
return forces.list_axles_indexes().map((index) => forces.get_force_on_axle(index));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @param multi_items - Allocated items.
|
|
47
|
+
* @returns Chassis forces.
|
|
48
|
+
*/
|
|
49
|
+
calculate_chassi_forces(multi_items) {
|
|
50
|
+
return (0, ComputeGrouperCenterOfMass_js_1.calculate_chassi_forces_from_multi)(this.transport, multi_items, (0, BindChassiSolver_js_1.bind_chassi_solver)(this));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @param multi_items - Allocated items.
|
|
54
|
+
* @returns Deflection support pairs.
|
|
55
|
+
*/
|
|
56
|
+
calculate_support_data(multi_items) {
|
|
57
|
+
const quad_or_bitruck = this.transport.vehicle_version === VehicleVersion_js_1.VEHICLE_VERSION.SEMIREBOQUE_QUAD
|
|
58
|
+
|| this.transport.vehicle_version === VehicleVersion_js_1.VEHICLE_VERSION.SEMIREBOQUE_QUAD_ALT
|
|
59
|
+
|| this.transport.vehicle_version === VehicleVersion_js_1.VEHICLE_VERSION.SEMIREBOQUE_BITRUCK;
|
|
60
|
+
if (quad_or_bitruck) {
|
|
61
|
+
const center_of_mass_by_grouper = (0, ComputeGrouperCenterOfMass_js_1.compute_center_of_mass_by_grouper)(multi_items, this.merged_containers);
|
|
62
|
+
const quad = this.delegate;
|
|
63
|
+
const forces = quad.equivalent_semi_trailer
|
|
64
|
+
.calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper);
|
|
65
|
+
const positions = quad.equivalent_semi_trailer.chassi_positions;
|
|
66
|
+
return [[positions[3], forces.get_force_on_pin(0)], [positions[4], forces.get_force_on_axle(2)]];
|
|
67
|
+
}
|
|
68
|
+
const forces = this.calculate_chassi_forces(multi_items);
|
|
69
|
+
const base = this.delegate;
|
|
70
|
+
return [
|
|
71
|
+
[base.chassi_positions[3], forces.get_force_on_pin(0)],
|
|
72
|
+
[base.chassi_positions[4], forces.get_force_on_axle(2)]
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @returns Merged grouper 1 length.
|
|
77
|
+
*/
|
|
78
|
+
calculate_container_length() {
|
|
79
|
+
return this.merged_containers.get_container_by_grouper_index(1).length;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @param center_of_mass_by_grouper - CM per grouper.
|
|
83
|
+
* @returns Chassis forces.
|
|
84
|
+
*/
|
|
85
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper) {
|
|
86
|
+
return this.delegate.calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.SemiReboqueModel = SemiReboqueModel;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Transport } from '../transports/Transport.js';
|
|
2
|
+
import { CenterOfMass } from '../items/CenterOfMass.js';
|
|
3
|
+
import { ChassiForces } from './ChassiForces.js';
|
|
4
|
+
/**
|
|
5
|
+
* Two-axle truck lever equilibrium.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SimpleTruckBase {
|
|
8
|
+
private readonly transport;
|
|
9
|
+
axles_positions: number[];
|
|
10
|
+
/**
|
|
11
|
+
* @param transport - Parsed transport.
|
|
12
|
+
*/
|
|
13
|
+
constructor(transport: Transport);
|
|
14
|
+
/**
|
|
15
|
+
* @param center_of_mass_by_grouper - CM per grouper id.
|
|
16
|
+
* @returns Chassis forces.
|
|
17
|
+
*/
|
|
18
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper: Record<number, CenterOfMass>): ChassiForces;
|
|
19
|
+
/**
|
|
20
|
+
* @param axles_positions - Optional preset positions.
|
|
21
|
+
*/
|
|
22
|
+
set_axles_positions(axles_positions?: number[]): void;
|
|
23
|
+
/**
|
|
24
|
+
* @param center_of_mass - Load center of mass.
|
|
25
|
+
* @returns Axle 1 and 2 cargo reactions.
|
|
26
|
+
*/
|
|
27
|
+
private solve_linear_system;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=SimpleTruckBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleTruckBase.d.ts","sourceRoot":"","sources":["../../../../src/core/physics/models/SimpleTruckBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;GAEG;AACH,qBAAa,eAAe;IAOZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IALtC,eAAe,EAAE,MAAM,EAAE,CAAK;IAE9B;;OAEG;gBAC0B,SAAS,EAAE,SAAS;IAKjD;;;OAGG;IACH,gDAAgD,CAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACxD,YAAY;IASf;;OAEG;IACH,mBAAmB,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAcrD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAY9B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SimpleTruckBase = void 0;
|
|
4
|
+
const Chassi_js_1 = require("../transports/Chassi.js");
|
|
5
|
+
const ChassiReference_js_1 = require("../../contracts/ChassiReference.js");
|
|
6
|
+
const ChassiForces_js_1 = require("./ChassiForces.js");
|
|
7
|
+
/**
|
|
8
|
+
* Two-axle truck lever equilibrium.
|
|
9
|
+
*/
|
|
10
|
+
class SimpleTruckBase {
|
|
11
|
+
transport;
|
|
12
|
+
axles_positions = [];
|
|
13
|
+
/**
|
|
14
|
+
* @param transport - Parsed transport.
|
|
15
|
+
*/
|
|
16
|
+
constructor(transport) {
|
|
17
|
+
this.transport = transport;
|
|
18
|
+
this.set_axles_positions();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @param center_of_mass_by_grouper - CM per grouper id.
|
|
22
|
+
* @returns Chassis forces.
|
|
23
|
+
*/
|
|
24
|
+
calculate_chassi_forces_with_load_center_of_mass(center_of_mass_by_grouper) {
|
|
25
|
+
const center_of_mass = center_of_mass_by_grouper[1];
|
|
26
|
+
const [axle_1, axle_2] = this.solve_linear_system(center_of_mass);
|
|
27
|
+
const forces = new ChassiForces_js_1.ChassiForces();
|
|
28
|
+
forces.add_axle_forces([axle_1, axle_2]);
|
|
29
|
+
return forces;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @param axles_positions - Optional preset positions.
|
|
33
|
+
*/
|
|
34
|
+
set_axles_positions(axles_positions) {
|
|
35
|
+
if (axles_positions) {
|
|
36
|
+
this.axles_positions = axles_positions;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const chassi = new Chassi_js_1.Chassi(this.transport);
|
|
40
|
+
this.axles_positions = [
|
|
41
|
+
chassi.get_axle_position(0, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1),
|
|
42
|
+
chassi.get_axle_position(1, ChassiReference_js_1.CHASSI_REFERENCE.GROUPER_1)
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @param center_of_mass - Load center of mass.
|
|
47
|
+
* @returns Axle 1 and 2 cargo reactions.
|
|
48
|
+
*/
|
|
49
|
+
solve_linear_system(center_of_mass) {
|
|
50
|
+
const axle_1_position = this.axles_positions[0];
|
|
51
|
+
const axle_2_position = this.axles_positions[1];
|
|
52
|
+
const axle_1 = center_of_mass.mass
|
|
53
|
+
* (center_of_mass.z - axle_2_position)
|
|
54
|
+
/ (axle_1_position - axle_2_position);
|
|
55
|
+
const axle_2 = center_of_mass.mass
|
|
56
|
+
* (axle_1_position - center_of_mass.z)
|
|
57
|
+
/ (axle_1_position - axle_2_position);
|
|
58
|
+
return [axle_1, axle_2];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.SimpleTruckBase = SimpleTruckBase;
|