• Предмет: Информатика
  • Автор: Аноним
  • Вопрос задан 4 месяца назад

Написать класс "многоугольник", содержащий координаты его вершин в порядке обхода против часовой стрелки. Написать способы для вычисления периметра и площади многоугольника.

Ответы

Ответ дал: dominostart123
0

Ответ:

Вот пример реализации класса "Многоугольник" на языке Java:

public class Polygon {

private Point[] vertices;

public Polygon(Point[] vertices) {

this.vertices = vertices;

}

public double perimeter() {

double perimeter = 0;

for (int i = 0; i < vertices.length; i++) {

int j = (i + 1) % vertices.length;

double dx = vertices[j].getX() - vertices[i].getX();

double dy = vertices[j].getY() - vertices[i].getY();

perimeter += Math.sqrt(dx * dx + dy * dy);

}

return perimeter;

}

public double area() {

double area = 0;

for (int i = 0; i < vertices.length; i++) {

int j = (i + 1) % vertices.length;

area += vertices[i].getX() * vertices[j].getY() - vertices[j].getX() * vertices[i].getY();

}

area *= 0.5;

return Math.abs(area);

}

}

В этом примере мы создали класс "Polygon" с конструктором, который принимает массив точек (объектов класса "Point") вершин многоугольника в порядке обхода против часовой стрелки и сохраняет его в приватном атрибуте "vertices".

Метод "perimeter" вычисляет периметр многоугольника, проходя по массиву вершин и вычисляя длину каждой стороны с помощью формулы расстояния между двумя точками в декартовой системе координат. Затем он складывает все длины сторон и возвращает результат.

Метод "area" вычисляет площадь многоугольника с помощью формулы Гаусса для вычисления площади многоугольника на плоскости. Он проходит по массиву вершин и вычисляет площадь треугольников, образованных вершинами и началом координат. Затем он складывает площади треугольников и возвращает результат.

Пример использования класса:

// Создаем многоугольник с вершинами (0,0), (0,1), (1,1), (1,0)

Point[] vertices = new Point[] { new Point(0, 0), new Point(0, 1), new Point(1, 1), new Point(1, 0) };

Polygon polygon = new Polygon(vertices);

// Вычисляем периметр и площадь многоугольника

double perimeter = polygon.perimeter();

double area = polygon.area();

// Выводим результаты

System.out.println("Периметр: " + perimeter);

System.out.println("Площадь: " + area);

Этот код выведет:

Периметр: 4.0

Площадь: 1.0

Вас заинтересует