10#ifndef COMMON_POINT_HPP
11#define COMMON_POINT_HPP
15#include <opencv2/core.hpp>
68 operator cv::Point_<U>()
const;
101 template <
typename U>
104 template <
typename U>
106 template <
typename U>
200 return cv::Point_<U>(
static_cast<U>(x),
static_cast<U>(y));
217 return Point<U>(
static_cast<U>(x),
static_cast<U>(y));
238 return pt1.
x == pt2.
x && pt1.
y == pt2.
y;
259 return pt1.
x != pt2.
x || pt1.
y != pt2.
y;
281 return pt1.
y < pt2.
y;
282 return pt1.
x < pt2.
x;
304 return pt1.
y > pt2.
y;
305 return pt1.
x > pt2.
x;
327 return pt1.
y <= pt2.
y;
328 return pt1.
x <= pt2.
x;
350 return pt1.
y >= pt2.
y;
351 return pt1.
x >= pt2.
x;
370 return {pt1.
x - pt2.
x, pt1.
y - pt2.
y};
389 out <<
"{ x: " <<
pt.
x <<
", y: " <<
pt.
y <<
" }";
411 return std::sqrt(
static_cast<double>((
pt.
x -
x) * (
pt.
x -
x) + (
pt.
y -
y) * (
pt.
y -
y)));
Point< T > & Scale(double factor, bool round=false)
点的坐标缩放操作
friend bool operator>=(const Point< U > &pt1, const Point< U > &pt2)
点类重载大于等于号
Point< T > & LimitX(U start, U end)
限制点的 x 坐标在区间 [min_x, max_x] 范围内
friend std::ostream & operator<<(std::ostream &out, const Point< U > &pt)
点类重载输出流运算符
friend Point< U > operator-(const Point< U > &pt1, const Point< U > &pt2)
点类重载减号运算符
double Cross(const Point< U > &pt) const
计算叉积
friend bool operator<(const Point< U > &pt1, const Point< U > &pt2)
点类重载小于号
double DistanceTo(const Point< U > &pt) const
计算点到点之间的距离
friend bool operator==(const Point< U > &pt1, const Point< U > &pt2)
点类重载等于号
Point< T > & Rotate(double angle, const Point< U > ¢er={0, 0})
点的坐标旋转操作
friend bool operator!=(const Point< U > &pt1, const Point< U > &pt2)
点类重载不等于号
friend bool operator<=(const Point< U > &pt1, const Point< U > &pt2)
点类重载小于等于号
Point(const Point< U > &pt)
点类拷贝构造函数
friend bool operator>(const Point< U > &pt1, const Point< U > &pt2)
点类重载大于号
double Dot(const Point< U > &pt) const
计算点积
Point< T > & Translate(T dx, T dy)
点的坐标平移操作
Point(const cv::Point_< U > &pt)
点类的重载构造函数
Point< T > & LimitY(U start, U end)
限制点的 y 坐标在区间 [min_x, max_x] 范围内
bool operator>=(const Interval &interval1, const Interval &interval2)
区间类重载大于等于号
bool operator!=(const Interval &interval1, const Interval &interval2)
区间类重载不等于号
T operator-(const T &value, const Percent &percent)
百分比类重载减法运算符
Point< float > Point2f
单精度浮点型坐标点类型
Point< int > Point2i
整型坐标点类型
bool operator<(const Interval &interval1, const Interval &interval2)
区间类重载小于号
Point< double > Point2d
双精度浮点型坐标点类型
bool operator==(const Interval &interval1, const Interval &interval2)
区间类重载等于号
bool operator<=(const Interval &interval1, const Interval &interval2)
区间类重载小于等于号
std::ostream & operator<<(std::ostream &out, const Interval &interval)
区间类重载输出流运算符
bool operator>(const Interval &interval1, const Interval &interval2)
区间类重载大于号