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.
Files changed (450) hide show
  1. package/CHANGELOG.md +283 -2
  2. package/README.md +147 -48
  3. package/dist/automotive/brakingDistance.d.ts +16 -0
  4. package/dist/automotive/brakingDistance.d.ts.map +1 -0
  5. package/dist/automotive/brakingDistance.js +47 -0
  6. package/dist/automotive/brakingDistance.js.map +1 -0
  7. package/dist/automotive/gearRatio.d.ts +2 -2
  8. package/dist/automotive/gearRatio.d.ts.map +1 -1
  9. package/dist/automotive/gearRatio.js +1 -1
  10. package/dist/automotive/gearRatio.js.map +1 -1
  11. package/dist/automotive/index.d.ts +2 -1
  12. package/dist/automotive/index.d.ts.map +1 -1
  13. package/dist/automotive/index.js +1 -0
  14. package/dist/automotive/index.js.map +1 -1
  15. package/dist/automotive/types.d.ts +18 -2
  16. package/dist/automotive/types.d.ts.map +1 -1
  17. package/dist/battery/batteryPackConfig.d.ts +10 -0
  18. package/dist/battery/batteryPackConfig.d.ts.map +1 -0
  19. package/dist/battery/batteryPackConfig.js +28 -0
  20. package/dist/battery/batteryPackConfig.js.map +1 -0
  21. package/dist/battery/bmsBalancing.d.ts +11 -0
  22. package/dist/battery/bmsBalancing.d.ts.map +1 -0
  23. package/dist/battery/bmsBalancing.js +47 -0
  24. package/dist/battery/bmsBalancing.js.map +1 -0
  25. package/dist/battery/cRate.d.ts +10 -0
  26. package/dist/battery/cRate.d.ts.map +1 -0
  27. package/dist/battery/cRate.js +29 -0
  28. package/dist/battery/cRate.js.map +1 -0
  29. package/dist/battery/chargingProfile.d.ts +11 -0
  30. package/dist/battery/chargingProfile.d.ts.map +1 -0
  31. package/dist/battery/chargingProfile.js +38 -0
  32. package/dist/battery/chargingProfile.js.map +1 -0
  33. package/dist/battery/cycleLife.d.ts +11 -0
  34. package/dist/battery/cycleLife.d.ts.map +1 -0
  35. package/dist/battery/cycleLife.js +70 -0
  36. package/dist/battery/cycleLife.js.map +1 -0
  37. package/dist/battery/energyDensity.d.ts +10 -0
  38. package/dist/battery/energyDensity.d.ts.map +1 -0
  39. package/dist/battery/energyDensity.js +20 -0
  40. package/dist/battery/energyDensity.js.map +1 -0
  41. package/dist/battery/index.d.ts +12 -0
  42. package/dist/battery/index.d.ts.map +1 -0
  43. package/dist/battery/index.js +12 -0
  44. package/dist/battery/index.js.map +1 -0
  45. package/dist/battery/internalResistance.d.ts +11 -0
  46. package/dist/battery/internalResistance.d.ts.map +1 -0
  47. package/dist/battery/internalResistance.js +18 -0
  48. package/dist/battery/internalResistance.js.map +1 -0
  49. package/dist/battery/selfDischarge.d.ts +10 -0
  50. package/dist/battery/selfDischarge.d.ts.map +1 -0
  51. package/dist/battery/selfDischarge.js +17 -0
  52. package/dist/battery/selfDischarge.js.map +1 -0
  53. package/dist/battery/stateOfHealth.d.ts +11 -0
  54. package/dist/battery/stateOfHealth.d.ts.map +1 -0
  55. package/dist/battery/stateOfHealth.js +33 -0
  56. package/dist/battery/stateOfHealth.js.map +1 -0
  57. package/dist/battery/thermalRunaway.d.ts +11 -0
  58. package/dist/battery/thermalRunaway.d.ts.map +1 -0
  59. package/dist/battery/thermalRunaway.js +28 -0
  60. package/dist/battery/thermalRunaway.js.map +1 -0
  61. package/dist/battery/types.d.ts +175 -0
  62. package/dist/battery/types.d.ts.map +1 -0
  63. package/dist/battery/types.js +5 -0
  64. package/dist/battery/types.js.map +1 -0
  65. package/dist/chemical/dilution.d.ts.map +1 -1
  66. package/dist/chemical/dilution.js +21 -24
  67. package/dist/chemical/dilution.js.map +1 -1
  68. package/dist/chemical/heatTransfer.d.ts +16 -0
  69. package/dist/chemical/heatTransfer.d.ts.map +1 -0
  70. package/dist/chemical/heatTransfer.js +85 -0
  71. package/dist/chemical/heatTransfer.js.map +1 -0
  72. package/dist/chemical/index.d.ts +3 -1
  73. package/dist/chemical/index.d.ts.map +1 -1
  74. package/dist/chemical/index.js +2 -0
  75. package/dist/chemical/index.js.map +1 -1
  76. package/dist/chemical/injectionCycle.d.ts +3 -0
  77. package/dist/chemical/injectionCycle.d.ts.map +1 -1
  78. package/dist/chemical/injectionCycle.js +1 -4
  79. package/dist/chemical/injectionCycle.js.map +1 -1
  80. package/dist/chemical/ph.d.ts +3 -0
  81. package/dist/chemical/ph.d.ts.map +1 -1
  82. package/dist/chemical/ph.js +1 -4
  83. package/dist/chemical/ph.js.map +1 -1
  84. package/dist/chemical/pipeFlow.d.ts +17 -0
  85. package/dist/chemical/pipeFlow.d.ts.map +1 -0
  86. package/dist/chemical/pipeFlow.js +112 -0
  87. package/dist/chemical/pipeFlow.js.map +1 -0
  88. package/dist/chemical/reactor.d.ts +3 -0
  89. package/dist/chemical/reactor.d.ts.map +1 -1
  90. package/dist/chemical/reactor.js +3 -6
  91. package/dist/chemical/reactor.js.map +1 -1
  92. package/dist/chemical/shelfLife.d.ts.map +1 -1
  93. package/dist/chemical/shelfLife.js +1 -7
  94. package/dist/chemical/shelfLife.js.map +1 -1
  95. package/dist/chemical/types.d.ts +82 -10
  96. package/dist/chemical/types.d.ts.map +1 -1
  97. package/dist/construction/index.d.ts +2 -1
  98. package/dist/construction/index.d.ts.map +1 -1
  99. package/dist/construction/index.js +1 -0
  100. package/dist/construction/index.js.map +1 -1
  101. package/dist/construction/momentOfInertia.d.ts +17 -0
  102. package/dist/construction/momentOfInertia.d.ts.map +1 -0
  103. package/dist/construction/momentOfInertia.js +204 -0
  104. package/dist/construction/momentOfInertia.js.map +1 -0
  105. package/dist/construction/pert.d.ts.map +1 -1
  106. package/dist/construction/pert.js +1 -17
  107. package/dist/construction/pert.js.map +1 -1
  108. package/dist/construction/types.d.ts +50 -0
  109. package/dist/construction/types.d.ts.map +1 -1
  110. package/dist/electronics/awg.d.ts.map +1 -1
  111. package/dist/electronics/awg.js +1 -4
  112. package/dist/electronics/awg.js.map +1 -1
  113. package/dist/electronics/capacitor.d.ts +3 -0
  114. package/dist/electronics/capacitor.d.ts.map +1 -1
  115. package/dist/electronics/capacitor.js +1 -4
  116. package/dist/electronics/capacitor.js.map +1 -1
  117. package/dist/electronics/index.d.ts +2 -1
  118. package/dist/electronics/index.d.ts.map +1 -1
  119. package/dist/electronics/index.js +1 -0
  120. package/dist/electronics/index.js.map +1 -1
  121. package/dist/electronics/led.d.ts.map +1 -1
  122. package/dist/electronics/led.js +1 -4
  123. package/dist/electronics/led.js.map +1 -1
  124. package/dist/electronics/ohmsLaw.d.ts +12 -0
  125. package/dist/electronics/ohmsLaw.d.ts.map +1 -0
  126. package/dist/electronics/ohmsLaw.js +69 -0
  127. package/dist/electronics/ohmsLaw.js.map +1 -0
  128. package/dist/electronics/smt-takt.d.ts +3 -0
  129. package/dist/electronics/smt-takt.d.ts.map +1 -1
  130. package/dist/electronics/smt-takt.js +1 -4
  131. package/dist/electronics/smt-takt.js.map +1 -1
  132. package/dist/electronics/solder.d.ts +3 -0
  133. package/dist/electronics/solder.d.ts.map +1 -1
  134. package/dist/electronics/solder.js +1 -4
  135. package/dist/electronics/solder.js.map +1 -1
  136. package/dist/electronics/stencil.d.ts.map +1 -1
  137. package/dist/electronics/stencil.js +1 -4
  138. package/dist/electronics/stencil.js.map +1 -1
  139. package/dist/electronics/trace.d.ts.map +1 -1
  140. package/dist/electronics/trace.js +1 -4
  141. package/dist/electronics/trace.js.map +1 -1
  142. package/dist/electronics/types.d.ts +24 -0
  143. package/dist/electronics/types.d.ts.map +1 -1
  144. package/dist/electronics/via.d.ts.map +1 -1
  145. package/dist/electronics/via.js +1 -4
  146. package/dist/electronics/via.js.map +1 -1
  147. package/dist/energy/carbonFootprint.d.ts.map +1 -1
  148. package/dist/energy/carbonFootprint.js +2 -1
  149. package/dist/energy/carbonFootprint.js.map +1 -1
  150. package/dist/energy/index.d.ts +2 -1
  151. package/dist/energy/index.d.ts.map +1 -1
  152. package/dist/energy/index.js +1 -0
  153. package/dist/energy/index.js.map +1 -1
  154. package/dist/energy/powerCost.d.ts.map +1 -1
  155. package/dist/energy/powerCost.js +2 -1
  156. package/dist/energy/powerCost.js.map +1 -1
  157. package/dist/energy/solarOutput.d.ts +14 -0
  158. package/dist/energy/solarOutput.d.ts.map +1 -0
  159. package/dist/energy/solarOutput.js +54 -0
  160. package/dist/energy/solarOutput.js.map +1 -0
  161. package/dist/energy/types.d.ts +20 -0
  162. package/dist/energy/types.d.ts.map +1 -1
  163. package/dist/environmental/emissionsIntensity.d.ts +11 -0
  164. package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
  165. package/dist/environmental/emissionsIntensity.js +26 -0
  166. package/dist/environmental/emissionsIntensity.js.map +1 -0
  167. package/dist/environmental/energyIntensity.d.ts +11 -0
  168. package/dist/environmental/energyIntensity.d.ts.map +1 -0
  169. package/dist/environmental/energyIntensity.js +19 -0
  170. package/dist/environmental/energyIntensity.js.map +1 -0
  171. package/dist/environmental/esgSummary.d.ts +11 -0
  172. package/dist/environmental/esgSummary.d.ts.map +1 -0
  173. package/dist/environmental/esgSummary.js +39 -0
  174. package/dist/environmental/esgSummary.js.map +1 -0
  175. package/dist/environmental/gwpCalculator.d.ts +11 -0
  176. package/dist/environmental/gwpCalculator.d.ts.map +1 -0
  177. package/dist/environmental/gwpCalculator.js +31 -0
  178. package/dist/environmental/gwpCalculator.js.map +1 -0
  179. package/dist/environmental/index.d.ts +12 -0
  180. package/dist/environmental/index.d.ts.map +1 -0
  181. package/dist/environmental/index.js +12 -0
  182. package/dist/environmental/index.js.map +1 -0
  183. package/dist/environmental/productCarbonFootprint.d.ts +11 -0
  184. package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
  185. package/dist/environmental/productCarbonFootprint.js +29 -0
  186. package/dist/environmental/productCarbonFootprint.js.map +1 -0
  187. package/dist/environmental/scope1Emissions.d.ts +11 -0
  188. package/dist/environmental/scope1Emissions.d.ts.map +1 -0
  189. package/dist/environmental/scope1Emissions.js +35 -0
  190. package/dist/environmental/scope1Emissions.js.map +1 -0
  191. package/dist/environmental/scope2Emissions.d.ts +11 -0
  192. package/dist/environmental/scope2Emissions.d.ts.map +1 -0
  193. package/dist/environmental/scope2Emissions.js +49 -0
  194. package/dist/environmental/scope2Emissions.js.map +1 -0
  195. package/dist/environmental/scope3Emissions.d.ts +11 -0
  196. package/dist/environmental/scope3Emissions.d.ts.map +1 -0
  197. package/dist/environmental/scope3Emissions.js +36 -0
  198. package/dist/environmental/scope3Emissions.js.map +1 -0
  199. package/dist/environmental/types.d.ts +165 -0
  200. package/dist/environmental/types.d.ts.map +1 -0
  201. package/dist/environmental/types.js +5 -0
  202. package/dist/environmental/types.js.map +1 -0
  203. package/dist/environmental/vocEmissions.d.ts +11 -0
  204. package/dist/environmental/vocEmissions.d.ts.map +1 -0
  205. package/dist/environmental/vocEmissions.js +23 -0
  206. package/dist/environmental/vocEmissions.js.map +1 -0
  207. package/dist/environmental/waterFootprint.d.ts +11 -0
  208. package/dist/environmental/waterFootprint.d.ts.map +1 -0
  209. package/dist/environmental/waterFootprint.js +21 -0
  210. package/dist/environmental/waterFootprint.js.map +1 -0
  211. package/dist/index.d.ts +10 -2
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +10 -2
  214. package/dist/index.js.map +1 -1
  215. package/dist/logistics/cbm.d.ts +7 -2
  216. package/dist/logistics/cbm.d.ts.map +1 -1
  217. package/dist/logistics/cbm.js +7 -2
  218. package/dist/logistics/cbm.js.map +1 -1
  219. package/dist/logistics/eoq.d.ts.map +1 -1
  220. package/dist/logistics/eoq.js +11 -0
  221. package/dist/logistics/eoq.js.map +1 -1
  222. package/dist/logistics/fillRate.d.ts.map +1 -1
  223. package/dist/logistics/fillRate.js +1 -17
  224. package/dist/logistics/fillRate.js.map +1 -1
  225. package/dist/logistics/safetyStock.d.ts.map +1 -1
  226. package/dist/logistics/safetyStock.js +2 -55
  227. package/dist/logistics/safetyStock.js.map +1 -1
  228. package/dist/machining/boltCircle.d.ts +16 -0
  229. package/dist/machining/boltCircle.d.ts.map +1 -0
  230. package/dist/machining/boltCircle.js +36 -0
  231. package/dist/machining/boltCircle.js.map +1 -0
  232. package/dist/machining/boringBarDeflection.d.ts +17 -0
  233. package/dist/machining/boringBarDeflection.d.ts.map +1 -0
  234. package/dist/machining/boringBarDeflection.js +54 -0
  235. package/dist/machining/boringBarDeflection.js.map +1 -0
  236. package/dist/machining/cuspHeight.d.ts +15 -0
  237. package/dist/machining/cuspHeight.d.ts.map +1 -0
  238. package/dist/machining/cuspHeight.js +23 -0
  239. package/dist/machining/cuspHeight.js.map +1 -0
  240. package/dist/machining/cycleTimeEstimator.d.ts +18 -0
  241. package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
  242. package/dist/machining/cycleTimeEstimator.js +62 -0
  243. package/dist/machining/cycleTimeEstimator.js.map +1 -0
  244. package/dist/machining/effectiveDiameter.d.ts +17 -0
  245. package/dist/machining/effectiveDiameter.d.ts.map +1 -0
  246. package/dist/machining/effectiveDiameter.js +24 -0
  247. package/dist/machining/effectiveDiameter.js.map +1 -0
  248. package/dist/machining/gaugeBlockStack.d.ts +16 -0
  249. package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
  250. package/dist/machining/gaugeBlockStack.js +138 -0
  251. package/dist/machining/gaugeBlockStack.js.map +1 -0
  252. package/dist/machining/index.d.ts +14 -0
  253. package/dist/machining/index.d.ts.map +1 -0
  254. package/dist/machining/index.js +14 -0
  255. package/dist/machining/index.js.map +1 -0
  256. package/dist/machining/radialChipThinning.d.ts +18 -0
  257. package/dist/machining/radialChipThinning.d.ts.map +1 -0
  258. package/dist/machining/radialChipThinning.js +30 -0
  259. package/dist/machining/radialChipThinning.js.map +1 -0
  260. package/dist/machining/sineBarHeight.d.ts +16 -0
  261. package/dist/machining/sineBarHeight.d.ts.map +1 -0
  262. package/dist/machining/sineBarHeight.js +32 -0
  263. package/dist/machining/sineBarHeight.js.map +1 -0
  264. package/dist/machining/threadOverWires.d.ts +21 -0
  265. package/dist/machining/threadOverWires.d.ts.map +1 -0
  266. package/dist/machining/threadOverWires.js +54 -0
  267. package/dist/machining/threadOverWires.js.map +1 -0
  268. package/dist/machining/toolDeflection.d.ts +16 -0
  269. package/dist/machining/toolDeflection.d.ts.map +1 -0
  270. package/dist/machining/toolDeflection.js +36 -0
  271. package/dist/machining/toolDeflection.js.map +1 -0
  272. package/dist/machining/triangleSolver.d.ts +21 -0
  273. package/dist/machining/triangleSolver.d.ts.map +1 -0
  274. package/dist/machining/triangleSolver.js +120 -0
  275. package/dist/machining/triangleSolver.js.map +1 -0
  276. package/dist/machining/truePosition.d.ts +19 -0
  277. package/dist/machining/truePosition.d.ts.map +1 -0
  278. package/dist/machining/truePosition.js +44 -0
  279. package/dist/machining/truePosition.js.map +1 -0
  280. package/dist/machining/types.d.ts +201 -0
  281. package/dist/machining/types.d.ts.map +1 -0
  282. package/dist/machining/types.js +2 -0
  283. package/dist/machining/types.js.map +1 -0
  284. package/dist/math.d.ts +26 -0
  285. package/dist/math.d.ts.map +1 -0
  286. package/dist/math.js +95 -0
  287. package/dist/math.js.map +1 -0
  288. package/dist/metal/bearing.d.ts.map +1 -1
  289. package/dist/metal/bearing.js +1 -4
  290. package/dist/metal/bearing.js.map +1 -1
  291. package/dist/metal/bendAllowance.d.ts.map +1 -1
  292. package/dist/metal/bendAllowance.js +2 -1
  293. package/dist/metal/bendAllowance.js.map +1 -1
  294. package/dist/metal/bolt.d.ts.map +1 -1
  295. package/dist/metal/bolt.js +4 -7
  296. package/dist/metal/bolt.js.map +1 -1
  297. package/dist/metal/cutting.d.ts.map +1 -1
  298. package/dist/metal/cutting.js +1 -4
  299. package/dist/metal/cutting.js.map +1 -1
  300. package/dist/metal/cuttingStock.d.ts.map +1 -1
  301. package/dist/metal/cuttingStock.js +1 -4
  302. package/dist/metal/cuttingStock.js.map +1 -1
  303. package/dist/metal/flangeSpec.d.ts +10 -0
  304. package/dist/metal/flangeSpec.d.ts.map +1 -0
  305. package/dist/metal/flangeSpec.js +81 -0
  306. package/dist/metal/flangeSpec.js.map +1 -0
  307. package/dist/metal/gear.d.ts.map +1 -1
  308. package/dist/metal/gear.js +1 -4
  309. package/dist/metal/gear.js.map +1 -1
  310. package/dist/metal/hardness.d.ts.map +1 -1
  311. package/dist/metal/hardness.js +1 -4
  312. package/dist/metal/hardness.js.map +1 -1
  313. package/dist/metal/index.d.ts +4 -1
  314. package/dist/metal/index.d.ts.map +1 -1
  315. package/dist/metal/index.js +3 -0
  316. package/dist/metal/index.js.map +1 -1
  317. package/dist/metal/materialGradeConverter.d.ts +10 -0
  318. package/dist/metal/materialGradeConverter.d.ts.map +1 -0
  319. package/dist/metal/materialGradeConverter.js +78 -0
  320. package/dist/metal/materialGradeConverter.js.map +1 -0
  321. package/dist/metal/metalWeight.d.ts +13 -3
  322. package/dist/metal/metalWeight.d.ts.map +1 -1
  323. package/dist/metal/metalWeight.js +24 -35
  324. package/dist/metal/metalWeight.js.map +1 -1
  325. package/dist/metal/pipeSpec.d.ts +10 -0
  326. package/dist/metal/pipeSpec.d.ts.map +1 -0
  327. package/dist/metal/pipeSpec.js +96 -0
  328. package/dist/metal/pipeSpec.js.map +1 -0
  329. package/dist/metal/pressFit.d.ts.map +1 -1
  330. package/dist/metal/pressFit.js +1 -4
  331. package/dist/metal/pressFit.js.map +1 -1
  332. package/dist/metal/pressTonnage.d.ts +10 -4
  333. package/dist/metal/pressTonnage.d.ts.map +1 -1
  334. package/dist/metal/pressTonnage.js +199 -25
  335. package/dist/metal/pressTonnage.js.map +1 -1
  336. package/dist/metal/roughness.d.ts.map +1 -1
  337. package/dist/metal/roughness.js +2 -5
  338. package/dist/metal/roughness.js.map +1 -1
  339. package/dist/metal/screw.d.ts.map +1 -1
  340. package/dist/metal/screw.js +1 -4
  341. package/dist/metal/screw.js.map +1 -1
  342. package/dist/metal/spring.d.ts.map +1 -1
  343. package/dist/metal/spring.js +1 -4
  344. package/dist/metal/spring.js.map +1 -1
  345. package/dist/metal/tap.d.ts.map +1 -1
  346. package/dist/metal/tap.js +1 -4
  347. package/dist/metal/tap.js.map +1 -1
  348. package/dist/metal/thread.d.ts.map +1 -1
  349. package/dist/metal/thread.js +1 -4
  350. package/dist/metal/thread.js.map +1 -1
  351. package/dist/metal/tolerance.d.ts.map +1 -1
  352. package/dist/metal/tolerance.js +1 -4
  353. package/dist/metal/tolerance.js.map +1 -1
  354. package/dist/metal/types.d.ts +100 -13
  355. package/dist/metal/types.d.ts.map +1 -1
  356. package/dist/metal/vibration.d.ts.map +1 -1
  357. package/dist/metal/vibration.js +1 -4
  358. package/dist/metal/vibration.js.map +1 -1
  359. package/dist/metal/weldHeat.d.ts +2 -1
  360. package/dist/metal/weldHeat.d.ts.map +1 -1
  361. package/dist/metal/weldHeat.js +203 -44
  362. package/dist/metal/weldHeat.js.map +1 -1
  363. package/dist/metal/welding.d.ts.map +1 -1
  364. package/dist/metal/welding.js +3 -2
  365. package/dist/metal/welding.js.map +1 -1
  366. package/dist/quality/aql.d.ts.map +1 -1
  367. package/dist/quality/aql.js +1 -4
  368. package/dist/quality/aql.js.map +1 -1
  369. package/dist/quality/controlChart.d.ts +26 -0
  370. package/dist/quality/controlChart.d.ts.map +1 -0
  371. package/dist/quality/controlChart.js +216 -0
  372. package/dist/quality/controlChart.js.map +1 -0
  373. package/dist/quality/cpk.d.ts +16 -4
  374. package/dist/quality/cpk.d.ts.map +1 -1
  375. package/dist/quality/cpk.js +16 -4
  376. package/dist/quality/cpk.js.map +1 -1
  377. package/dist/quality/downtime.d.ts.map +1 -1
  378. package/dist/quality/downtime.js +1 -4
  379. package/dist/quality/downtime.js.map +1 -1
  380. package/dist/quality/dpmo.d.ts.map +1 -1
  381. package/dist/quality/dpmo.js +2 -65
  382. package/dist/quality/dpmo.js.map +1 -1
  383. package/dist/quality/index.d.ts +2 -1
  384. package/dist/quality/index.d.ts.map +1 -1
  385. package/dist/quality/index.js +1 -0
  386. package/dist/quality/index.js.map +1 -1
  387. package/dist/quality/lineBalancing.d.ts.map +1 -1
  388. package/dist/quality/lineBalancing.js +1 -4
  389. package/dist/quality/lineBalancing.js.map +1 -1
  390. package/dist/quality/mtbf.d.ts.map +1 -1
  391. package/dist/quality/mtbf.js +1 -4
  392. package/dist/quality/mtbf.js.map +1 -1
  393. package/dist/quality/oee.d.ts +13 -1
  394. package/dist/quality/oee.d.ts.map +1 -1
  395. package/dist/quality/oee.js +30 -9
  396. package/dist/quality/oee.js.map +1 -1
  397. package/dist/quality/ppk.d.ts.map +1 -1
  398. package/dist/quality/ppk.js +2 -20
  399. package/dist/quality/ppk.js.map +1 -1
  400. package/dist/quality/ppm.d.ts.map +1 -1
  401. package/dist/quality/ppm.js +2 -84
  402. package/dist/quality/ppm.js.map +1 -1
  403. package/dist/quality/rpn.d.ts.map +1 -1
  404. package/dist/quality/rpn.js +1 -4
  405. package/dist/quality/rpn.js.map +1 -1
  406. package/dist/quality/types.d.ts +31 -0
  407. package/dist/quality/types.d.ts.map +1 -1
  408. package/dist/quality/yield.d.ts.map +1 -1
  409. package/dist/quality/yield.js +1 -4
  410. package/dist/quality/yield.js.map +1 -1
  411. package/dist/safety/fallClearance.d.ts +12 -3
  412. package/dist/safety/fallClearance.d.ts.map +1 -1
  413. package/dist/safety/fallClearance.js +73 -17
  414. package/dist/safety/fallClearance.js.map +1 -1
  415. package/dist/safety/index.d.ts +2 -1
  416. package/dist/safety/index.d.ts.map +1 -1
  417. package/dist/safety/index.js +1 -0
  418. package/dist/safety/index.js.map +1 -1
  419. package/dist/safety/nioshLifting.d.ts +19 -10
  420. package/dist/safety/nioshLifting.d.ts.map +1 -1
  421. package/dist/safety/nioshLifting.js +19 -10
  422. package/dist/safety/nioshLifting.js.map +1 -1
  423. package/dist/safety/types.d.ts +25 -0
  424. package/dist/safety/types.d.ts.map +1 -1
  425. package/dist/safety/ventilationRate.d.ts +12 -0
  426. package/dist/safety/ventilationRate.d.ts.map +1 -0
  427. package/dist/safety/ventilationRate.js +71 -0
  428. package/dist/safety/ventilationRate.js.map +1 -0
  429. package/dist/utility/assignment.d.ts.map +1 -1
  430. package/dist/utility/assignment.js +1 -7
  431. package/dist/utility/assignment.js.map +1 -1
  432. package/dist/utility/index.d.ts +2 -2
  433. package/dist/utility/index.d.ts.map +1 -1
  434. package/dist/utility/index.js +1 -1
  435. package/dist/utility/index.js.map +1 -1
  436. package/dist/utility/types.d.ts +0 -16
  437. package/dist/utility/types.d.ts.map +1 -1
  438. package/dist/utility/unit.d.ts +1 -1
  439. package/dist/utility/unit.d.ts.map +1 -1
  440. package/dist/utility/unit.js +2 -8
  441. package/dist/utility/unit.js.map +1 -1
  442. package/dist/utils.d.ts +5 -1
  443. package/dist/utils.d.ts.map +1 -1
  444. package/dist/utils.js +11 -2
  445. package/dist/utils.js.map +1 -1
  446. package/package.json +37 -4
  447. package/dist/utility/qrcode.d.ts +0 -30
  448. package/dist/utility/qrcode.d.ts.map +0 -1
  449. package/dist/utility/qrcode.js +0 -30
  450. 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"}