Определение, находится ли объект на пути двух других объектов в 2D-пространстве - PullRequest
0 голосов
/ 17 сентября 2018

Скажем, есть 3 объекта, определенных прямоугольниками в координатах xy.Прямоугольники могут иметь любую ориентацию (необязательно параллельную осям).

Как бы вы подошли к решению проблемы определения того, является ли объект C частично, полностью или вообще не скрыт объектом B с точки зрения объекта A (объект A можно видеть из любой точки его прямоугольника)?

Второй вопрос: можно ли определить процент видимого объекта C?

1 Ответ

0 голосов
/ 17 сентября 2018

Вот мой (полностью непроверенный) подход.
Рассмотрим сначала ту же проблему, но только с одной фиксированной точки P.

Найдите две (бесконечные) линии, проходящие через P, и заключите ваш прямоугольник B. Поскольку это прямоугольник, эти две линии будут двумя из четырех линий, проходящих через P, и каждой вершиной B.

Проверьте, находится ли каждая вершина C между этими двумя линиями или нет. Если какая-либо вершина C находится между этими двумя линиями, проверьте, находится ли она ближе или дальше от P, чем B. Если он дальше, чем B, то он хотя бы частично заслоняет C.

Теперь сделайте это для каждой вершины A. Вы можете получить более сложные результаты, если увидите часть C из одной точки P в A и другую часть C из другой точки P в A. Я оставлю это вам, как с этим справиться.

Чтобы определить процент покрытия, вычислите фигуру, полученную из пересекающегося прямоугольника C с этими двумя линиями, и вычислите его площадь, а затем разделите на общую площадь фигуры.

Я оставил всю математику в этом вопросе, чтобы вы выяснили, но если у вас есть какие-то конкретные вопросы о вашей работе, не стесняйтесь задавать их.

Для этого ответа было бы неплохо добавить несколько картинок, но я надеюсь, что вы сможете понять этот ответ, пока рисуете свои собственные диаграммы в соответствии с предоставленными шагами.

...