forked from 1b-agent/opencadstudio-upstream
refactor(hatch): clip the pattern against the boundary in the kernel
The pattern's lines were clipped by sorting their crossings with the boundary and taking every other span. That is right where a line cuts a boundary cleanly and wrong wherever it grazes one: a line through a corner crosses twice in effectively one place, and from there every span is inverted — the fill lands in the holes and the solid comes out empty. A 1e-5 dedup on the crossings hid some of it and could not fix the rest, because which crossings to merge is not the question. The kernel divides the line by its crossings and then asks each span whether its middle is inside, which costs a containment test apiece and cannot get out of step. It also accepts a curved boundary rather than only a polygon, which this call site does not need yet and a section fill will. What stays is the PAT frame — the family angle, spacing, origin offset, the k range and the dash walk — which is a format convention rather than geometry. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
52799786f4
commit
ca85856f52
2 files changed
+42
-34
No files matched your search
Generated
+1
-1
@@ -935,7 +935,7 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
|
||||
[[package]]
|
||||
name = "cadkernel"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/HakanSeven12/cadkernel.git#5499242f1160018e066f78d4e462c9532e665a96"
|
||||
source = "git+https://github.com/HakanSeven12/cadkernel.git#47655b21de5e2678fb12ec5f093d7e338d68409d"
|
||||
dependencies = [
|
||||
"cavalier_contours",
|
||||
]
|
||||
|
||||
Reference in new issue
Block a user