From 3ef8f4d918406eec6bdc29e0ebd883fabfac9b2e Mon Sep 17 00:00:00 2001 From: Julian T Date: Thu, 5 Aug 2021 15:44:40 +0200 Subject: Add picture for c5505ab84820248c6dba35fc06aef9e0ced183de --- src/sample/mod.rs | 46 ---------------------------------------------- src/sample/uniform.rs | 39 --------------------------------------- 2 files changed, 85 deletions(-) delete mode 100644 src/sample/mod.rs delete mode 100644 src/sample/uniform.rs (limited to 'src/sample') diff --git a/src/sample/mod.rs b/src/sample/mod.rs deleted file mode 100644 index 1a53921..0000000 --- a/src/sample/mod.rs +++ /dev/null @@ -1,46 +0,0 @@ -use crate::{M_PI, Float}; -use crate::core::{Vector3f, Vector2f}; - -mod uniform; - -pub use uniform::UniformSampler; - -fn distribute_between(x: Float, a: Float, b: Float) -> Float { - x * (b - a) + a -} - -pub trait Sampler { - fn get_sample(&mut self) -> Float; - - fn get_sample_2d(&mut self) -> Vector2f { - Vector2f::new_xy(self.get_sample(), self.get_sample()) - } - - fn clone_and_seed(&mut self) -> Box; - - fn get_unit_vector(&mut self) -> Vector3f { - let s2d = self.get_sample_2d(); - - let lambda = distribute_between(s2d.x, -M_PI, M_PI); - let costheta = 2.0 * s2d.y - 1.0; - let sintheta = costheta.acos().sin(); - - Vector3f::new_xyz( - lambda.cos() * sintheta, - lambda.sin() * sintheta, - costheta, - ) - } - - fn get_in_circle(&mut self) -> Vector2f { - let s2d = self.get_sample_2d(); - - let d = s2d.x.sqrt(); - let theta = s2d.y * 2.0 * M_PI; - - Vector2f::new_xy( - d * theta.cos(), - d * theta.sin(), - ) - } -} diff --git a/src/sample/uniform.rs b/src/sample/uniform.rs deleted file mode 100644 index c144f27..0000000 --- a/src/sample/uniform.rs +++ /dev/null @@ -1,39 +0,0 @@ -use crate::Float; -use super::Sampler; - -use rand::prelude::*; -use rand::distributions::Uniform; -use rand_pcg::Pcg32; - -#[derive(Clone)] -pub struct UniformSampler { - r: Pcg32, - d: Uniform, -} - -impl UniformSampler { - pub fn new() -> Self { - Self::default() - } -} - -impl Default for UniformSampler { - fn default() -> Self { - Self { - r: Pcg32::seed_from_u64(1), - d: Uniform::new(0.0, 1.0), - } - } -} - -impl Sampler for UniformSampler { - fn get_sample(&mut self) -> Float { - self.d.sample(&mut self.r) - } - - fn clone_and_seed(&mut self) -> Box { - let mut n = self.clone(); - n.r = Pcg32::seed_from_u64(self.r.next_u64()); - Box::new(n) - } -} -- cgit v1.2.3