/
polytech_kolomna
/
aipackaging_math
Обзор
Документация
Войти
/
polytech_kolomna
/
aipackaging_math
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
intersections
src/geometry/circle2d.cpp
74 строки
1 KB
Olegh
lower case
28 окт 2025, 21:08
28 окт 2025, 21:08
037a99f
Код
Авторство
О чём код?
#include <cmath> #include <mathutils.h> #include <matrix3.h> #include <vector2d.h> #include <circle2d.h> // Circle2D::Circle2D(const Point2D& center, double radius): center_(center), radius_(std::abs(radius)) {} // Point2D Circle2D::getPoint(double tRadian) const { // Возвращаем точку на окружности double x = center_.x + radius_ * std::cos(tRadian); double y = center_.y + radius_ * std::sin(tRadian); return Point2D{ x, y }; } // void Circle2D::move(const Vector2D& offset) { transform(Matrix3::translate(offset)); } // void Circle2D::scale(double scaleX, double scaleY) { Point2D center = center_; transform(Matrix3::translate({ -center.x,-center.y })); transform(Matrix3::scale(scaleX, scaleY)); transform(Matrix3::translate({ center.x, center.y })); } // void Circle2D::rotate(double radian) { Point2D center = center_; transform(Matrix3::translate({ -center.x,-center.y })); transform(Matrix3::rotate(radian)); transform(Matrix3::translate({ center.x, center.y })); } // void Circle2D::transform(const Matrix3& transform) { center_ = center_ * transform; radius_ *= transform.m11_; } // bool Circle2D::operator==(const Circle2D& other) { return center_ == other.center_ && doubleEQ(radius_, other.radius_); } // bool Circle2D::operator!=(const Circle2D& other) { return !(*this == other); }