Skip to content

Commit

Permalink
Add command line argument for user defined model tolerance
Browse files Browse the repository at this point in the history
  • Loading branch information
mxdamien committed Mar 15, 2022
1 parent 1920210 commit a49fa0a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 13 deletions.
4 changes: 4 additions & 0 deletions src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ pub struct Args {
/// Parameters for the model, each in the form `key=value`
#[clap(short, long)]
pub parameters: Vec<String>,

// Model deviation tolerance
#[clap[short, long, default_value = "0.0"]]
pub tolerance: f64,
}

impl Args {
Expand Down
31 changes: 18 additions & 13 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,22 +81,27 @@ fn main() -> anyhow::Result<()> {

let mut aabb = shape.bounding_volume();

// Compute a reasonable default for the tolerance value. To do this, we just
// look at the smallest non-zero extent of the bounding box and divide that
// by some value.
let tolerance = {
let mut min_extent = Scalar::MAX;
for extent in aabb.size().components() {
if extent > Scalar::ZERO && extent < min_extent {
min_extent = extent;
let user_defined_tolerance = Scalar::from_f64(args.tolerance);

let tolerance = match user_defined_tolerance {
m if m <= Scalar::ZERO => {
// Compute a reasonable default for the tolerance value. To do this, we just
// look at the smallest non-zero extent of the bounding box and divide that
// by some value.
let mut min_extent = Scalar::MAX;
for extent in aabb.size().components() {
if extent > Scalar::ZERO && extent < min_extent {
min_extent = extent;
}
}
}

// `tolerance` must not be zero, or we'll run into trouble.
let tolerance = min_extent / Scalar::from_f64(1000.);
assert!(tolerance > Scalar::ZERO);
// `tolerance` must not be zero, or we'll run into trouble.
let tolerance = min_extent / Scalar::from_f64(1000.);
assert!(tolerance > Scalar::ZERO);

tolerance
tolerance
}
_ => user_defined_tolerance,
};

let mut debug_info = DebugInfo::new();
Expand Down

0 comments on commit a49fa0a

Please sign in to comment.