kmVec4* kmVec4Normalize(kmVec4* pOut, const kmVec4* pIn) { kmScalar l; if (!pIn->x && !pIn->y && !pIn->z && !pIn->w){ return kmVec4Assign(pOut, pIn); } l = 1.0f / kmVec4Length(pIn); pOut->x = pIn->x * l; pOut->y = pIn->y * l; pOut->z = pIn->z * l; pOut->w = pIn->w * l; return pOut; }
/// Normalizes a 4D vector. The result is stored in pOut. pOut is returned kmVec4* kmVec4Normalize(kmVec4* pOut, const kmVec4* pIn) { if (!pIn->x && !pIn->y && !pIn->z && !pIn->w) return kmVec4Assign(pOut, pIn); kmScalar l = 1.0f / kmVec4Length(pIn); kmVec4 v; v.x = pIn->x * l; v.y = pIn->y * l; v.z = pIn->z * l; v.w = pIn->w * l; pOut->x = v.x; pOut->y = v.y; pOut->z = v.z; pOut->w = v.w; return pOut; }