/
polytech_kolomna
/
aipackaging_math
Обзор
Документация
Войти
/
polytech_kolomna
/
aipackaging_math
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
intersections
src/matrix3.cpp
112 строк
2 KB
Olegh
lower case
28 окт 2025, 21:08
28 окт 2025, 21:08
037a99f
Код
Авторство
О чём код?
#include <cmath> #include <point2d.h> #include <vector2d.h> #include <matrix3.h> // Matrix3::Matrix3(double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33): m11_(m11), m12_(m12), m13_(m13), m21_(m21), m22_(m22), m23_(m23), m31_(m31), m32_(m32), m33_(m33) { } // Matrix3 Matrix3::translate(const Vector2D& offset) { return Matrix3( 1.0, 0.0, offset.x, 0.0, 1.0, offset.y, 0.0, 0.0, 1.0); } // Matrix3 Matrix3::scale(double scaleX, double scaleY) { return Matrix3( scaleX, 0, 0, 0, scaleY, 0, 0, 0, 1 ); } // Matrix3 Matrix3::rotate(double radian) { return Matrix3( std::cos(radian), -std::sin(radian), 0, std::sin(radian), std::cos(radian), 0, 0,0,1 ); } // Matrix3 Matrix3::operator*(const Matrix3& matrix) const { return Matrix3 ( m11_ * matrix.m11_ + m12_ * matrix.m21_ + m13_ * matrix.m31_, m11_ * matrix.m12_ + m12_ * matrix.m22_ + m13_ * matrix.m32_, m11_ * matrix.m13_ + m12_ * matrix.m23_ + m13_ * matrix.m33_, m21_ * matrix.m11_ + m22_ * matrix.m21_ + m23_ * matrix.m31_, m21_ * matrix.m12_ + m22_ * matrix.m22_ + m23_ * matrix.m32_, m21_ * matrix.m13_ + m22_ * matrix.m23_ + m23_ * matrix.m33_, m31_ * matrix.m11_ + m32_ * matrix.m21_ + m33_ * matrix.m31_, m31_ * matrix.m12_ + m32_ * matrix.m22_ + m33_ * matrix.m32_, m31_ * matrix.m13_ + m32_ * matrix.m23_ + m33_ * matrix.m33_ ); } // Matrix3 Matrix3::operator*(double scalar) const { return Matrix3( m11_ * scalar, m12_ * scalar, m13_ * scalar, m21_ * scalar, m22_ * scalar, m23_ * scalar, m31_ * scalar, m32_ * scalar, m33_ * scalar ); } // Matrix3& Matrix3::operator*=(double scalar) { m11_ *= scalar, m12_ *= scalar, m13_ *= scalar, m21_ *= scalar, m22_ *= scalar, m23_ *= scalar, m31_ *= scalar, m32_ *= scalar, m33_ *= scalar; return *this; } // Point2D operator*(const Point2D& point, const Matrix3& matrix) { double x = matrix.m11_ * point.x + matrix.m12_ * point.y + matrix.m13_; double y = matrix.m21_ * point.x + matrix.m22_ * point.y + matrix.m23_; return Point2D{x, y}; } // Vector2D operator*(const Vector2D& vector, const Matrix3& matrix) { double x = matrix.m11_ * vector.x + matrix.m12_ * vector.y; double y = matrix.m21_ * vector.x + matrix.m22_ * vector.y; return Vector2D{ x, y }; }