void Capsule::Transform(const float4x4 &transform) { assume(transform.HasUniformScale()); assume(transform.IsColOrthogonal3()); l.Transform(transform); r *= transform.Col3(0).Length(); // Scale the radius. }
void Sphere::Transform(const float4x4 &transform) { assume(transform.HasUniformScale()); assume(!transform.ContainsProjection()); pos = transform.MulPos(pos); r *= transform.Col3(0).Length(); }
void Circle::Transform(const float4x4 &transform) { assume(transform.HasUniformScale()); assume(transform.IsColOrthogonal3()); pos = transform.MulPos(pos); normal = transform.MulDir(normal).Normalized(); r *= transform.Col3(0).Length(); // Scale the radius of the circle. }