From f66e306e8ff997a413ba318e9d64220debda4bd7 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Tue, 23 Sep 2025 15:35:26 +0100 Subject: [PATCH] Add rng_xy() --- include/rng.h | 1 + src/rng.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/rng.h b/include/rng.h index d1252b8..276e3d3 100644 --- a/include/rng.h +++ b/include/rng.h @@ -14,6 +14,7 @@ uint32_t rng_uint32(rng_t *rng); double rng_canon(rng_t *rng); double rng_plusminus(rng_t *rng); vec3_t rng_vec3(rng_t *rng); +vec3_t rng_xy(rng_t *rng); vec3_t rng_gaussian_xy(rng_t *rng, double stddev); #endif diff --git a/src/rng.c b/src/rng.c index 3ba51d8..0dc30c4 100644 --- a/src/rng.c +++ b/src/rng.c @@ -42,6 +42,13 @@ vec3_t rng_vec3(rng_t *rng) return vec3_unit(v); } +vec3_t rng_xy(rng_t *rng) +{ + const double theta = 2.0 * M_PI * rng_canon(rng); + const double mag = rng_canon(rng); + return (vec3_t) { .x = mag * cos(theta), .y = mag * sin(theta) }; +} + vec3_t rng_gaussian_xy(rng_t *rng, double stddev) { const double r1 = rng_canon(rng);