feat(otrack): lock onto the intersection of two active vectors

When two tracking vectors were active, clicking placed a free point on
one of them instead of their crossing. otrack_snap now builds the active
rays (OTRACK rays from tracking points, plus POLAR rays from the last
point) and, when the cursor is near the crossing of two vectors from
different origins, locks onto that intersection. Covers OTRACK×OTRACK and
POLAR×OTRACK; single-vector alignment is unchanged when no crossing is
near.

Closes #111
Closes #112

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-06-17 05:01:41 +03:00
1 parent ca8d249173
commit 58e4d696ba
2 files changed
+121 -16

No files matched your search

+9 -3
View File
@@ -2493,8 +2493,13 @@ impl OpenCADStudio {
} else {
None
};
self.snapper
.otrack_snap(cursor_world, view_proj, bounds, step)
self.snapper.otrack_snap(
cursor_world,
view_proj,
bounds,
step,
self.last_point,
)
} else {
None
}
@@ -3100,7 +3105,8 @@ impl OpenCADStudio {
} else {
None
};
self.snapper.otrack_snap(raw, vp_mat, bounds, step)
self.snapper
.otrack_snap(raw, vp_mat, bounds, step, self.last_point)
} else {
None
};