Class-A surfacing 3/3: blend curves, curved-edge fillets, the G2 corner and continuity analysis (#1642)

Thanks @midasdf.
This commit is contained in:
midasdf authored and GitHub committed 2026-10-16 06:26:27 -04:00
1 parent 3126962cd4
commit bbd4f29ebb
43 files changed
+4753 -132

No files matched your search

+15
View File
@@ -239,6 +239,9 @@ pub struct Session {
pub section: Option<(Vec3, Vec3)>,
/// Surface analysis shading the model (zebra, draft, curvature map).
pub analysis: Option<SurfaceAnalysis>,
/// The seams `inspect.continuity` last measured, for the viewport to shade. View state: not
/// part of the design and not an undo step.
pub continuity: Vec<ContinuitySeam>,
/// What is hidden or shown in the view (`browser.visibility`): saved with the design, not an
/// undo step. A design brings its saved visibility when it opens (`Session::new`).
pub visibility: Visibility,
@@ -301,6 +304,16 @@ pub enum SurfaceAnalysis {
Access { dir: Vec3 },
}
/// One seam measured by `inspect.continuity`, where the viewport shades it: the stations it was
/// sampled at, in world coordinates, and how it reads. View state only: the design is untouched.
#[derive(Clone, Debug, PartialEq, serde::Serialize)]
pub struct ContinuitySeam {
/// Sample points along the seam, in world coordinates.
pub points: Vec<Vec3>,
/// The seam's worst verdict along its length.
pub verdict: kernel::SeamVerdict,
}
impl SurfaceAnalysis {
/// How a picture shades the faces for this analysis.
pub fn mode(self) -> render::AnalysisMode {
@@ -356,6 +369,7 @@ impl Session {
sketch_clipboard: None,
section: None,
analysis: None,
continuity: Vec::new(),
checkpoints: Vec::new(),
next_checkpoint: 1,
saved_visibility: visibility.clone(),
@@ -823,6 +837,7 @@ impl Session {
sketch_clipboard: self.sketch_clipboard.clone(),
section: None,
analysis: None,
continuity: Vec::new(),
checkpoints: Vec::new(),
next_checkpoint: 1,
visibility: self.visibility.clone(),