formulab 0.1.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +283 -2
- package/README.md +147 -48
- package/dist/automotive/brakingDistance.d.ts +16 -0
- package/dist/automotive/brakingDistance.d.ts.map +1 -0
- package/dist/automotive/brakingDistance.js +47 -0
- package/dist/automotive/brakingDistance.js.map +1 -0
- package/dist/automotive/gearRatio.d.ts +2 -2
- package/dist/automotive/gearRatio.d.ts.map +1 -1
- package/dist/automotive/gearRatio.js +1 -1
- package/dist/automotive/gearRatio.js.map +1 -1
- package/dist/automotive/index.d.ts +2 -1
- package/dist/automotive/index.d.ts.map +1 -1
- package/dist/automotive/index.js +1 -0
- package/dist/automotive/index.js.map +1 -1
- package/dist/automotive/types.d.ts +18 -2
- package/dist/automotive/types.d.ts.map +1 -1
- package/dist/battery/batteryPackConfig.d.ts +10 -0
- package/dist/battery/batteryPackConfig.d.ts.map +1 -0
- package/dist/battery/batteryPackConfig.js +28 -0
- package/dist/battery/batteryPackConfig.js.map +1 -0
- package/dist/battery/bmsBalancing.d.ts +11 -0
- package/dist/battery/bmsBalancing.d.ts.map +1 -0
- package/dist/battery/bmsBalancing.js +47 -0
- package/dist/battery/bmsBalancing.js.map +1 -0
- package/dist/battery/cRate.d.ts +10 -0
- package/dist/battery/cRate.d.ts.map +1 -0
- package/dist/battery/cRate.js +29 -0
- package/dist/battery/cRate.js.map +1 -0
- package/dist/battery/chargingProfile.d.ts +11 -0
- package/dist/battery/chargingProfile.d.ts.map +1 -0
- package/dist/battery/chargingProfile.js +38 -0
- package/dist/battery/chargingProfile.js.map +1 -0
- package/dist/battery/cycleLife.d.ts +11 -0
- package/dist/battery/cycleLife.d.ts.map +1 -0
- package/dist/battery/cycleLife.js +70 -0
- package/dist/battery/cycleLife.js.map +1 -0
- package/dist/battery/energyDensity.d.ts +10 -0
- package/dist/battery/energyDensity.d.ts.map +1 -0
- package/dist/battery/energyDensity.js +20 -0
- package/dist/battery/energyDensity.js.map +1 -0
- package/dist/battery/index.d.ts +12 -0
- package/dist/battery/index.d.ts.map +1 -0
- package/dist/battery/index.js +12 -0
- package/dist/battery/index.js.map +1 -0
- package/dist/battery/internalResistance.d.ts +11 -0
- package/dist/battery/internalResistance.d.ts.map +1 -0
- package/dist/battery/internalResistance.js +18 -0
- package/dist/battery/internalResistance.js.map +1 -0
- package/dist/battery/selfDischarge.d.ts +10 -0
- package/dist/battery/selfDischarge.d.ts.map +1 -0
- package/dist/battery/selfDischarge.js +17 -0
- package/dist/battery/selfDischarge.js.map +1 -0
- package/dist/battery/stateOfHealth.d.ts +11 -0
- package/dist/battery/stateOfHealth.d.ts.map +1 -0
- package/dist/battery/stateOfHealth.js +33 -0
- package/dist/battery/stateOfHealth.js.map +1 -0
- package/dist/battery/thermalRunaway.d.ts +11 -0
- package/dist/battery/thermalRunaway.d.ts.map +1 -0
- package/dist/battery/thermalRunaway.js +28 -0
- package/dist/battery/thermalRunaway.js.map +1 -0
- package/dist/battery/types.d.ts +175 -0
- package/dist/battery/types.d.ts.map +1 -0
- package/dist/battery/types.js +5 -0
- package/dist/battery/types.js.map +1 -0
- package/dist/chemical/dilution.d.ts.map +1 -1
- package/dist/chemical/dilution.js +21 -24
- package/dist/chemical/dilution.js.map +1 -1
- package/dist/chemical/heatTransfer.d.ts +16 -0
- package/dist/chemical/heatTransfer.d.ts.map +1 -0
- package/dist/chemical/heatTransfer.js +85 -0
- package/dist/chemical/heatTransfer.js.map +1 -0
- package/dist/chemical/index.d.ts +3 -1
- package/dist/chemical/index.d.ts.map +1 -1
- package/dist/chemical/index.js +2 -0
- package/dist/chemical/index.js.map +1 -1
- package/dist/chemical/injectionCycle.d.ts +3 -0
- package/dist/chemical/injectionCycle.d.ts.map +1 -1
- package/dist/chemical/injectionCycle.js +1 -4
- package/dist/chemical/injectionCycle.js.map +1 -1
- package/dist/chemical/ph.d.ts +3 -0
- package/dist/chemical/ph.d.ts.map +1 -1
- package/dist/chemical/ph.js +1 -4
- package/dist/chemical/ph.js.map +1 -1
- package/dist/chemical/pipeFlow.d.ts +17 -0
- package/dist/chemical/pipeFlow.d.ts.map +1 -0
- package/dist/chemical/pipeFlow.js +112 -0
- package/dist/chemical/pipeFlow.js.map +1 -0
- package/dist/chemical/reactor.d.ts +3 -0
- package/dist/chemical/reactor.d.ts.map +1 -1
- package/dist/chemical/reactor.js +3 -6
- package/dist/chemical/reactor.js.map +1 -1
- package/dist/chemical/shelfLife.d.ts.map +1 -1
- package/dist/chemical/shelfLife.js +1 -7
- package/dist/chemical/shelfLife.js.map +1 -1
- package/dist/chemical/types.d.ts +82 -10
- package/dist/chemical/types.d.ts.map +1 -1
- package/dist/construction/index.d.ts +2 -1
- package/dist/construction/index.d.ts.map +1 -1
- package/dist/construction/index.js +1 -0
- package/dist/construction/index.js.map +1 -1
- package/dist/construction/momentOfInertia.d.ts +17 -0
- package/dist/construction/momentOfInertia.d.ts.map +1 -0
- package/dist/construction/momentOfInertia.js +204 -0
- package/dist/construction/momentOfInertia.js.map +1 -0
- package/dist/construction/pert.d.ts.map +1 -1
- package/dist/construction/pert.js +1 -17
- package/dist/construction/pert.js.map +1 -1
- package/dist/construction/types.d.ts +50 -0
- package/dist/construction/types.d.ts.map +1 -1
- package/dist/electronics/awg.d.ts.map +1 -1
- package/dist/electronics/awg.js +1 -4
- package/dist/electronics/awg.js.map +1 -1
- package/dist/electronics/capacitor.d.ts +3 -0
- package/dist/electronics/capacitor.d.ts.map +1 -1
- package/dist/electronics/capacitor.js +1 -4
- package/dist/electronics/capacitor.js.map +1 -1
- package/dist/electronics/index.d.ts +2 -1
- package/dist/electronics/index.d.ts.map +1 -1
- package/dist/electronics/index.js +1 -0
- package/dist/electronics/index.js.map +1 -1
- package/dist/electronics/led.d.ts.map +1 -1
- package/dist/electronics/led.js +1 -4
- package/dist/electronics/led.js.map +1 -1
- package/dist/electronics/ohmsLaw.d.ts +12 -0
- package/dist/electronics/ohmsLaw.d.ts.map +1 -0
- package/dist/electronics/ohmsLaw.js +69 -0
- package/dist/electronics/ohmsLaw.js.map +1 -0
- package/dist/electronics/smt-takt.d.ts +3 -0
- package/dist/electronics/smt-takt.d.ts.map +1 -1
- package/dist/electronics/smt-takt.js +1 -4
- package/dist/electronics/smt-takt.js.map +1 -1
- package/dist/electronics/solder.d.ts +3 -0
- package/dist/electronics/solder.d.ts.map +1 -1
- package/dist/electronics/solder.js +1 -4
- package/dist/electronics/solder.js.map +1 -1
- package/dist/electronics/stencil.d.ts.map +1 -1
- package/dist/electronics/stencil.js +1 -4
- package/dist/electronics/stencil.js.map +1 -1
- package/dist/electronics/trace.d.ts.map +1 -1
- package/dist/electronics/trace.js +1 -4
- package/dist/electronics/trace.js.map +1 -1
- package/dist/electronics/types.d.ts +24 -0
- package/dist/electronics/types.d.ts.map +1 -1
- package/dist/electronics/via.d.ts.map +1 -1
- package/dist/electronics/via.js +1 -4
- package/dist/electronics/via.js.map +1 -1
- package/dist/energy/carbonFootprint.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.js +2 -1
- package/dist/energy/carbonFootprint.js.map +1 -1
- package/dist/energy/index.d.ts +2 -1
- package/dist/energy/index.d.ts.map +1 -1
- package/dist/energy/index.js +1 -0
- package/dist/energy/index.js.map +1 -1
- package/dist/energy/powerCost.d.ts.map +1 -1
- package/dist/energy/powerCost.js +2 -1
- package/dist/energy/powerCost.js.map +1 -1
- package/dist/energy/solarOutput.d.ts +14 -0
- package/dist/energy/solarOutput.d.ts.map +1 -0
- package/dist/energy/solarOutput.js +54 -0
- package/dist/energy/solarOutput.js.map +1 -0
- package/dist/energy/types.d.ts +20 -0
- package/dist/energy/types.d.ts.map +1 -1
- package/dist/environmental/emissionsIntensity.d.ts +11 -0
- package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
- package/dist/environmental/emissionsIntensity.js +26 -0
- package/dist/environmental/emissionsIntensity.js.map +1 -0
- package/dist/environmental/energyIntensity.d.ts +11 -0
- package/dist/environmental/energyIntensity.d.ts.map +1 -0
- package/dist/environmental/energyIntensity.js +19 -0
- package/dist/environmental/energyIntensity.js.map +1 -0
- package/dist/environmental/esgSummary.d.ts +11 -0
- package/dist/environmental/esgSummary.d.ts.map +1 -0
- package/dist/environmental/esgSummary.js +39 -0
- package/dist/environmental/esgSummary.js.map +1 -0
- package/dist/environmental/gwpCalculator.d.ts +11 -0
- package/dist/environmental/gwpCalculator.d.ts.map +1 -0
- package/dist/environmental/gwpCalculator.js +31 -0
- package/dist/environmental/gwpCalculator.js.map +1 -0
- package/dist/environmental/index.d.ts +12 -0
- package/dist/environmental/index.d.ts.map +1 -0
- package/dist/environmental/index.js +12 -0
- package/dist/environmental/index.js.map +1 -0
- package/dist/environmental/productCarbonFootprint.d.ts +11 -0
- package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
- package/dist/environmental/productCarbonFootprint.js +29 -0
- package/dist/environmental/productCarbonFootprint.js.map +1 -0
- package/dist/environmental/scope1Emissions.d.ts +11 -0
- package/dist/environmental/scope1Emissions.d.ts.map +1 -0
- package/dist/environmental/scope1Emissions.js +35 -0
- package/dist/environmental/scope1Emissions.js.map +1 -0
- package/dist/environmental/scope2Emissions.d.ts +11 -0
- package/dist/environmental/scope2Emissions.d.ts.map +1 -0
- package/dist/environmental/scope2Emissions.js +49 -0
- package/dist/environmental/scope2Emissions.js.map +1 -0
- package/dist/environmental/scope3Emissions.d.ts +11 -0
- package/dist/environmental/scope3Emissions.d.ts.map +1 -0
- package/dist/environmental/scope3Emissions.js +36 -0
- package/dist/environmental/scope3Emissions.js.map +1 -0
- package/dist/environmental/types.d.ts +165 -0
- package/dist/environmental/types.d.ts.map +1 -0
- package/dist/environmental/types.js +5 -0
- package/dist/environmental/types.js.map +1 -0
- package/dist/environmental/vocEmissions.d.ts +11 -0
- package/dist/environmental/vocEmissions.d.ts.map +1 -0
- package/dist/environmental/vocEmissions.js +23 -0
- package/dist/environmental/vocEmissions.js.map +1 -0
- package/dist/environmental/waterFootprint.d.ts +11 -0
- package/dist/environmental/waterFootprint.d.ts.map +1 -0
- package/dist/environmental/waterFootprint.js +21 -0
- package/dist/environmental/waterFootprint.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/logistics/cbm.d.ts +7 -2
- package/dist/logistics/cbm.d.ts.map +1 -1
- package/dist/logistics/cbm.js +7 -2
- package/dist/logistics/cbm.js.map +1 -1
- package/dist/logistics/eoq.d.ts.map +1 -1
- package/dist/logistics/eoq.js +11 -0
- package/dist/logistics/eoq.js.map +1 -1
- package/dist/logistics/fillRate.d.ts.map +1 -1
- package/dist/logistics/fillRate.js +1 -17
- package/dist/logistics/fillRate.js.map +1 -1
- package/dist/logistics/safetyStock.d.ts.map +1 -1
- package/dist/logistics/safetyStock.js +2 -55
- package/dist/logistics/safetyStock.js.map +1 -1
- package/dist/machining/boltCircle.d.ts +16 -0
- package/dist/machining/boltCircle.d.ts.map +1 -0
- package/dist/machining/boltCircle.js +36 -0
- package/dist/machining/boltCircle.js.map +1 -0
- package/dist/machining/boringBarDeflection.d.ts +17 -0
- package/dist/machining/boringBarDeflection.d.ts.map +1 -0
- package/dist/machining/boringBarDeflection.js +54 -0
- package/dist/machining/boringBarDeflection.js.map +1 -0
- package/dist/machining/cuspHeight.d.ts +15 -0
- package/dist/machining/cuspHeight.d.ts.map +1 -0
- package/dist/machining/cuspHeight.js +23 -0
- package/dist/machining/cuspHeight.js.map +1 -0
- package/dist/machining/cycleTimeEstimator.d.ts +18 -0
- package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
- package/dist/machining/cycleTimeEstimator.js +62 -0
- package/dist/machining/cycleTimeEstimator.js.map +1 -0
- package/dist/machining/effectiveDiameter.d.ts +17 -0
- package/dist/machining/effectiveDiameter.d.ts.map +1 -0
- package/dist/machining/effectiveDiameter.js +24 -0
- package/dist/machining/effectiveDiameter.js.map +1 -0
- package/dist/machining/gaugeBlockStack.d.ts +16 -0
- package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
- package/dist/machining/gaugeBlockStack.js +138 -0
- package/dist/machining/gaugeBlockStack.js.map +1 -0
- package/dist/machining/index.d.ts +14 -0
- package/dist/machining/index.d.ts.map +1 -0
- package/dist/machining/index.js +14 -0
- package/dist/machining/index.js.map +1 -0
- package/dist/machining/radialChipThinning.d.ts +18 -0
- package/dist/machining/radialChipThinning.d.ts.map +1 -0
- package/dist/machining/radialChipThinning.js +30 -0
- package/dist/machining/radialChipThinning.js.map +1 -0
- package/dist/machining/sineBarHeight.d.ts +16 -0
- package/dist/machining/sineBarHeight.d.ts.map +1 -0
- package/dist/machining/sineBarHeight.js +32 -0
- package/dist/machining/sineBarHeight.js.map +1 -0
- package/dist/machining/threadOverWires.d.ts +21 -0
- package/dist/machining/threadOverWires.d.ts.map +1 -0
- package/dist/machining/threadOverWires.js +54 -0
- package/dist/machining/threadOverWires.js.map +1 -0
- package/dist/machining/toolDeflection.d.ts +16 -0
- package/dist/machining/toolDeflection.d.ts.map +1 -0
- package/dist/machining/toolDeflection.js +36 -0
- package/dist/machining/toolDeflection.js.map +1 -0
- package/dist/machining/triangleSolver.d.ts +21 -0
- package/dist/machining/triangleSolver.d.ts.map +1 -0
- package/dist/machining/triangleSolver.js +120 -0
- package/dist/machining/triangleSolver.js.map +1 -0
- package/dist/machining/truePosition.d.ts +19 -0
- package/dist/machining/truePosition.d.ts.map +1 -0
- package/dist/machining/truePosition.js +44 -0
- package/dist/machining/truePosition.js.map +1 -0
- package/dist/machining/types.d.ts +201 -0
- package/dist/machining/types.d.ts.map +1 -0
- package/dist/machining/types.js +2 -0
- package/dist/machining/types.js.map +1 -0
- package/dist/math.d.ts +26 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +95 -0
- package/dist/math.js.map +1 -0
- package/dist/metal/bearing.d.ts.map +1 -1
- package/dist/metal/bearing.js +1 -4
- package/dist/metal/bearing.js.map +1 -1
- package/dist/metal/bendAllowance.d.ts.map +1 -1
- package/dist/metal/bendAllowance.js +2 -1
- package/dist/metal/bendAllowance.js.map +1 -1
- package/dist/metal/bolt.d.ts.map +1 -1
- package/dist/metal/bolt.js +4 -7
- package/dist/metal/bolt.js.map +1 -1
- package/dist/metal/cutting.d.ts.map +1 -1
- package/dist/metal/cutting.js +1 -4
- package/dist/metal/cutting.js.map +1 -1
- package/dist/metal/cuttingStock.d.ts.map +1 -1
- package/dist/metal/cuttingStock.js +1 -4
- package/dist/metal/cuttingStock.js.map +1 -1
- package/dist/metal/flangeSpec.d.ts +10 -0
- package/dist/metal/flangeSpec.d.ts.map +1 -0
- package/dist/metal/flangeSpec.js +81 -0
- package/dist/metal/flangeSpec.js.map +1 -0
- package/dist/metal/gear.d.ts.map +1 -1
- package/dist/metal/gear.js +1 -4
- package/dist/metal/gear.js.map +1 -1
- package/dist/metal/hardness.d.ts.map +1 -1
- package/dist/metal/hardness.js +1 -4
- package/dist/metal/hardness.js.map +1 -1
- package/dist/metal/index.d.ts +4 -1
- package/dist/metal/index.d.ts.map +1 -1
- package/dist/metal/index.js +3 -0
- package/dist/metal/index.js.map +1 -1
- package/dist/metal/materialGradeConverter.d.ts +10 -0
- package/dist/metal/materialGradeConverter.d.ts.map +1 -0
- package/dist/metal/materialGradeConverter.js +78 -0
- package/dist/metal/materialGradeConverter.js.map +1 -0
- package/dist/metal/metalWeight.d.ts +13 -3
- package/dist/metal/metalWeight.d.ts.map +1 -1
- package/dist/metal/metalWeight.js +24 -35
- package/dist/metal/metalWeight.js.map +1 -1
- package/dist/metal/pipeSpec.d.ts +10 -0
- package/dist/metal/pipeSpec.d.ts.map +1 -0
- package/dist/metal/pipeSpec.js +96 -0
- package/dist/metal/pipeSpec.js.map +1 -0
- package/dist/metal/pressFit.d.ts.map +1 -1
- package/dist/metal/pressFit.js +1 -4
- package/dist/metal/pressFit.js.map +1 -1
- package/dist/metal/pressTonnage.d.ts +10 -4
- package/dist/metal/pressTonnage.d.ts.map +1 -1
- package/dist/metal/pressTonnage.js +199 -25
- package/dist/metal/pressTonnage.js.map +1 -1
- package/dist/metal/roughness.d.ts.map +1 -1
- package/dist/metal/roughness.js +2 -5
- package/dist/metal/roughness.js.map +1 -1
- package/dist/metal/screw.d.ts.map +1 -1
- package/dist/metal/screw.js +1 -4
- package/dist/metal/screw.js.map +1 -1
- package/dist/metal/spring.d.ts.map +1 -1
- package/dist/metal/spring.js +1 -4
- package/dist/metal/spring.js.map +1 -1
- package/dist/metal/tap.d.ts.map +1 -1
- package/dist/metal/tap.js +1 -4
- package/dist/metal/tap.js.map +1 -1
- package/dist/metal/thread.d.ts.map +1 -1
- package/dist/metal/thread.js +1 -4
- package/dist/metal/thread.js.map +1 -1
- package/dist/metal/tolerance.d.ts.map +1 -1
- package/dist/metal/tolerance.js +1 -4
- package/dist/metal/tolerance.js.map +1 -1
- package/dist/metal/types.d.ts +100 -13
- package/dist/metal/types.d.ts.map +1 -1
- package/dist/metal/vibration.d.ts.map +1 -1
- package/dist/metal/vibration.js +1 -4
- package/dist/metal/vibration.js.map +1 -1
- package/dist/metal/weldHeat.d.ts +2 -1
- package/dist/metal/weldHeat.d.ts.map +1 -1
- package/dist/metal/weldHeat.js +203 -44
- package/dist/metal/weldHeat.js.map +1 -1
- package/dist/metal/welding.d.ts.map +1 -1
- package/dist/metal/welding.js +3 -2
- package/dist/metal/welding.js.map +1 -1
- package/dist/quality/aql.d.ts.map +1 -1
- package/dist/quality/aql.js +1 -4
- package/dist/quality/aql.js.map +1 -1
- package/dist/quality/controlChart.d.ts +26 -0
- package/dist/quality/controlChart.d.ts.map +1 -0
- package/dist/quality/controlChart.js +216 -0
- package/dist/quality/controlChart.js.map +1 -0
- package/dist/quality/cpk.d.ts +16 -4
- package/dist/quality/cpk.d.ts.map +1 -1
- package/dist/quality/cpk.js +16 -4
- package/dist/quality/cpk.js.map +1 -1
- package/dist/quality/downtime.d.ts.map +1 -1
- package/dist/quality/downtime.js +1 -4
- package/dist/quality/downtime.js.map +1 -1
- package/dist/quality/dpmo.d.ts.map +1 -1
- package/dist/quality/dpmo.js +2 -65
- package/dist/quality/dpmo.js.map +1 -1
- package/dist/quality/index.d.ts +2 -1
- package/dist/quality/index.d.ts.map +1 -1
- package/dist/quality/index.js +1 -0
- package/dist/quality/index.js.map +1 -1
- package/dist/quality/lineBalancing.d.ts.map +1 -1
- package/dist/quality/lineBalancing.js +1 -4
- package/dist/quality/lineBalancing.js.map +1 -1
- package/dist/quality/mtbf.d.ts.map +1 -1
- package/dist/quality/mtbf.js +1 -4
- package/dist/quality/mtbf.js.map +1 -1
- package/dist/quality/oee.d.ts +13 -1
- package/dist/quality/oee.d.ts.map +1 -1
- package/dist/quality/oee.js +30 -9
- package/dist/quality/oee.js.map +1 -1
- package/dist/quality/ppk.d.ts.map +1 -1
- package/dist/quality/ppk.js +2 -20
- package/dist/quality/ppk.js.map +1 -1
- package/dist/quality/ppm.d.ts.map +1 -1
- package/dist/quality/ppm.js +2 -84
- package/dist/quality/ppm.js.map +1 -1
- package/dist/quality/rpn.d.ts.map +1 -1
- package/dist/quality/rpn.js +1 -4
- package/dist/quality/rpn.js.map +1 -1
- package/dist/quality/types.d.ts +31 -0
- package/dist/quality/types.d.ts.map +1 -1
- package/dist/quality/yield.d.ts.map +1 -1
- package/dist/quality/yield.js +1 -4
- package/dist/quality/yield.js.map +1 -1
- package/dist/safety/fallClearance.d.ts +12 -3
- package/dist/safety/fallClearance.d.ts.map +1 -1
- package/dist/safety/fallClearance.js +73 -17
- package/dist/safety/fallClearance.js.map +1 -1
- package/dist/safety/index.d.ts +2 -1
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +1 -0
- package/dist/safety/index.js.map +1 -1
- package/dist/safety/nioshLifting.d.ts +19 -10
- package/dist/safety/nioshLifting.d.ts.map +1 -1
- package/dist/safety/nioshLifting.js +19 -10
- package/dist/safety/nioshLifting.js.map +1 -1
- package/dist/safety/types.d.ts +25 -0
- package/dist/safety/types.d.ts.map +1 -1
- package/dist/safety/ventilationRate.d.ts +12 -0
- package/dist/safety/ventilationRate.d.ts.map +1 -0
- package/dist/safety/ventilationRate.js +71 -0
- package/dist/safety/ventilationRate.js.map +1 -0
- package/dist/utility/assignment.d.ts.map +1 -1
- package/dist/utility/assignment.js +1 -7
- package/dist/utility/assignment.js.map +1 -1
- package/dist/utility/index.d.ts +2 -2
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/index.js +1 -1
- package/dist/utility/index.js.map +1 -1
- package/dist/utility/types.d.ts +0 -16
- package/dist/utility/types.d.ts.map +1 -1
- package/dist/utility/unit.d.ts +1 -1
- package/dist/utility/unit.d.ts.map +1 -1
- package/dist/utility/unit.js +2 -8
- package/dist/utility/unit.js.map +1 -1
- package/dist/utils.d.ts +5 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +11 -2
- package/dist/utils.js.map +1 -1
- package/package.json +37 -4
- package/dist/utility/qrcode.d.ts +0 -30
- package/dist/utility/qrcode.d.ts.map +0 -1
- package/dist/utility/qrcode.js +0 -30
- package/dist/utility/qrcode.js.map +0 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Metric 47-piece gauge block set (mm)
|
|
4
|
+
* Standard: Grade 1 metric set per ISO 3650
|
|
5
|
+
*/
|
|
6
|
+
const METRIC_47_SET = [
|
|
7
|
+
// Series 1: 1.001–1.009 (9 blocks, 0.001 steps)
|
|
8
|
+
1.001, 1.002, 1.003, 1.004, 1.005, 1.006, 1.007, 1.008, 1.009,
|
|
9
|
+
// Series 2: 1.01–1.49 (49 blocks → typically 1.01-1.09 step 0.01, then 1.10-1.49 step 0.10)
|
|
10
|
+
// Actually standard 47-set has:
|
|
11
|
+
// 9 × 0.001: 1.001-1.009
|
|
12
|
+
// 9 × 0.01: 1.01-1.09
|
|
13
|
+
// 9 × 0.10: 1.10-1.90 (but typically only up to 1.49 in some sets)
|
|
14
|
+
// Let's use the standard 47-piece metric set:
|
|
15
|
+
1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09,
|
|
16
|
+
// Series 3: 0.5 step
|
|
17
|
+
1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90,
|
|
18
|
+
// Series 4: whole mm
|
|
19
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
20
|
+
// Series 5: tens
|
|
21
|
+
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Metric 88-piece gauge block set (mm) — extended precision
|
|
25
|
+
*/
|
|
26
|
+
const METRIC_88_SET = [
|
|
27
|
+
// 0.001 step: 1.001-1.009
|
|
28
|
+
1.001, 1.002, 1.003, 1.004, 1.005, 1.006, 1.007, 1.008, 1.009,
|
|
29
|
+
// 0.01 step: 1.01-1.49
|
|
30
|
+
1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09,
|
|
31
|
+
1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19,
|
|
32
|
+
1.20, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29,
|
|
33
|
+
1.30, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39,
|
|
34
|
+
1.40, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49,
|
|
35
|
+
// whole mm: 1-9
|
|
36
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
37
|
+
// tens: 10-100
|
|
38
|
+
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Inch 81-piece gauge block set
|
|
42
|
+
*/
|
|
43
|
+
const INCH_81_SET = [
|
|
44
|
+
// 0.0001 step: 0.1001-0.1009
|
|
45
|
+
0.1001, 0.1002, 0.1003, 0.1004, 0.1005, 0.1006, 0.1007, 0.1008, 0.1009,
|
|
46
|
+
// 0.001 step: 0.101-0.149
|
|
47
|
+
0.101, 0.102, 0.103, 0.104, 0.105, 0.106, 0.107, 0.108, 0.109,
|
|
48
|
+
0.110, 0.111, 0.112, 0.113, 0.114, 0.115, 0.116, 0.117, 0.118, 0.119,
|
|
49
|
+
0.120, 0.121, 0.122, 0.123, 0.124, 0.125, 0.126, 0.127, 0.128, 0.129,
|
|
50
|
+
0.130, 0.131, 0.132, 0.133, 0.134, 0.135, 0.136, 0.137, 0.138, 0.139,
|
|
51
|
+
0.140, 0.141, 0.142, 0.143, 0.144, 0.145, 0.146, 0.147, 0.148, 0.149,
|
|
52
|
+
// 0.050 step: 0.050-0.950
|
|
53
|
+
0.050, 0.100, 0.150, 0.200, 0.250, 0.300, 0.350, 0.400, 0.450,
|
|
54
|
+
0.500, 0.550, 0.600, 0.650, 0.700, 0.750, 0.800, 0.850, 0.900, 0.950,
|
|
55
|
+
// whole: 1.000-4.000
|
|
56
|
+
1.000, 2.000, 3.000, 4.000,
|
|
57
|
+
];
|
|
58
|
+
const SETS = {
|
|
59
|
+
metric47: METRIC_47_SET,
|
|
60
|
+
metric88: METRIC_88_SET,
|
|
61
|
+
inch81: INCH_81_SET,
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Build a gauge block stack using successive subtraction algorithm.
|
|
65
|
+
*
|
|
66
|
+
* The algorithm works from the smallest digit up:
|
|
67
|
+
* 1. Find a block that eliminates the least significant digit
|
|
68
|
+
* 2. Subtract it from the remaining target
|
|
69
|
+
* 3. Repeat until the remaining target is 0 or no suitable block is found
|
|
70
|
+
*
|
|
71
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Gauge blocks.
|
|
72
|
+
*
|
|
73
|
+
* @param input - Gauge block stack parameters
|
|
74
|
+
* @returns GaugeBlockStackResult with selected blocks and error
|
|
75
|
+
*/
|
|
76
|
+
export function gaugeBlockStack(input) {
|
|
77
|
+
const { targetDimension, availableSet = 'metric47' } = input;
|
|
78
|
+
const setBlocks = SETS[availableSet];
|
|
79
|
+
const used = new Set();
|
|
80
|
+
const blocks = [];
|
|
81
|
+
let remaining = roundTo(targetDimension, 4);
|
|
82
|
+
// Successive subtraction algorithm (Machinery's Handbook method):
|
|
83
|
+
// 1. Find a block that, when subtracted, eliminates the least significant non-zero digit
|
|
84
|
+
// 2. Prefer blocks that reduce the number of significant decimal places
|
|
85
|
+
// 3. Repeat until remaining is 0 or no suitable block found
|
|
86
|
+
for (let iter = 0; iter < 10 && remaining > 0.0005; iter++) {
|
|
87
|
+
let bestBlock = null;
|
|
88
|
+
let bestScore = -Infinity;
|
|
89
|
+
for (const block of setBlocks) {
|
|
90
|
+
if (used.has(block))
|
|
91
|
+
continue;
|
|
92
|
+
if (block > remaining + 0.00005)
|
|
93
|
+
continue;
|
|
94
|
+
const newRemaining = roundTo(remaining - block, 4);
|
|
95
|
+
if (newRemaining < -0.00005)
|
|
96
|
+
continue;
|
|
97
|
+
// Score: prefer blocks that eliminate more decimal places
|
|
98
|
+
// Count trailing zeros in newRemaining (fewer significant decimals = better)
|
|
99
|
+
const score = trailingZeroScore(newRemaining);
|
|
100
|
+
if (score > bestScore || (score === bestScore && block > (bestBlock ?? 0))) {
|
|
101
|
+
bestScore = score;
|
|
102
|
+
bestBlock = block;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (bestBlock === null)
|
|
106
|
+
break;
|
|
107
|
+
used.add(bestBlock);
|
|
108
|
+
blocks.push(bestBlock);
|
|
109
|
+
remaining = roundTo(remaining - bestBlock, 4);
|
|
110
|
+
}
|
|
111
|
+
const totalDimension = roundTo(blocks.reduce((sum, b) => sum + b, 0), 4);
|
|
112
|
+
return {
|
|
113
|
+
targetDimension,
|
|
114
|
+
blocks: blocks.sort((a, b) => b - a),
|
|
115
|
+
totalDimension,
|
|
116
|
+
error: roundTo(Math.abs(targetDimension - totalDimension), 4),
|
|
117
|
+
blockCount: blocks.length,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Score how "clean" a number is — higher score means fewer significant decimal digits.
|
|
122
|
+
* 0 → score 4, X.X → score 3, X.XX → score 2, X.XXX → score 1, X.XXXX → score 0
|
|
123
|
+
*/
|
|
124
|
+
function trailingZeroScore(value) {
|
|
125
|
+
if (Math.abs(value) < 0.00005)
|
|
126
|
+
return 4;
|
|
127
|
+
const s = value.toFixed(4);
|
|
128
|
+
const decimals = s.split('.')[1] ?? '';
|
|
129
|
+
let zeros = 0;
|
|
130
|
+
for (let i = decimals.length - 1; i >= 0; i--) {
|
|
131
|
+
if (decimals[i] === '0')
|
|
132
|
+
zeros++;
|
|
133
|
+
else
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return zeros;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=gaugeBlockStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gaugeBlockStack.js","sourceRoot":"","sources":["../../src/machining/gaugeBlockStack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type { TruePositionInput, TruePositionResult, BoltCircleInput, BoltHole, BoltCircleResult, SineBarHeightInput, SineBarHeightResult, RadialChipThinningInput, RadialChipThinningResult, ToolMaterial, ToolDeflectionInput, ToolDeflectionResult, CuspHeightInput, CuspHeightResult, EffectiveDiameterInput, EffectiveDiameterResult, BoringBarMaterial, BoringBarDeflectionInput, BoringBarDeflectionResult, ThreadAngle, ThreadOverWiresInput, ThreadOverWiresResult, GaugeBlockStackInput, GaugeBlockStackResult, TriangleSolverInput, TriangleSolverResult, CycleTimeOperation, CycleTimeEstimatorInput, CycleTimeEstimatorResult, } from './types.js';
|
|
2
|
+
export { truePosition } from './truePosition.js';
|
|
3
|
+
export { boltCircle } from './boltCircle.js';
|
|
4
|
+
export { sineBarHeight } from './sineBarHeight.js';
|
|
5
|
+
export { radialChipThinning } from './radialChipThinning.js';
|
|
6
|
+
export { toolDeflection } from './toolDeflection.js';
|
|
7
|
+
export { cuspHeight } from './cuspHeight.js';
|
|
8
|
+
export { effectiveDiameter } from './effectiveDiameter.js';
|
|
9
|
+
export { boringBarDeflection } from './boringBarDeflection.js';
|
|
10
|
+
export { threadOverWires } from './threadOverWires.js';
|
|
11
|
+
export { gaugeBlockStack } from './gaugeBlockStack.js';
|
|
12
|
+
export { triangleSolver } from './triangleSolver.js';
|
|
13
|
+
export { cycleTimeEstimator } from './cycleTimeEstimator.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machining/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,iBAAiB,EACjB,kBAAkB,EAElB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAEhB,kBAAkB,EAClB,mBAAmB,EAEnB,uBAAuB,EACvB,wBAAwB,EAExB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EAEpB,eAAe,EACf,gBAAgB,EAEhB,sBAAsB,EACtB,uBAAuB,EAEvB,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EAEzB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EAErB,oBAAoB,EACpB,qBAAqB,EAErB,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Functions
|
|
2
|
+
export { truePosition } from './truePosition.js';
|
|
3
|
+
export { boltCircle } from './boltCircle.js';
|
|
4
|
+
export { sineBarHeight } from './sineBarHeight.js';
|
|
5
|
+
export { radialChipThinning } from './radialChipThinning.js';
|
|
6
|
+
export { toolDeflection } from './toolDeflection.js';
|
|
7
|
+
export { cuspHeight } from './cuspHeight.js';
|
|
8
|
+
export { effectiveDiameter } from './effectiveDiameter.js';
|
|
9
|
+
export { boringBarDeflection } from './boringBarDeflection.js';
|
|
10
|
+
export { threadOverWires } from './threadOverWires.js';
|
|
11
|
+
export { gaugeBlockStack } from './gaugeBlockStack.js';
|
|
12
|
+
export { triangleSolver } from './triangleSolver.js';
|
|
13
|
+
export { cycleTimeEstimator } from './cycleTimeEstimator.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machining/index.ts"],"names":[],"mappings":"AA6CA,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RadialChipThinningInput, RadialChipThinningResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate adjusted feed per tooth to compensate for radial chip thinning.
|
|
4
|
+
*
|
|
5
|
+
* When ae < D/2, the actual chip thickness is less than the programmed fz.
|
|
6
|
+
* This function computes the adjusted (higher) fz needed to maintain the target chip load.
|
|
7
|
+
*
|
|
8
|
+
* @formula
|
|
9
|
+
* chipThinningFactor = D / (2 × √(ae × (D − ae)))
|
|
10
|
+
* adjustedFz = fz_target × chipThinningFactor
|
|
11
|
+
*
|
|
12
|
+
* @reference Harvey Tool — Radial Chip Thinning guide.
|
|
13
|
+
*
|
|
14
|
+
* @param input - Chip thinning parameters
|
|
15
|
+
* @returns RadialChipThinningResult with adjusted feed and thinning factor
|
|
16
|
+
*/
|
|
17
|
+
export declare function radialChipThinning(input: RadialChipThinningInput): RadialChipThinningResult;
|
|
18
|
+
//# sourceMappingURL=radialChipThinning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radialChipThinning.d.ts","sourceRoot":"","sources":["../../src/machining/radialChipThinning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAe3F"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate adjusted feed per tooth to compensate for radial chip thinning.
|
|
4
|
+
*
|
|
5
|
+
* When ae < D/2, the actual chip thickness is less than the programmed fz.
|
|
6
|
+
* This function computes the adjusted (higher) fz needed to maintain the target chip load.
|
|
7
|
+
*
|
|
8
|
+
* @formula
|
|
9
|
+
* chipThinningFactor = D / (2 × √(ae × (D − ae)))
|
|
10
|
+
* adjustedFz = fz_target × chipThinningFactor
|
|
11
|
+
*
|
|
12
|
+
* @reference Harvey Tool — Radial Chip Thinning guide.
|
|
13
|
+
*
|
|
14
|
+
* @param input - Chip thinning parameters
|
|
15
|
+
* @returns RadialChipThinningResult with adjusted feed and thinning factor
|
|
16
|
+
*/
|
|
17
|
+
export function radialChipThinning(input) {
|
|
18
|
+
const { toolDiameter, radialDepthOfCut, chipLoadTarget } = input;
|
|
19
|
+
const D = toolDiameter;
|
|
20
|
+
const ae = radialDepthOfCut;
|
|
21
|
+
// Factor = D / (2 × √(ae × (D - ae)))
|
|
22
|
+
const factor = D / (2 * Math.sqrt(ae * (D - ae)));
|
|
23
|
+
const adjustedFz = chipLoadTarget * factor;
|
|
24
|
+
return {
|
|
25
|
+
adjustedFeedPerTooth: roundTo(adjustedFz, 4),
|
|
26
|
+
chipThinningFactor: roundTo(factor, 4),
|
|
27
|
+
effectiveChipLoad: roundTo(chipLoadTarget, 4),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=radialChipThinning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radialChipThinning.js","sourceRoot":"","sources":["../../src/machining/radialChipThinning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEjE,MAAM,CAAC,GAAG,YAAY,CAAC;IACvB,MAAM,EAAE,GAAG,gBAAgB,CAAC;IAE5B,sCAAsC;IACtC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,cAAc,GAAG,MAAM,CAAC;IAE3C,OAAO;QACL,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5C,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,iBAAiB,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SineBarHeightInput, SineBarHeightResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the gauge block height for a sine bar setup.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* H = L × sin(θ)
|
|
7
|
+
* actualAngle = arcsin(roundedH / L)
|
|
8
|
+
* error = actualAngle − θ
|
|
9
|
+
*
|
|
10
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Sine Bar section.
|
|
11
|
+
*
|
|
12
|
+
* @param input - Sine bar parameters
|
|
13
|
+
* @returns SineBarHeightResult with exact and optionally rounded height
|
|
14
|
+
*/
|
|
15
|
+
export declare function sineBarHeight(input: SineBarHeightInput): SineBarHeightResult;
|
|
16
|
+
//# sourceMappingURL=sineBarHeight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sineBarHeight.d.ts","sourceRoot":"","sources":["../../src/machining/sineBarHeight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAqB5E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the gauge block height for a sine bar setup.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* H = L × sin(θ)
|
|
7
|
+
* actualAngle = arcsin(roundedH / L)
|
|
8
|
+
* error = actualAngle − θ
|
|
9
|
+
*
|
|
10
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Sine Bar section.
|
|
11
|
+
*
|
|
12
|
+
* @param input - Sine bar parameters
|
|
13
|
+
* @returns SineBarHeightResult with exact and optionally rounded height
|
|
14
|
+
*/
|
|
15
|
+
export function sineBarHeight(input) {
|
|
16
|
+
const { angle, sineBarLength, roundToBlock } = input;
|
|
17
|
+
const angleRad = (angle * Math.PI) / 180;
|
|
18
|
+
const height = sineBarLength * Math.sin(angleRad);
|
|
19
|
+
const result = {
|
|
20
|
+
height: roundTo(height, 4),
|
|
21
|
+
};
|
|
22
|
+
if (roundToBlock !== undefined && roundToBlock > 0) {
|
|
23
|
+
const rounded = Math.round(height / roundToBlock) * roundToBlock;
|
|
24
|
+
result.roundedHeight = roundTo(rounded, 4);
|
|
25
|
+
const actualAngleRad = Math.asin(rounded / sineBarLength);
|
|
26
|
+
const actualAngleDeg = (actualAngleRad * 180) / Math.PI;
|
|
27
|
+
result.actualAngle = roundTo(actualAngleDeg, 6);
|
|
28
|
+
result.angleError = roundTo(actualAngleDeg - angle, 6);
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=sineBarHeight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sineBarHeight.js","sourceRoot":"","sources":["../../src/machining/sineBarHeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAErD,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,MAAM,GAAwB;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;KAC3B,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC;QACjE,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ThreadOverWiresInput, ThreadOverWiresResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate thread measurement over wires (3-wire method).
|
|
4
|
+
*
|
|
5
|
+
* @formula (for 60° thread angle — metric/unified):
|
|
6
|
+
* bestWire = P / √3 ≈ 0.57735 × P
|
|
7
|
+
* d₂ = d − 0.6495 × P (pitch diameter for 60°)
|
|
8
|
+
* M = d₂ + 3W − 1.5155 × P
|
|
9
|
+
*
|
|
10
|
+
* General formula:
|
|
11
|
+
* bestWire = P / (2 × cos(α/2))
|
|
12
|
+
* For 55° (Whitworth): bestWire = P / (2 × cos(27.5°))
|
|
13
|
+
* For 29° (Acme): bestWire = P / (2 × cos(14.5°))
|
|
14
|
+
*
|
|
15
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Thread measurement.
|
|
16
|
+
*
|
|
17
|
+
* @param input - Thread over wires parameters
|
|
18
|
+
* @returns ThreadOverWiresResult with measurement, best wire, and pitch diameter
|
|
19
|
+
*/
|
|
20
|
+
export declare function threadOverWires(input: ThreadOverWiresInput): ThreadOverWiresResult;
|
|
21
|
+
//# sourceMappingURL=threadOverWires.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadOverWires.d.ts","sourceRoot":"","sources":["../../src/machining/threadOverWires.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAmClF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate thread measurement over wires (3-wire method).
|
|
4
|
+
*
|
|
5
|
+
* @formula (for 60° thread angle — metric/unified):
|
|
6
|
+
* bestWire = P / √3 ≈ 0.57735 × P
|
|
7
|
+
* d₂ = d − 0.6495 × P (pitch diameter for 60°)
|
|
8
|
+
* M = d₂ + 3W − 1.5155 × P
|
|
9
|
+
*
|
|
10
|
+
* General formula:
|
|
11
|
+
* bestWire = P / (2 × cos(α/2))
|
|
12
|
+
* For 55° (Whitworth): bestWire = P / (2 × cos(27.5°))
|
|
13
|
+
* For 29° (Acme): bestWire = P / (2 × cos(14.5°))
|
|
14
|
+
*
|
|
15
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Thread measurement.
|
|
16
|
+
*
|
|
17
|
+
* @param input - Thread over wires parameters
|
|
18
|
+
* @returns ThreadOverWiresResult with measurement, best wire, and pitch diameter
|
|
19
|
+
*/
|
|
20
|
+
export function threadOverWires(input) {
|
|
21
|
+
const { majorDiameter, pitch, threadAngle = 60 } = input;
|
|
22
|
+
const halfAngleRad = ((threadAngle / 2) * Math.PI) / 180;
|
|
23
|
+
const cosHalfAngle = Math.cos(halfAngleRad);
|
|
24
|
+
// Best wire size
|
|
25
|
+
const bestWire = pitch / (2 * cosHalfAngle);
|
|
26
|
+
const wireSize = input.wireSize ?? bestWire;
|
|
27
|
+
// Pitch diameter
|
|
28
|
+
let pitchDiameter;
|
|
29
|
+
if (threadAngle === 60) {
|
|
30
|
+
pitchDiameter = majorDiameter - 0.6495 * pitch;
|
|
31
|
+
}
|
|
32
|
+
else if (threadAngle === 55) {
|
|
33
|
+
pitchDiameter = majorDiameter - 0.6403 * pitch;
|
|
34
|
+
}
|
|
35
|
+
else if (threadAngle === 29) {
|
|
36
|
+
pitchDiameter = majorDiameter - 0.5 * pitch;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// 30° (trapezoidal)
|
|
40
|
+
pitchDiameter = majorDiameter - 0.5 * pitch;
|
|
41
|
+
}
|
|
42
|
+
// Measurement over wires (M)
|
|
43
|
+
// General: M = d₂ + W × (1 + 1/sin(α/2)) - P × cot(α/2) / 2
|
|
44
|
+
// For 60°: M = d₂ + 3W - 1.5155P
|
|
45
|
+
const sinHalfAngle = Math.sin(halfAngleRad);
|
|
46
|
+
const M = pitchDiameter + wireSize * (1 + 1 / sinHalfAngle) - (pitch * cosHalfAngle) / (2 * sinHalfAngle);
|
|
47
|
+
return {
|
|
48
|
+
measurementOverWires: roundTo(M, 4),
|
|
49
|
+
bestWireSize: roundTo(bestWire, 4),
|
|
50
|
+
pitchDiameter: roundTo(pitchDiameter, 4),
|
|
51
|
+
wireSize: roundTo(wireSize, 4),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=threadOverWires.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadOverWires.js","sourceRoot":"","sources":["../../src/machining/threadOverWires.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IAEzD,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE5C,iBAAiB;IACjB,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAE5C,iBAAiB;IACjB,IAAI,aAAqB,CAAC;IAC1B,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QACvB,aAAa,GAAG,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;IACjD,CAAC;SAAM,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QAC9B,aAAa,GAAG,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;IACjD,CAAC;SAAM,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QAC9B,aAAa,GAAG,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,aAAa,GAAG,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;IAC9C,CAAC;IAED,6BAA6B;IAC7B,4DAA4D;IAC5D,iCAAiC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;IAE1G,OAAO;QACL,oBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ToolDeflectionInput, ToolDeflectionResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate end mill deflection using cantilever beam theory.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* I = π × d⁴ / 64
|
|
7
|
+
* δ = F × L³ / (3 × E × I)
|
|
8
|
+
* k = F / δ
|
|
9
|
+
*
|
|
10
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Beam deflection.
|
|
11
|
+
*
|
|
12
|
+
* @param input - Tool deflection parameters
|
|
13
|
+
* @returns ToolDeflectionResult with deflection, inertia, and stiffness
|
|
14
|
+
*/
|
|
15
|
+
export declare function toolDeflection(input: ToolDeflectionInput): ToolDeflectionResult;
|
|
16
|
+
//# sourceMappingURL=toolDeflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolDeflection.d.ts","sourceRoot":"","sources":["../../src/machining/toolDeflection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAgB,MAAM,YAAY,CAAC;AAU1F;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAgB/E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Young's modulus for common tool materials (GPa)
|
|
4
|
+
*/
|
|
5
|
+
const TOOL_MODULUS = {
|
|
6
|
+
carbide: 550,
|
|
7
|
+
hss: 200,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Calculate end mill deflection using cantilever beam theory.
|
|
11
|
+
*
|
|
12
|
+
* @formula
|
|
13
|
+
* I = π × d⁴ / 64
|
|
14
|
+
* δ = F × L³ / (3 × E × I)
|
|
15
|
+
* k = F / δ
|
|
16
|
+
*
|
|
17
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Beam deflection.
|
|
18
|
+
*
|
|
19
|
+
* @param input - Tool deflection parameters
|
|
20
|
+
* @returns ToolDeflectionResult with deflection, inertia, and stiffness
|
|
21
|
+
*/
|
|
22
|
+
export function toolDeflection(input) {
|
|
23
|
+
const { toolDiameter, stickout, cuttingForce, material = 'carbide' } = input;
|
|
24
|
+
const E = input.youngsModulus ?? TOOL_MODULUS[material];
|
|
25
|
+
const E_MPa = E * 1000; // GPa → MPa (N/mm²)
|
|
26
|
+
const I = (Math.PI * Math.pow(toolDiameter, 4)) / 64;
|
|
27
|
+
const delta = (cuttingForce * Math.pow(stickout, 3)) / (3 * E_MPa * I);
|
|
28
|
+
const stiffness = delta > 0 ? cuttingForce / delta : Infinity;
|
|
29
|
+
return {
|
|
30
|
+
deflection: roundTo(delta, 6),
|
|
31
|
+
momentOfInertia: roundTo(I, 4),
|
|
32
|
+
stiffness: roundTo(stiffness, 2),
|
|
33
|
+
youngsModulus: E,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=toolDeflection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolDeflection.js","sourceRoot":"","sources":["../../src/machining/toolDeflection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,MAAM,YAAY,GAAiC;IACjD,OAAO,EAAE,GAAG;IACZ,GAAG,EAAE,GAAG;CACT,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAE7E,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,oBAAoB;IAE5C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9D,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,eAAe,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,aAAa,EAAE,CAAC;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TriangleSolverInput, TriangleSolverResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Solve a triangle given at least 3 known values (sides/angles).
|
|
4
|
+
*
|
|
5
|
+
* Supported cases:
|
|
6
|
+
* - SSS: three sides → law of cosines
|
|
7
|
+
* - SAS: two sides + included angle → law of cosines
|
|
8
|
+
* - ASA/AAS: two angles + one side → law of sines
|
|
9
|
+
* - SSA: two sides + non-included angle → law of sines (ambiguous case)
|
|
10
|
+
*
|
|
11
|
+
* @formula
|
|
12
|
+
* Law of cosines: c² = a² + b² − 2ab·cos(C)
|
|
13
|
+
* Law of sines: a/sin(A) = b/sin(B) = c/sin(C)
|
|
14
|
+
* Area (Heron): √(s(s−a)(s−b)(s−c)), s = (a+b+c)/2
|
|
15
|
+
*
|
|
16
|
+
* @param input - Triangle sides and/or angles (degrees)
|
|
17
|
+
* @returns TriangleSolverResult with all sides, angles, area, and perimeter
|
|
18
|
+
* @throws Error if insufficient or invalid input
|
|
19
|
+
*/
|
|
20
|
+
export declare function triangleSolver(input: TriangleSolverInput): TriangleSolverResult;
|
|
21
|
+
//# sourceMappingURL=triangleSolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangleSolver.d.ts","sourceRoot":"","sources":["../../src/machining/triangleSolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAK5E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CA2F/E"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
const DEG = Math.PI / 180;
|
|
3
|
+
const RAD = 180 / Math.PI;
|
|
4
|
+
/**
|
|
5
|
+
* Solve a triangle given at least 3 known values (sides/angles).
|
|
6
|
+
*
|
|
7
|
+
* Supported cases:
|
|
8
|
+
* - SSS: three sides → law of cosines
|
|
9
|
+
* - SAS: two sides + included angle → law of cosines
|
|
10
|
+
* - ASA/AAS: two angles + one side → law of sines
|
|
11
|
+
* - SSA: two sides + non-included angle → law of sines (ambiguous case)
|
|
12
|
+
*
|
|
13
|
+
* @formula
|
|
14
|
+
* Law of cosines: c² = a² + b² − 2ab·cos(C)
|
|
15
|
+
* Law of sines: a/sin(A) = b/sin(B) = c/sin(C)
|
|
16
|
+
* Area (Heron): √(s(s−a)(s−b)(s−c)), s = (a+b+c)/2
|
|
17
|
+
*
|
|
18
|
+
* @param input - Triangle sides and/or angles (degrees)
|
|
19
|
+
* @returns TriangleSolverResult with all sides, angles, area, and perimeter
|
|
20
|
+
* @throws Error if insufficient or invalid input
|
|
21
|
+
*/
|
|
22
|
+
export function triangleSolver(input) {
|
|
23
|
+
let { a, b, c, A, B, C } = input;
|
|
24
|
+
// Count known values
|
|
25
|
+
const knownSides = [a, b, c].filter(v => v !== undefined).length;
|
|
26
|
+
const knownAngles = [A, B, C].filter(v => v !== undefined).length;
|
|
27
|
+
// If two angles known, compute the third
|
|
28
|
+
if (knownAngles === 2) {
|
|
29
|
+
if (A === undefined)
|
|
30
|
+
A = 180 - B - C;
|
|
31
|
+
else if (B === undefined)
|
|
32
|
+
B = 180 - A - C;
|
|
33
|
+
else if (C === undefined)
|
|
34
|
+
C = 180 - A - B;
|
|
35
|
+
}
|
|
36
|
+
// SSS: three sides known
|
|
37
|
+
if (knownSides === 3 && a !== undefined && b !== undefined && c !== undefined) {
|
|
38
|
+
A = Math.acos((b * b + c * c - a * a) / (2 * b * c)) * RAD;
|
|
39
|
+
B = Math.acos((a * a + c * c - b * b) / (2 * a * c)) * RAD;
|
|
40
|
+
C = 180 - A - B;
|
|
41
|
+
}
|
|
42
|
+
// SAS: two sides + included angle
|
|
43
|
+
else if (knownSides === 2 && knownAngles >= 1) {
|
|
44
|
+
if (a !== undefined && b !== undefined && C !== undefined) {
|
|
45
|
+
c = Math.sqrt(a * a + b * b - 2 * a * b * Math.cos(C * DEG));
|
|
46
|
+
A = Math.asin((a * Math.sin(C * DEG)) / c) * RAD;
|
|
47
|
+
B = 180 - A - C;
|
|
48
|
+
}
|
|
49
|
+
else if (a !== undefined && c !== undefined && B !== undefined) {
|
|
50
|
+
b = Math.sqrt(a * a + c * c - 2 * a * c * Math.cos(B * DEG));
|
|
51
|
+
A = Math.asin((a * Math.sin(B * DEG)) / b) * RAD;
|
|
52
|
+
C = 180 - A - B;
|
|
53
|
+
}
|
|
54
|
+
else if (b !== undefined && c !== undefined && A !== undefined) {
|
|
55
|
+
a = Math.sqrt(b * b + c * c - 2 * b * c * Math.cos(A * DEG));
|
|
56
|
+
B = Math.asin((b * Math.sin(A * DEG)) / a) * RAD;
|
|
57
|
+
C = 180 - A - B;
|
|
58
|
+
}
|
|
59
|
+
// SSA (ambiguous): two sides + non-included angle
|
|
60
|
+
else if (a !== undefined && b !== undefined && A !== undefined) {
|
|
61
|
+
const sinB = (b * Math.sin(A * DEG)) / a;
|
|
62
|
+
if (sinB > 1)
|
|
63
|
+
throw new Error('No valid triangle exists');
|
|
64
|
+
B = Math.asin(sinB) * RAD;
|
|
65
|
+
C = 180 - A - B;
|
|
66
|
+
c = (a * Math.sin(C * DEG)) / Math.sin(A * DEG);
|
|
67
|
+
}
|
|
68
|
+
else if (a !== undefined && c !== undefined && A !== undefined) {
|
|
69
|
+
const sinC = (c * Math.sin(A * DEG)) / a;
|
|
70
|
+
if (sinC > 1)
|
|
71
|
+
throw new Error('No valid triangle exists');
|
|
72
|
+
C = Math.asin(sinC) * RAD;
|
|
73
|
+
B = 180 - A - C;
|
|
74
|
+
b = (a * Math.sin(B * DEG)) / Math.sin(A * DEG);
|
|
75
|
+
}
|
|
76
|
+
else if (b !== undefined && c !== undefined && B !== undefined) {
|
|
77
|
+
const sinC = (c * Math.sin(B * DEG)) / b;
|
|
78
|
+
if (sinC > 1)
|
|
79
|
+
throw new Error('No valid triangle exists');
|
|
80
|
+
C = Math.asin(sinC) * RAD;
|
|
81
|
+
A = 180 - B - C;
|
|
82
|
+
a = (b * Math.sin(A * DEG)) / Math.sin(B * DEG);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ASA/AAS: two angles + one side (third angle already computed above)
|
|
86
|
+
else if (knownSides === 1 && knownAngles >= 2) {
|
|
87
|
+
if (A !== undefined && B !== undefined && C !== undefined) {
|
|
88
|
+
if (a !== undefined) {
|
|
89
|
+
b = (a * Math.sin(B * DEG)) / Math.sin(A * DEG);
|
|
90
|
+
c = (a * Math.sin(C * DEG)) / Math.sin(A * DEG);
|
|
91
|
+
}
|
|
92
|
+
else if (b !== undefined) {
|
|
93
|
+
a = (b * Math.sin(A * DEG)) / Math.sin(B * DEG);
|
|
94
|
+
c = (b * Math.sin(C * DEG)) / Math.sin(B * DEG);
|
|
95
|
+
}
|
|
96
|
+
else if (c !== undefined) {
|
|
97
|
+
a = (c * Math.sin(A * DEG)) / Math.sin(C * DEG);
|
|
98
|
+
b = (c * Math.sin(B * DEG)) / Math.sin(C * DEG);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (a === undefined || b === undefined || c === undefined ||
|
|
103
|
+
A === undefined || B === undefined || C === undefined) {
|
|
104
|
+
throw new Error('Insufficient data to solve triangle');
|
|
105
|
+
}
|
|
106
|
+
// Heron's formula for area
|
|
107
|
+
const s = (a + b + c) / 2;
|
|
108
|
+
const area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
|
|
109
|
+
return {
|
|
110
|
+
a: roundTo(a, 4),
|
|
111
|
+
b: roundTo(b, 4),
|
|
112
|
+
c: roundTo(c, 4),
|
|
113
|
+
A: roundTo(A, 4),
|
|
114
|
+
B: roundTo(B, 4),
|
|
115
|
+
C: roundTo(C, 4),
|
|
116
|
+
area: roundTo(area, 4),
|
|
117
|
+
perimeter: roundTo(a + b + c, 4),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=triangleSolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangleSolver.js","sourceRoot":"","sources":["../../src/machining/triangleSolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TruePositionInput, TruePositionResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate GD&T True Position (diametral method).
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* Δx = actualX − nominalX
|
|
7
|
+
* Δy = actualY − nominalY
|
|
8
|
+
* radial = √(Δx² + Δy²)
|
|
9
|
+
* TP = 2 × radial
|
|
10
|
+
* MMC bonus = featureSize − mmcSize (when feature is larger than MMC)
|
|
11
|
+
* effectiveTol = tolerance + bonus
|
|
12
|
+
*
|
|
13
|
+
* @reference ASME Y14.5-2018 — Positional tolerance.
|
|
14
|
+
*
|
|
15
|
+
* @param input - True position parameters
|
|
16
|
+
* @returns TruePositionResult with TP value and optional tolerance evaluation
|
|
17
|
+
*/
|
|
18
|
+
export declare function truePosition(input: TruePositionInput): TruePositionResult;
|
|
19
|
+
//# sourceMappingURL=truePosition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truePosition.d.ts","sourceRoot":"","sources":["../../src/machining/truePosition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA6BzE"}
|