@RuslanUC

Как посчитать площадь фигур с учётом их пересечений?

Нужно посчитать площадь всех фигур в списке с учётом их наложений (т.е., если есть круг, с площадью, например, 1960, который полностью перекрывает другой такой же круг - их площадь будет 1960, а не 3920). Код для нахождения площади фигуры и нахождения площади двух фигур есть в методах `double GetArea(Figure f)` и `double GetOverlappingArea(Figure f1, Figure f2)` соответственно. Осталось только написать подсчёт общей площади, но тут проблема, следующий код работает на списке с двумя накладывающимися фигурами, но перестаёт работать на списке с тремя(на списке с одной выдаёт 1960, на двух - 1960, на трёх - 0):
double result = 0;
for(int i = 0; i < Figures.Count; i++) {
    result += GetArea(Figures[i]);
    for(int j = i+1; j < Figures.Count; j++) {
        result -= GetOverlappingArea(Figures[i], Figures[j]);
    }
}
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Griboks
@Griboks Куратор тега C#
У меня не совсем точные подсчёты выходят, с кругом и эллипсом т.к. я их "конвертирую" в массив точек.

Если вы используете точки, то просто переведите все фигуры в точки, а затем выполните логическое ИЛИ и сложите.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы