Vector3f Vector3f::OrthoNormal(const Vector3f& v1, const Vector3f& v2) { Vector3f cross = Vector3f::CrossProduct(v1, v2); if (cross.NormalizeTry()) return cross; if (!v1.IsLengthZero()) return Vector3f::OrthoNormal(v1); else return Vector3f::OrthoNormal(v2); }