MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xVec3NormalizeFast

Function xVec3NormalizeFast

src/SB/Core/x/xVec3.cpp:51–86  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49}
50
51F32 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
88void xVec3Copy(register xVec3* dst, const register xVec3* src)
89{

Callers

nothing calls this directly

Calls 1

xsqrtfastFunction · 0.85

Tested by

no test coverage detected