void AABB::TransformAsAABB(const float3x4 &transform) { assume(transform.IsColOrthogonal()); assume(transform.HasUniformScale()); AABBTransformAsAABB(*this, transform); }
void Capsule::Transform(const float3x4 &transform) { assume(transform.HasUniformScale()); assume(transform.IsColOrthogonal()); l.Transform(transform); r *= transform.Col(0).Length(); // Scale the radius. }
void Circle::Transform(const float3x4 &transform) { assume(transform.HasUniformScale()); assume(transform.IsColOrthogonal()); pos = transform.MulPos(pos); normal = transform.MulDir(normal).Normalized(); r *= transform.Col(0).Length(); // Scale the radius of the circle. }
void Frustum::Transform(const float3x4 &transform) { assume(transform.HasUniformScale()); pos = transform.MulPos(pos); front = transform.MulDir(front); float scaleFactor = front.Normalize(); up = transform.MulDir(up).Normalized(); nearPlaneDistance *= scaleFactor; farPlaneDistance *= scaleFactor; if (type == OrthographicFrustum) { orthographicWidth *= scaleFactor; orthographicHeight *= scaleFactor; } }
void Sphere::Transform(const float3x4 &transform) { assume(transform.HasUniformScale()); pos = transform.MulPos(pos); r *= transform.Col(0).Length(); }