/
onequ1z
/
JavaCoursePaperTulSU
Обзор
Документация
Войти
/
onequ1z
/
JavaCoursePaperTulSU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/ru/dmitry/montecarlo/model/Rectangle.java
145 строк
5 KB
tayno
Рефакторинг: добавление секундомера, профилировщика и очистка кода
05 дек 2025, 09:37
05 дек 2025, 09:37
52c8b9a
Код
Авторство
О чём код?
package ru.dmitry.montecarlo.model; /** * Представляет прямоугольник, ориентированный по осям, заданный четырьмя угловыми точками. * Порядок точек a, b, c, d неважен — ширина, высота и contains вычисляются * по минимальным и максимальным координатам. */ public class Rectangle { private final Point a; private final Point b; private final Point c; private final Point d; /** * Создаёт прямоугольник по четырём угловым точкам. * * @param a первая угловая точка * @param b вторая угловая точка * @param c третья угловая точка * @param d четвёртая угловая точка */ public Rectangle(Point a, Point b, Point c, Point d) { this.a = a; this.b = b; this.c = c; this.d = d; } /** * Возвращает первую угловую точку. * * @return точка a */ public Point getA() { return a; } /** * Возвращает вторую угловую точку. * * @return точка b */ public Point getB() { return b; } /** * Возвращает третью угловую точку. * * @return точка c */ public Point getC() { return c; } /** * Возвращает четвёртую угловую точку. * * @return точка d */ public Point getD() { return d; } /** * Вычисляет минимальную и максимальную X-координату среди всех угловых точек. * * @return массив из двух элементов: [minX, maxX] */ private double[] getXBounds() { double minX = Math.min(Math.min(a.getX(), b.getX()), Math.min(c.getX(), d.getX())); double maxX = Math.max(Math.max(a.getX(), b.getX()), Math.max(c.getX(), d.getX())); return new double[]{minX, maxX}; } /** * Вычисляет минимальную и максимальную Y-координату среди всех угловых точек. * * @return массив из двух элементов: [minY, maxY] */ private double[] getYBounds() { double minY = Math.min(Math.min(a.getY(), b.getY()), Math.min(c.getY(), d.getY())); double maxY = Math.max(Math.max(a.getY(), b.getY()), Math.max(c.getY(), d.getY())); return new double[]{minY, maxY}; } /** * Вычисляет ширину прямоугольника как разницу между максимальной и минимальной X-координатой. * * @return ширина прямоугольника */ public double width() { double[] xBounds = getXBounds(); return xBounds[1] - xBounds[0]; } /** * Вычисляет высоту прямоугольника как разницу между максимальной и минимальной Y-координатой. * * @return высота прямоугольника */ public double height() { double[] yBounds = getYBounds(); return yBounds[1] - yBounds[0]; } /** * Вычисляет площадь прямоугольника. * * @return площадь = ширина * высота */ public double area() { return width() * height(); } /** * Проверяет, находится ли точка внутри границ прямоугольника. * * @param p точка для проверки * @return true, если точка находится внутри прямоугольника (включая границы), иначе false */ public boolean contains(Point p) { double[] xBounds = getXBounds(); double[] yBounds = getYBounds(); double minX = xBounds[0]; double maxX = xBounds[1]; double minY = yBounds[0]; double maxY = yBounds[1]; return p.getX() >= minX && p.getX() <= maxX && p.getY() >= minY && p.getY() <= maxY; } /** * Возвращает границы прямоугольника в виде массива [minX, maxX, minY, maxY]. * Используется для генерации случайных точек внутри прямоугольника. * * @return массив границ [minX, maxX, minY, maxY] */ public double[] getBounds() { double[] xBounds = getXBounds(); double[] yBounds = getYBounds(); return new double[]{xBounds[0], xBounds[1], yBounds[0], yBounds[1]}; } }