public static void ProjectShapeToAxis(Vector2 axis, Shape shape, ref float min, ref float max)
        {
            List<Vector2> vertices = shape.GetVertices();
            float proj = LinearFunctions.GetProjection(axis, vertices[0]);

            min = max = proj;

            for (int i = 1; i < vertices.Count; i++)
            {
                proj = LinearFunctions.GetProjection(axis, vertices[i]);

                if (proj < min)
                {
                    min = proj;
                }
                else if (proj > max)
                {
                    max = proj;
                }
            }
        }
 public static Shape GetTransformedShape(Shape shape, Matrix transform)
 {
     Shape newShape = new Shape(LinearFunctions.GetTransformedVertices(shape.GetVertices(), transform));
     return newShape;
 }