Booleans: a face crossed by nested intersection loops (both walls of a tube) gives each hole to the innermost piece holding it (vendored shapeops; tubes and tori cut across now work); revolved full circles start at an odd angle so their seams don't lie in common cut planes
Oracle: 70/76. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01AS5Tn3xieewUSg3uxrMVdL
This commit is contained in:
1 parent
89c2c440ac
commit
5539de8fd4
4 files changed
+70
-3
No files matched your search
+10
-1
@@ -86,7 +86,16 @@ where
|
||||
}
|
||||
negative_wires.into_iter().try_for_each(|chunk| {
|
||||
let pt = chunk.poly.front();
|
||||
let op = crate::tr!(pre_faces.iter_mut().find(|face| face[0].poly.include(pt)), "loop not inside any face piece");
|
||||
// SolveCraft: the innermost piece that holds the loop (nested intersection loops, such
|
||||
// as both walls of a tube crossing one face), never the loop's own twin.
|
||||
let hole = -chunk.poly.area();
|
||||
let op = crate::tr!(
|
||||
pre_faces
|
||||
.iter_mut()
|
||||
.filter(|face| face[0].poly.area() > hole * (1.0 + 1e-6) && face[0].poly.include(pt))
|
||||
.min_by(|x, y| x[0].poly.area().total_cmp(&y[0].poly.area())),
|
||||
"loop not inside any face piece"
|
||||
);
|
||||
op.push(chunk);
|
||||
Some(())
|
||||
})?;
|
||||
|
||||
Reference in new issue
Block a user