fix laser utility calculations

This commit is contained in:
makearmy 2026-07-10 17:22:41 -04:00
parent b59e8e54bb
commit 0855724cb0
5 changed files with 58 additions and 131 deletions

View file

@ -21,16 +21,19 @@ export default function Page() {
const dUm = num(spotUm); // µm
if (v <= 0 || f <= 0 || dUm <= 0) {
return { spacingUm: 0, spacingMm: 0, overlapPct: 0, pulsesPerMm: 0 };
return { spacingUm: 0, spacingMm: 0, overlapPct: 0, gapPct: 0, pulsesPerMm: 0, pulsesPerSpot: 0 };
}
// distance per pulse
const spacingUm = v / f; // µm (derives from v(mm/s) / (f(kHz)*1000) * 1000)
const spacingMm = spacingUm / 1000;
const overlapPct = Math.max(0, Math.min(100, 100 * (1 - spacingUm / dUm)));
const signedOverlapPct = 100 * (1 - spacingUm / dUm);
const overlapPct = Math.max(0, signedOverlapPct);
const gapPct = Math.max(0, -signedOverlapPct);
const pulsesPerMm = (f * 1000) / v;
const pulsesPerSpot = dUm / spacingUm;
return { spacingUm, spacingMm, overlapPct, pulsesPerMm };
return { spacingUm, spacingMm, overlapPct, gapPct, pulsesPerMm, pulsesPerSpot };
}, [speed, freq, spotUm]);
return (
@ -68,20 +71,24 @@ export default function Page() {
<div>
<div className="text-sm text-muted-foreground">Overlap</div>
<div className="text-lg">{result.overlapPct.toFixed(1)}%</div>
{result.gapPct > 0 && (
<div className="text-xs text-amber-600">{result.gapPct.toFixed(1)}% gap between pulses</div>
)}
</div>
<div>
<div className="text-sm text-muted-foreground">Pulses per mm</div>
<div className="text-lg">{result.pulsesPerMm.toFixed(1)}</div>
</div>
<div>
<div className="text-sm text-muted-foreground">Rule of thumb</div>
<div className="text-xs">
6080% overlap is common for marking; deeper engraving often higher.
</div>
<div className="text-sm text-muted-foreground">Pulses per spot diameter</div>
<div className="text-lg">{result.pulsesPerSpot.toFixed(2)}</div>
</div>
</CardContent>
</Card>
<p className="mt-4 text-xs leading-relaxed text-muted-foreground">
Geometric overlap along the scan direction only. It does not predict material response;
pulse energy, spot profile, hatch spacing, and thermal accumulation also matter.
</p>
</ToolShell>
);
}