forked from 1b-agent/opencadstudio-upstream
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:
1 parent
ca8d249173
commit
58e4d696ba
2 files changed
+121
-16
No files matched your search
+9
-3
@@ -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
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user