use super::*;
pub struct Sphere {}
impl Directivity for Sphere {
fn directivity(_: float) -> float {
1.
}
fn directivity_from_tr(_: &Transducer, _: &Vector3) -> float {
1.
}
}
#[cfg(test)]
mod tests {
use crate::geometry::{Quaternion, UnitQuaternion};
use super::*;
use rand::prelude::*;
#[test]
fn directivity() {
let mut rng = rand::thread_rng();
assert_eq!(1.0, Sphere::directivity(rng.gen()));
}
#[test]
fn directivity_from_tr() {
let mut rng = rand::thread_rng();
let tr = crate::geometry::Transducer::new(
rng.gen::<u16>() as usize,
rng.gen::<u8>() as usize,
Vector3::new(rng.gen(), rng.gen(), rng.gen()),
UnitQuaternion::from_quaternion(Quaternion::new(
rng.gen(),
rng.gen(),
rng.gen(),
rng.gen(),
)),
);
assert_eq!(
1.0,
Sphere::directivity_from_tr(&tr, &Vector3::new(rng.gen(), rng.gen(), rng.gen()))
);
}
}