Программисты JAVA общаются здесь
Anonymous
Попытка рекурсивно найти площадь многоугольника
Сообщение
Anonymous » 28 мар 2024, 14:09
Попытка рекурсивного вычисления площади многоугольника с использованием теоремы о шнурках и разбиение его на треугольники.
Код: Выделить всё
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
1711624158
Anonymous
Попытка рекурсивного вычисления площади многоугольника с использованием теоремы о шнурках и разбиение его на треугольники. [code]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); } [/code] Код возвращает неправильную площадь, и она всегда меньше фактической площади. Подробнее здесь: [url]https://stackoverflow.com/questions/78235938/trying-to-recursively-find-the-area-of-a-polygon[/url]