Better interior sampling
This commit is contained in:
parent
290709ffe0
commit
d044295b75
@ -230,13 +230,9 @@ impl ShapeSample for Rhombus {
|
|||||||
fn sample_interior<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec2 {
|
fn sample_interior<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec2 {
|
||||||
let x: f32 = rng.gen_range(0.0..1.0);
|
let x: f32 = rng.gen_range(0.0..1.0);
|
||||||
let y: f32 = rng.gen_range(0.0..1.0);
|
let y: f32 = rng.gen_range(0.0..1.0);
|
||||||
let sign = if rng.r#gen() { Vec2::ONE } else { Vec2::new(-1.0, 1.0) };
|
|
||||||
let p = if ops::abs(x) + ops::abs(y) > 1.0 {
|
let unit_p = Vec2::NEG_X + x * Vec2::ONE + Vec2::new(y, -y);
|
||||||
Vec2::new(x, y) - Vec2::ONE
|
unit_p * self.half_diagonals
|
||||||
} else {
|
|
||||||
Vec2::new(x, y)
|
|
||||||
};
|
|
||||||
p * sign * self.half_diagonals
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sample_boundary<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec2 {
|
fn sample_boundary<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec2 {
|
||||||
|
Loading…
Reference in New Issue
Block a user