void Capsule::Transform(const float4x4 &transform) { assume(transform.HasUniformScale()); assume(transform.IsColOrthogonal3()); l.Transform(transform); r *= transform.Col3(0).Length(); // Scale the radius. }
void AABB::TransformAsAABB(const float4x4 &transform) { assume(transform.IsColOrthogonal3()); assume(transform.HasUniformScale()); assume(transform.Row(3).Equals(0,0,0,1)); AABBTransformAsAABB(*this, transform); }
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. }
void AABB::TransformAsAABB(const float4x4 &transform) { assume(transform.IsColOrthogonal3()); assume(transform.HasUniformScale()); assume(transform.Row(3).Equals(0,0,0,1)); #if defined(MATH_AUTOMATIC_SSE) && defined(MATH_SIMD) AABBTransformAsAABB_SIMD(*this, transform); #else AABBTransformAsAABB(*this, transform); #endif }
void Quat::Set(const float4x4 &m) { assume(m.IsColOrthogonal3()); assume(m.HasUnitaryScale()); assume(!m.HasNegativeScale()); assume(m.Row(3).Equals(0,0,0,1)); SetQuatFrom(*this, m); #ifdef MATH_ASSERT_CORRECTNESS // Test that the conversion float3x3->Quat->float3x3 is correct. mathassert(this->ToFloat3x3().Equals(m.Float3x3Part(), 0.01f)); #endif }
void OBB::Transform(const float4x4 &transform) { assume(transform.IsColOrthogonal3()); OBBTransform(*this, transform); }