void float2::Orthogonalize(const float2 &a, float2 &b) { assume(!a.IsZero()); b -= a.Dot(b) / a.Length() * a; }
float2 float2::Reflect(const float2 &normal) const { assume2(normal.IsNormalized(), normal.SerializeToCodeString(), normal.Length()); return 2.f * this->ProjectToNorm(normal) - *this; }