using MoonWorks.Math.Fixed; namespace MoonWorks.Collision.Fixed { /// /// A Minkowski difference between two shapes. /// public struct MinkowskiDifference where T : IShape2D where U : IShape2D { private T ShapeA { get; } private Transform2D TransformA { get; } private U ShapeB { get; } private Transform2D TransformB { get; } public MinkowskiDifference(T shapeA, Transform2D transformA, U shapeB, Transform2D transformB) { ShapeA = shapeA; TransformA = transformA; ShapeB = shapeB; TransformB = transformB; } public Vector2 Support(Vector2 direction) { return ShapeA.Support(direction, TransformA) - ShapeB.Support(-direction, TransformB); } } }