/
polytech_kolomna
/
aipackaging_math
Обзор
Документация
Войти
/
polytech_kolomna
/
aipackaging_math
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
intersections
src/geometry/brokenline2d.cpp
71 строка
1 KB
Olegh
lower case
28 окт 2025, 21:08
28 окт 2025, 21:08
037a99f
Код
Авторство
О чём код?
#include <matrix3.h> #include <brokenline2d.h> // BrokenLine2D::BrokenLine2D(const std::vector<Point2D>& points) : points_(points) { } // const std::vector<Point2D>& BrokenLine2D::getPoints() const { return points_; } // Point2D BrokenLine2D::center() const { double minX = std::numeric_limits<double>::max(); double maxX = std::numeric_limits<double>::lowest(); double minY = std::numeric_limits<double>::max(); double maxY = std::numeric_limits<double>::lowest(); for (const Point2D& point : points_) { minX = std::min(minX, point.x); maxX = std::max(maxX, point.x); minY = std::min(minY, point.y); maxY = std::max(maxY, point.y); } return { {(minX + maxX) / 2}, {(minY + maxY) / 2} }; } // void BrokenLine2D::move(const Vector2D& offset) { transform(Matrix3::translate(offset)); } // void BrokenLine2D::scale(double scaleX, double scaleY) { Point2D centerPoint = center(); transform(Matrix3::translate({ -centerPoint.x,-centerPoint.y })); transform(Matrix3::scale(scaleX, scaleY)); transform(Matrix3::translate({ centerPoint.x, centerPoint.y })); } // void BrokenLine2D::rotate(double radian) { Point2D centerPoint = center(); transform(Matrix3::translate({ -centerPoint.x,-centerPoint.y })); transform(Matrix3::rotate(radian)); transform(Matrix3::translate({ centerPoint.x, centerPoint.y })); } // void BrokenLine2D::transform(const Matrix3& transform) { for (Point2D& point : points_) point = point * transform; }