Add DiagonalWalkera and fix 3D KD grid

This commit is contained in:
2023-03-10 15:28:42 +00:00
parent 73bb0f8ed1
commit 10c7450c8a
9 changed files with 90 additions and 100 deletions
+12 -1
View File
@@ -1,3 +1,4 @@
use anyhow::anyhow;
use rand::Rng;
use crate::system::{GriddedPosition, Position, Storage};
@@ -8,7 +9,17 @@ pub trait Sticker<P: Position, S: Storage<P>> {
pub struct SimpleSticking;
pub struct ProbabilisticSticking {
pub stick_probability: f32
pub(crate) stick_probability: f32
}
impl ProbabilisticSticking {
pub fn new(stick_probability: f32) -> anyhow::Result<ProbabilisticSticking> {
return if 0f32 < stick_probability && stick_probability <= 1f32 {
Ok(ProbabilisticSticking { stick_probability })
} else {
Err(anyhow!("Sticking probability outside of (0, 1] range."))
}
}
}
impl<P: GriddedPosition, S: Storage<P>> Sticker<P, S> for SimpleSticking {