float4 float4::Reflect3(const float3 &normal) const { assume2(normal.IsNormalized(), normal.SerializeToCodeString(), normal.Length()); assume(EqualAbs(w, 0)); return 2.f * this->ProjectToNorm3(normal) - *this; }
float3 float3::Reflect(const float3 &normal) const { assume2(normal.IsNormalized(), normal.SerializeToCodeString(), normal.Length()); return 2.f * this->ProjectToNorm(normal) - *this; }