forked from 1b-agent/opencadstudio-upstream
feat(polyline): apply the full width to each side of the centreline
Draw the polyline width bands with the stored width offset to each side of the centreline rather than half of it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
910caa6f67
commit
9b45f0588d
2 files changed
+9
-6
No files matched your search
@@ -635,7 +635,9 @@ impl crate::entities::traits::Transformable for LwPolyline {
|
||||
/// UTM-scale coordinates — building them in absolute f32 collapsed the band into
|
||||
/// a string of squares far from the origin.
|
||||
pub(crate) fn wide_fills(pl: &acadrust::entities::LwPolyline) -> ([f64; 2], Vec<Vec<[f32; 2]>>) {
|
||||
let hw_const = (pl.constant_width / 2.0) as f32;
|
||||
// The stored width is applied to EACH side of the centreline (not halved),
|
||||
// so `polyline_segment_fill`'s ±offset spans the full width on either side.
|
||||
let hw_const = pl.constant_width as f32;
|
||||
let verts = &pl.vertices;
|
||||
let n = verts.len();
|
||||
if n < 2 {
|
||||
@@ -648,12 +650,12 @@ pub(crate) fn wide_fills(pl: &acadrust::entities::LwPolyline) -> ([f64; 2], Vec<
|
||||
let v0 = &verts[i];
|
||||
let v1 = &verts[(i + 1) % n];
|
||||
let hw0 = if v0.start_width > 1e-9 {
|
||||
v0.start_width as f32 / 2.0
|
||||
v0.start_width as f32
|
||||
} else {
|
||||
hw_const
|
||||
};
|
||||
let hw1 = if v0.end_width > 1e-9 {
|
||||
v0.end_width as f32 / 2.0
|
||||
v0.end_width as f32
|
||||
} else {
|
||||
hw_const
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user