static DEFAULT_COST_TRAVERSAL: f32 = 15.;
static DEFAULT_COST_INTERSECTION: f32 = 20.;
static DEFAULT_EMPTY_CUT_BONUS: f32 = 0.2;
#[derive(Clone, Copy, Debug)]
pub struct BuilderConfig {
cost_traversal: f32,
cost_intersection: f32,
empty_cut_bonus: f32,
}
impl BuilderConfig {
pub fn new(cost_traversal: f32, cost_intersection: f32, empty_cut_bonus: f32) -> Self {
assert!(cost_traversal > 0.);
assert!(cost_intersection > 0.);
assert!((0. ..=1.).contains(&empty_cut_bonus));
BuilderConfig {
cost_traversal,
cost_intersection,
empty_cut_bonus,
}
}
pub fn cost_traversal(&self) -> f32 {
self.cost_traversal
}
pub fn cost_intersection(&self) -> f32 {
self.cost_intersection
}
pub fn empty_cut_bonus(&self) -> f32 {
self.empty_cut_bonus
}
}
impl Default for BuilderConfig {
fn default() -> Self {
BuilderConfig {
cost_traversal: DEFAULT_COST_TRAVERSAL,
cost_intersection: DEFAULT_COST_INTERSECTION,
empty_cut_bonus: DEFAULT_EMPTY_CUT_BONUS,
}
}
}