diff --git a/packages/dim-si/README.md b/packages/dim-si/README.md index 23d659c..b50047f 100644 --- a/packages/dim-si/README.md +++ b/packages/dim-si/README.md @@ -22,15 +22,25 @@ bunx jsr add @isentropic/dim-si ```typescript import { kilometer, meter } from "@isentropic/dim-si/length"; +import { kilogram } from "@isentropic/dim-si/mass"; import { hour } from "@isentropic/dim-si/time"; +import { meterPerSecond } from "@isentropic/dim-si/velocity"; +import { meterPerSecondSquared } from "@isentropic/dim-si/acceleration"; +import { newton } from "@isentropic/dim-si/force"; import { celsius, kelvin } from "@isentropic/dim-si/temperature"; -import { q, valueIn } from "@isentropic/dim-si/ops"; +import { q } from "@isentropic/dim-si/ops"; + +// Division produces velocity +q(kilometer(100)).div(hour(2)).in(meterPerSecond); // ~13.89 -const speed = q(kilometer(100)).div(hour(2)); -const total = q(kilometer(5)).plus(meter(500)); +// Multiplication produces force (F = ma) +q(kilogram(80)).times(meterPerSecondSquared(9.81)).in(newton); // 784.8 -valueIn(total, meter); // 5500 -valueIn(total, kilometer); // 5.5 +// Addition with unit conversion +q(kilometer(5)).plus(meter(500)).in(kilometer); // 5.5 + +// Scaling +q(meter(3)).scale(2).in(meter); // 6 // Dimension mismatches are compile errors q(kilometer(5)).plus(hour(1)); // Error: can't add length and time @@ -41,15 +51,8 @@ q(celsius(100)).minus(celsius(0)).in(kelvin); // 100 (linear delta) q(celsius(20)).plus(celsius.delta(5)).in(celsius); // 25 ``` -Free functions (`add`, `subtract`, `multiply`, `divide`, `scale`) are also -available: - -```typescript -import { add, divide } from "@isentropic/dim-si/ops"; - -const total = add(kilometer(5), meter(500)); -const speed = divide(kilometer(100), hour(2)); -``` +Free functions (`add`, `subtract`, `multiply`, `divide`, `scale`, `valueIn`) are +also available for a non-chaining style. ## Units