Add rng_xy()
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user