Вот мой (полностью непроверенный) подход.
Рассмотрим сначала ту же проблему, но только с одной фиксированной точки P.
Найдите две (бесконечные) линии, проходящие через P, и заключите ваш прямоугольник B. Поскольку это прямоугольник, эти две линии будут двумя из четырех линий, проходящих через P, и каждой вершиной B.
Проверьте, находится ли каждая вершина C между этими двумя линиями или нет. Если какая-либо вершина C находится между этими двумя линиями, проверьте, находится ли она ближе или дальше от P, чем B. Если он дальше, чем B, то он хотя бы частично заслоняет C.
Теперь сделайте это для каждой вершины A. Вы можете получить более сложные результаты, если увидите часть C из одной точки P в A и другую часть C из другой точки P в A. Я оставлю это вам, как с этим справиться.
Чтобы определить процент покрытия, вычислите фигуру, полученную из пересекающегося прямоугольника C с этими двумя линиями, и вычислите его площадь, а затем разделите на общую площадь фигуры.
Я оставил всю математику в этом вопросе, чтобы вы выяснили, но если у вас есть какие-то конкретные вопросы о вашей работе, не стесняйтесь задавать их.
Для этого ответа было бы неплохо добавить несколько картинок, но я надеюсь, что вы сможете понять этот ответ, пока рисуете свои собственные диаграммы в соответствии с предоставленными шагами.