pub struct SphericalDisk<const N: usize> {
pub disk_radius: PositiveReal,
pub point: Spherical<N>,
}Expand description
Randomly distribute points locally on a sphere.
SphericalDisk is a uniform distribution of points within distance r of
a point on the 2-sphere with a given radius.
§Example
use hoomd_manifold::{Spherical, SphericalDisk};
use hoomd_vector::{Cartesian, Metric};
use rand::{Rng, SeedableRng, distr::Distribution, rngs::StdRng};
let mut rng = StdRng::seed_from_u64(12);
let sample_disk =
SphericalDisk {
disk_radius: 0.5_f64.try_into()?,
point: Spherical::<3>::from_cartesian_coordinates(Cartesian::from(
[0.01, 0.01, -(1.0 - 2.0 * (0.01_f64).powi(2)).sqrt()],
)),
};
let random_point: Spherical<3> = sample_disk.sample(&mut rng);
let disk = SphericalDisk {
disk_radius: 0.1_f64.try_into()?,
point: random_point,
};
let transformed_random_point: Spherical<3> = disk.sample(&mut rng);
assert!(0.1 > random_point.distance(&transformed_random_point));
Fields§
§disk_radius: PositiveRealMax distance away from point.
point: Spherical<N>The center of the disk.
Trait Implementations§
Source§impl<const N: usize> Clone for SphericalDisk<N>
impl<const N: usize> Clone for SphericalDisk<N>
Source§fn clone(&self) -> SphericalDisk<N>
fn clone(&self) -> SphericalDisk<N>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const N: usize> Debug for SphericalDisk<N>
impl<const N: usize> Debug for SphericalDisk<N>
Source§impl<'de, const N: usize> Deserialize<'de> for SphericalDisk<N>
impl<'de, const N: usize> Deserialize<'de> for SphericalDisk<N>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Distribution<Spherical<3>> for SphericalDisk<3>
impl Distribution<Spherical<3>> for SphericalDisk<3>
Source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Spherical<3>
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Spherical<3>
Translates 3-dimensional cartesian vector named “point” along the surface of a sphere by maximum distance of r.
§fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>where
R: Rng,
Self: Sized,
fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>where
R: Rng,
Self: Sized,
Create an iterator that generates random values of
T, using rng as
the source of randomness. Read moreSource§impl Distribution<Spherical<4>> for SphericalDisk<4>
impl Distribution<Spherical<4>> for SphericalDisk<4>
Source§fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Spherical<4>
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Spherical<4>
Translates 3-dimensional cartesian vector named “point” along the surface of a sphere by maximum distance of r.
§fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>where
R: Rng,
Self: Sized,
fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>where
R: Rng,
Self: Sized,
Create an iterator that generates random values of
T, using rng as
the source of randomness. Read moreSource§impl<const N: usize> PartialEq for SphericalDisk<N>
impl<const N: usize> PartialEq for SphericalDisk<N>
Source§impl<const N: usize> Serialize for SphericalDisk<N>
impl<const N: usize> Serialize for SphericalDisk<N>
impl<const N: usize> StructuralPartialEq for SphericalDisk<N>
Auto Trait Implementations§
impl<const N: usize> Freeze for SphericalDisk<N>
impl<const N: usize> RefUnwindSafe for SphericalDisk<N>
impl<const N: usize> Send for SphericalDisk<N>
impl<const N: usize> Sync for SphericalDisk<N>
impl<const N: usize> Unpin for SphericalDisk<N>
impl<const N: usize> UnwindSafe for SphericalDisk<N>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more