diff --git a/line-segment-intersection/src/App.svelte b/line-segment-intersection/src/App.svelte index 08f237e..e1bc327 100644 --- a/line-segment-intersection/src/App.svelte +++ b/line-segment-intersection/src/App.svelte @@ -76,7 +76,20 @@ }; } - function handleCanvasClick() { + function handleCanvasClick(event) { + // If we're about to turn off tracking, update position one last time + if (trackHover) { + const rect = canvas.getBoundingClientRect(); + const mouseX = event.clientX - rect.left; + const mouseY = event.clientY - rect.top; + + // Add half grid unit offset for snapping to closest grid intersection + userPoint = { + x: Math.floor((mouseX + GRID_SIZE / 2) / GRID_SIZE), + y: Math.floor((HEIGHT - mouseY + GRID_SIZE / 2) / GRID_SIZE) + }; + } + trackHover = !trackHover; }