Попытка рекурсивно найти площадь многоугольникаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Попытка рекурсивно найти площадь многоугольника

Сообщение Anonymous »

Попытка рекурсивного вычисления площади многоугольника с использованием теоремы о шнурках и разбиение его на треугольники.

Код: Выделить всё

public static double calculatePolygonArea(ArrayList
 points) {
if (points.size() < 3) {
return 0;
}
if (points.size() == 3) {
return calculateTriangleArea(points.get(0), points.get(1), points.get(2));
}

return calculateTriangleArea(points.get(0), points.get(1), points.get(2)) +
calculatePolygonArea(new ArrayList(points.subList(1, points.size())));
}

private static double calculateTriangleArea(Point p1, Point p2, Point p3) {
return Math.abs((p1.getX() * p2.getY() + p2.getX() * p3.getY() + p3.getX() * p1.getY()
- p1.getY() * p2.getX() - p2.getY() * p3.getX() - p3.getY() * p1.getX()) / 2.0);
}
Код возвращает неправильную площадь, и она всегда меньше фактической площади.


Подробнее здесь: https://stackoverflow.com/questions/782 ... -a-polygon
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»