Class-A surfacing 3/3: blend curves, curved-edge fillets, the G2 corner and continuity analysis (#1642)
Thanks @midasdf.
This commit is contained in:
1 parent
3126962cd4
commit
bbd4f29ebb
43 files changed
+4753
-132
No files matched your search
@@ -115,7 +115,9 @@ fn controls(segment: &Seg2, plane: &Plane) -> Option<(Vec<Vec<H>>, H)> {
|
||||
Seg2::Line { a, b } => vec![vec![h(a, 1.0), h(b, 1.0)]],
|
||||
Seg2::Cubic { p0, p1, p2, p3 } => vec![vec![h(p0, 1.0), h(p1, 1.0), h(p2, 1.0), h(p3, 1.0)]],
|
||||
Seg2::Conic { a, apex, b, w } if w > 0.0 => vec![vec![h(a, 1.0), h(apex, w), h(b, 1.0)]],
|
||||
Seg2::Bezier { n, p } if (1..=7).contains(&n) => vec![p[..=n as usize].iter().map(|p| h(*p, 1.0)).collect()],
|
||||
Seg2::Bezier { n, p } if (1..=solidcraft_geom::MAX_BEZIER_DEGREE as u8).contains(&n) => {
|
||||
vec![p[..=n as usize].iter().map(|p| h(*p, 1.0)).collect()]
|
||||
}
|
||||
Seg2::Arc { center, radius, start, sweep }
|
||||
if radius > 0.0 && start.is_finite() && sweep.is_finite() && sweep.abs() <= std::f64::consts::TAU + 1e-9 =>
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ fn dense_error(s: &Seg2, plane: &Plane, v: &PixelCurveView, path: &SampledPath)
|
||||
|
||||
#[test]
|
||||
fn exact_arcs_ellipses_rational_and_looping_control_hulls_bound_pixels() {
|
||||
let mut degree7 = [Vec2::ZERO; 8];
|
||||
let mut degree7 = [Vec2::ZERO; solidcraft_geom::MAX_BEZIER_CTRL];
|
||||
for (i, p) in degree7.iter_mut().enumerate() {
|
||||
*p = Vec2::new(i as f64 / 4.0 - 0.875, if i % 2 == 0 { -0.8 } else { 0.8 });
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user