| 49 | } |
| 50 | |
| 51 | F32 xVec3NormalizeFast(xVec3* o, const xVec3* v) |
| 52 | { |
| 53 | F32 x = v->x; |
| 54 | F32 x2 = SQR(v->x); |
| 55 | F32 y = v->y; |
| 56 | F32 y2 = SQR(v->y); |
| 57 | F32 z = v->z; |
| 58 | F32 z2 = SQR(v->z); |
| 59 | |
| 60 | F32 len; |
| 61 | F32 len2 = x2 + y2 + z2; |
| 62 | |
| 63 | if ((F32)iabs(len2 - 1.0f) <= 0.00001f) |
| 64 | { |
| 65 | o->x = x; |
| 66 | o->y = y; |
| 67 | o->z = z; |
| 68 | len = 1.0f; |
| 69 | } |
| 70 | else if ((F32)iabs(len2) <= 0.00001f) |
| 71 | { |
| 72 | o->x = 0.0f; |
| 73 | o->y = 1.0f; |
| 74 | o->z = 0.0f; |
| 75 | len = 0.0f; |
| 76 | } |
| 77 | else |
| 78 | { |
| 79 | xsqrtfast(len, len2); |
| 80 | F32 inv_len = 1.0f / len; |
| 81 | o->x = v->x * inv_len; |
| 82 | o->y = v->y * inv_len; |
| 83 | o->z = v->z * inv_len; |
| 84 | } |
| 85 | return len; |
| 86 | } |
| 87 | |
| 88 | void xVec3Copy(register xVec3* dst, const register xVec3* src) |
| 89 | { |
nothing calls this directly
no test coverage detected