Add rng_xy()

This commit is contained in:
Camden Dixie O'Brien
2025-09-22 23:27:03 +01:00
parent d90b72e047
commit d3edbad772
2 changed files with 8 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ uint32_t rng_uint32(rng_t *rng);
double rng_canon(rng_t *rng); double rng_canon(rng_t *rng);
double rng_plusminus(rng_t *rng); double rng_plusminus(rng_t *rng);
vec3_t rng_vec3(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); vec3_t rng_gaussian_xy(rng_t *rng, double stddev);
#endif #endif

View File

@@ -42,6 +42,13 @@ vec3_t rng_vec3(rng_t *rng)
return vec3_unit(v); 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) vec3_t rng_gaussian_xy(rng_t *rng, double stddev)
{ {
const double r1 = rng_canon(rng); const double r1 = rng_canon(rng);