MCPcopy Create free account
hub / github.com/DFHack/dfhack / unitvector

Method unitvector

library/modules/Random.cpp:127–146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125
126template<class T>
127void MersenneRNG::unitvector(T *p, int size)
128{
129 for (;;)
130 {
131 T rsqr = 0;
132 for (int i = 0; i < size; i++)
133 {
134 p[i] = (T)unitrandom();
135 rsqr += p[i]*p[i];
136 }
137
138 if (rsqr > 0 && rsqr <= 1)
139 {
140 rsqr = std::sqrt(rsqr);
141 for (int i = 0; i < size; i++)
142 p[i] /= rsqr;
143 break;
144 }
145 }
146}
147
148template void DFHACK_EXPORT MersenneRNG::unitvector<float>(float *p, int size);
149template void DFHACK_EXPORT MersenneRNG::unitvector<double>(double *p, int size);

Callers 2

dfhack_random_unitvectorFunction · 0.80
random_directionFunction · 0.80

Calls 1

unitrandomFunction · 0.85

Tested by

no test coverage detected