Better interior sampling

This commit is contained in:
Lynn Büttgenbach 2025-07-11 14:29:10 +02:00
parent 290709ffe0
commit d044295b75

View File

@ -230,13 +230,9 @@ impl ShapeSample for Rhombus {
fn sample_interior<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec2 {
let x: 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 {
Vec2::new(x, y) - Vec2::ONE
} else {
Vec2::new(x, y)
};
p * sign * self.half_diagonals
let unit_p = Vec2::NEG_X + x * Vec2::ONE + Vec2::new(y, -y);
unit_p * self.half_diagonals
}
fn sample_boundary<R: Rng + ?Sized>(&self, rng: &mut R) -> Vec2 {