Как реализовать Area.contains (Площадь)? - PullRequest
0 голосов
/ 18 января 2012

Есть 2 области (java.awt.geom.Area) area1 и area2 . Мне нужно проверить, находится ли area2 внутри area1 ? ( area1 содержит area2 ).

Я пытался:

areaDelta = (Area)area1.clone();
areaDelta.add(area2);
return areaDelta.equals(area1);

Но он не всегда работает должным образом (если границы area2 находятся в границах area1 , он возвращает true, должен возвращать false).

На самом деле у меня есть 2 полигона (java.awt.Polygon), и мне нужен метод Polygon.contains (Polygon), может быть, это может быть проще, чем для областей.

Есть идеи?

Полигоны могут быть выпуклыми и невыпуклыми.

1 Ответ

1 голос
/ 18 января 2012

Поскольку у вас есть Polygon.contains (Point), вы можете достичь того, что вам нужно, протестировав, находится ли каждая точка вашего второго многоугольника внутри первого многоугольника (я мечтаю о версии JDK, которая реализовала бы все основные потребности программиста,например .NET).

РЕДАКТИРОВАТЬ: Для обработки вогнутых полигонов сначала нужно разбить полигоны на выпуклые, а затем вы сможете правильно использовать метод, упомянутый выше.Я использовал два разных алгоритма разложения полигонов в одном из моих приложений , и я бы посоветовал вам взглянуть на их код:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...