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 ff96a48
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 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
32 changes: 18 additions & 14 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,22 +81,26 @@ 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
// `tolerance` must not be zero, or we'll run into trouble.
let tolerance = min_extent / Scalar::from_f64(1000.);
assert!(tolerance > Scalar::ZERO);
tolerance
}
_ => user_defined_tolerance,
};

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

0 comments on commit ff96a48

Please sign in to comment.