| 176 | } |
| 177 | |
| 178 | inline F32 xVec3Hdng(xVec3* a, const xVec3* b, const xVec3* c) |
| 179 | { |
| 180 | F32 dx = c->x - b->x; |
| 181 | F32 dy = c->y - b->y; |
| 182 | F32 dz = c->z - b->z; |
| 183 | F32 len2 = dx * dx + dy * dy + dz * dz; |
| 184 | F32 len, invLen, ret; |
| 185 | |
| 186 | if (xeq(len2, 1.0f, 0.00001f)) |
| 187 | { |
| 188 | a->x = dx; |
| 189 | a->y = dy; |
| 190 | a->z = dz; |
| 191 | ret = 1.0f; |
| 192 | } |
| 193 | else if (xeq(len2, 0.0f, 0.00001f)) |
| 194 | { |
| 195 | a->x = 0.0f; |
| 196 | a->y = 1.0f; |
| 197 | a->z = 0.0f; |
| 198 | ret = 0.0f; |
| 199 | } |
| 200 | else |
| 201 | { |
| 202 | len = xsqrt(len2); |
| 203 | invLen = 1.0f / len; |
| 204 | a->x = dx * invLen; |
| 205 | a->y = dy * invLen; |
| 206 | a->z = dz * invLen; |
| 207 | ret = len; |
| 208 | } |
| 209 | |
| 210 | return ret; |
| 211 | } |
no test coverage detected