Geometry Structure and Algorithm.#
Geometry Structure#
-
class IGeometry#
所有平面几何类型的公共抽象基类
Subclassed by aidi::geometry::Arc2f, aidi::geometry::Arc2i, aidi::geometry::Circle2f, aidi::geometry::Circle2i, aidi::geometry::Line2f, aidi::geometry::Line2i, aidi::geometry::LineString2f, aidi::geometry::LineString2i, aidi::geometry::MultiPoint2f, aidi::geometry::MultiPoint2i, aidi::geometry::MultiPolygon2f, aidi::geometry::MultiPolygon2i, aidi::geometry::Point2f, aidi::geometry::Point2i, aidi::geometry::Polygon2f, aidi::geometry::Polygon2i, aidi::geometry::Radian, aidi::geometry::Ray2f, aidi::geometry::Ray2i, aidi::geometry::Rect2f, aidi::geometry::Rect2i, aidi::geometry::Ring2f, aidi::geometry::Ring2i, aidi::geometry::RotateRect2f, aidi::geometry::RotateRect2i, aidi::geometry::Segment2f, aidi::geometry::Segment2i, aidi::geometry::Size2f, aidi::geometry::Size2i, aidi::geometry::Vector2f, aidi::geometry::Vector2i
Public Types
-
enum GeometryType#
Geometry enum value.
Values:
-
enumerator kRadian = 0#
-
enumerator kSize2f = 2#
-
enumerator kSize2i = 3#
-
enumerator kPoint2f = 4#
-
enumerator kPoint2i = 5#
-
enumerator kVector2f = 6#
-
enumerator kVector2i = 7#
-
enumerator kSegment2f = 8#
-
enumerator kSegment2i = 9#
-
enumerator kLine2f = 10#
-
enumerator kLine2i = 11#
-
enumerator kRay2f = 12#
-
enumerator kRay2i = 13#
-
enumerator kRing2f = 14#
-
enumerator kRing2i = 15#
-
enumerator kRect2f = 16#
-
enumerator kRect2i = 17#
-
enumerator kPolygon2f = 18#
-
enumerator kPolygon2i = 19#
-
enumerator kRotateRect2f = 20#
-
enumerator kRotateRect2i = 21#
-
enumerator kArc2f = 22#
-
enumerator kArc2i = 23#
-
enumerator kCircle2f = 24#
-
enumerator kCircle2i = 25#
-
enumerator kLineString2f = 26#
-
enumerator kLineString2i = 27#
-
enumerator kMultiPoint2f = 28#
-
enumerator kMultiPoint2i = 29#
-
enumerator kMultiPolygon2f = 30#
-
enumerator kMultiPolygon2i = 31#
-
enumerator kRadian = 0#
Public Functions
-
virtual GeometryType type() const = 0#
几何类型.
- Returns:
GeometryType
-
const char *type_name() const#
获取几何类型的名称
- Returns:
const char*
-
enum GeometryType#
-
struct Radian : public aidi::geometry::IGeometry#
Can easily get the degree of the radian conversion.
-
struct Vector2f : public aidi::geometry::IGeometry#
浮点型向量
表示从原点(0,0)出发的一个具有大小和方向的浮点型向量.
Public Functions
-
Vector2f() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float length() const#
向量的模
- Returns:
float 向量的模长
-
Vector2f() = default#
-
struct Vector2i : public aidi::geometry::IGeometry#
整型向量
表示从原点(0,0)出发的一个具有大小和方向的整型向量.
Public Functions
-
Vector2i() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float length() const#
向量的模
- Returns:
float 向量的模长
-
Vector2i() = default#
-
struct Point2f : public aidi::geometry::IGeometry#
浮点型点
Public Types
-
using Elem = float#
Element type.
Public Functions
-
Point2f() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
using Elem = float#
-
struct Point2i : public aidi::geometry::IGeometry#
整型点
Public Types
-
using Elem = int32_t#
Element type.
Public Functions
-
Point2i() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
using Elem = int32_t#
-
struct Segment2f : public std::pair<Point2f, Point2f>, public aidi::geometry::IGeometry#
浮点型线段
Public Types
-
struct Segment2i : public std::pair<Point2i, Point2i>, public aidi::geometry::IGeometry#
整型线段
Public Types
-
struct Line2f : public aidi::geometry::IGeometry#
浮点型直线
Public Types
Public Functions
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
virtual IGeometry::GeometryType type() const override#
-
struct Line2i : public aidi::geometry::IGeometry#
整型直线
Public Types
Public Functions
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
virtual IGeometry::GeometryType type() const override#
-
struct Ray2f : public aidi::geometry::IGeometry#
浮点型射线
Public Types
Public Functions
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
virtual IGeometry::GeometryType type() const override#
-
struct Ray2i : public aidi::geometry::IGeometry#
整型射线
Public Types
Public Functions
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
virtual IGeometry::GeometryType type() const override#
-
struct LineString2f : public std::vector<Point2f>, public aidi::geometry::IGeometry#
浮点型线
一条线被认为是一些点的集合(std::vector),且按一定顺序连接相邻两点形成折线段.
Note
线可以是自交的,但这对于某些算法会产生错误的影响.可以通过 is_simple() 检测是否自交等问题.
Public Functions
-
LineString2f() = default#
Default constructor,creating an empty LineString.
-
LineString2f(const std::initializer_list<Point> &rhs)#
Constructor taking std::initializer_list,filling the LineString.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float length() const#
折线段长度和
-
LineString2f() = default#
-
struct LineString2i : public std::vector<Point2i>, public aidi::geometry::IGeometry#
整型线
一条线被认为是一些点的集合(std::vector),且按一定顺序形成折线段.
Note
线可以是自交的,但这对于某些算法会产生错误的影响.可以通过 is_simple() 检测是否自交等问题.
Public Functions
-
LineString2i() = default#
Default constructor,creating an empty LineString.
-
LineString2i(const std::initializer_list<Point> &rhs)#
Constructor taking std::initializer_list,filling the LineString.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float length() const#
折线段长度和
-
LineString2i() = default#
-
struct Ring2f : public std::vector<Point2f>, public aidi::geometry::IGeometry#
浮点型环
环是一条不应自交的闭合线,即不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述环上的点,开包(第一点与最后一点不同).
Public Types
-
using LineString = LineString2f#
环对应的同类型线 convert()
-
using Rect = Rect2f#
环对应的同类型矩形 envelope()
-
using Ring = Ring2f#
用于统一与polygon的部分算法接口 convex_hull()
Public Functions
-
Ring2f() = default#
Default constructor,creating an empty Ring.
-
Ring2f(const std::initializer_list<Point> &rhs)#
Constructor taking std::initializer_list,filling the Ring.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float area() const#
环面积
-
float perimeter() const#
环周长
-
using LineString = LineString2f#
-
struct Ring2i : public std::vector<Point2i>, public aidi::geometry::IGeometry#
整型环
环是一条不应自交的闭合线,即不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述环上的点,开包(第一点与最后一点不同).
Public Types
-
using LineString = LineString2i#
环对应的同类型线 convert()
-
using Rect = Rect2i#
环对应的同类型矩形 envelope()
-
using Ring = Ring2i#
用于统一与polygon的部分算法接口 convex_hull()
Public Functions
-
Ring2i() = default#
Default constructor,creating an empty Ring.
-
Ring2i(const std::initializer_list<Point> &rhs)#
Constructor taking std::initializer_list,filling the Ring.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float area() const#
环面积
-
float perimeter() const#
环周长
-
using LineString = LineString2i#
-
struct Size2f : public aidi::geometry::IGeometry#
Specify rect or image size.
Public Types
-
using Elem = float#
Element type.
-
using Elem = float#
-
struct Size2i : public aidi::geometry::IGeometry#
Specify rect or image size.
Public Types
-
using Elem = uint32_t#
Element type.
-
using Elem = uint32_t#
-
struct Rect2f : public aidi::geometry::IGeometry#
浮点型矩形
有一个角为直角的平行四边形,与坐标轴平行.
Public Types
-
using LineString = LineString2f#
矩形边对应类型的线段
Public Functions
-
Rect2f() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
Point xmin_ymin() const#
x最小,y最小顶点,同 min_corner.
-
using LineString = LineString2f#
-
struct Rect2i : public aidi::geometry::IGeometry#
整型矩形
有一个角为直角的平行四边形,与坐标轴平行.
Public Types
-
using LineString = LineString2i#
矩形边对应类型的线段
Public Functions
-
Rect2i() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
Point xmin_ymin() const#
x最小,y最小顶点,同 min_corner.
-
using LineString = LineString2i#
-
struct Polygon2f : public aidi::geometry::IGeometry#
浮点型多边形
多边形由一个外环和零个或多个内环组成,内环方向与外环相反,形成带孔或不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述外环上的点,开包(第一点与最后一点不同).
Public Types
-
using Rect = Rect2f#
多边形对应的同类型矩形 envelope()
Public Functions
-
Polygon2f() = default#
Default constructor,creating an empty Polygon.
-
Polygon2f(const std::initializer_list<Ring> &rhs)#
Constructor taking std::initializer_list,filling the Polygon.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float area() const#
多边形面积
Warning
如果内环描述不正确,如与外环相同方向,则计算面积时会重复计算内环面积. 可以通过 correct() 来修正几何图形,以得到正确的期望结果. 内环相互相切或与外环相切时仍可以得到正确的多边形面积.
-
float perimeter() const#
多边形周长
Warning
如果内环互相相切,或与外环相切,则计算周长时会重复计算相切边长.
-
using Rect = Rect2f#
-
struct Polygon2i : public aidi::geometry::IGeometry#
整型多边形
多边形由一个外环和零个或多个内环组成,内环方向与外环相反,形成带孔或不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述外环上的点,开包(第一点与最后一点不同).
Public Types
-
using Rect = Rect2i#
多边形对应的同类型矩形 envelope()
Public Functions
-
Polygon2i() = default#
Default constructor,creating an empty Polygon.
-
Polygon2i(const std::initializer_list<Ring> &rhs)#
Constructor taking std::initializer_list,filling the Polygon.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
float area() const#
多边形面积
Warning
如果内环描述不正确,如与外环相同方向,则计算面积时会重复计算内环面积. 可以通过 correct() 来修正几何图形,以得到正确的期望结果. 内环相互相切或与外环相切时仍可以得到正确的多边形面积.
-
float perimeter() const#
多边形周长
Warning
如果内环互相相切,或与外环相切,则计算周长时会重复计算相切边长.
-
using Rect = Rect2i#
-
struct RotateRect2f : public aidi::geometry::IGeometry#
浮点型旋转矩形
有一个角为直角的平行四边形,不一定与坐标轴平行.
Public Types
-
using LineString = LineString2f#
旋转矩形边对应类型的线段
-
using Rect = Rect2f#
旋转矩形对应的同类型矩形 envelope()
Public Functions
-
RotateRect2f() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
Point ymin() const#
y最小点,同 min_corner.
-
float area() const#
旋转矩形面积
-
float perimeter() const#
旋转矩形周长
-
using LineString = LineString2f#
-
struct RotateRect2i : public aidi::geometry::IGeometry#
整型旋转矩形
有一个角为直角的平行四边形,不一定与坐标轴平行.
Public Types
-
using LineString = LineString2i#
旋转矩形边对应类型的线段
-
using Rect = Rect2i#
旋转矩形对应的同类型矩形 envelope()
Public Functions
-
RotateRect2i() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
Point ymin() const#
y最小点,同 min_corner.
-
float area() const#
旋转矩形面积
-
float perimeter() const#
旋转矩形周长
-
using LineString = LineString2i#
-
struct Arc2f : public aidi::geometry::IGeometry#
浮点型弧
Public Functions
-
Arc2f() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
Arc2f() = default#
-
struct Arc2i : public aidi::geometry::IGeometry#
整型弧
Public Functions
-
Arc2i() = default#
Default constructor,no initialization.
-
virtual IGeometry::GeometryType type() const override#
几何类型.
- Returns:
GeometryType
-
Arc2i() = default#
-
struct MultiPoint2f : public std::vector<Point2f>, public aidi::geometry::IGeometry#
浮点型点集
Warning
算法实现中不会清空原有数据,导致结果产生错误.
-
struct MultiPoint2i : public std::vector<Point2i>, public aidi::geometry::IGeometry#
整型点集
Warning
算法实现中不会清空原有数据,导致结果产生错误.
-
struct MultiPolygon2f : public std::vector<Polygon2f>, public aidi::geometry::IGeometry#
浮点型多多边形
Warning
算法实现中不会清空原有数据,导致结果产生错误.
-
struct MultiPolygon2i : public std::vector<Polygon2i>, public aidi::geometry::IGeometry#
整型多多边形
Warning
算法实现中不会清空原有数据,导致结果产生错误.
-
class Matrix3f#
3x3 float matrix.
Transformation matrix.
Public Functions
-
explicit Matrix3f(float diag = 1)#
Construct a 3*3 float matrix.
The value of the principal diagonal is diag, the rest are 0.
- Parameters:
diag – The principal diagonal value. If rhs is 1(As default), it will construct a identity matrix.
-
Matrix3f(float mat_0_0, float mat_0_1, float mat_0_2, float mat_1_0, float mat_1_1, float mat_1_2, float mat_2_0, float mat_2_1, float mat_2_2)#
Construct a 3*3 float matrix.
Read parameters in first row the col order.
-
Matrix3f(const Matrix3f &rhs)#
Deep copy constructor.
It will not share the same references as the source object.
- Parameters:
rhs – other Matrix3f.
-
Matrix3f operator*(const Matrix3f &rhs) const#
Matrix multiplication.
A * B = C.
- Parameters:
rhs – B matrix.
- Returns:
Matrix3f C matrix.
-
float &at(size_t row, size_t col)#
Return a reference to the specified array element.
if row or col out of range, an aidi::excepts::InvalidArgument will be thrown.
- Parameters:
row – Index along the dimension 1.
col – Index along the dimension 2.
- Throws:
aidi::excepts::InvalidArgument – if row or col out of range.
- Returns:
NO_DISCARD float& array element.
-
float at(size_t row, size_t col) const#
Return the specified array element.
if row or col out of range, an aidi::excepts::InvalidArgument will be thrown.
- Parameters:
row – Index along the dimension 1.
col – Index along the dimension 2.
- Throws:
aidi::excepts::InvalidArgument – if row or col out of range.
- Returns:
NO_DISCARD float array element.
-
explicit Matrix3f(float diag = 1)#
-
enum aidi::geometry::GeoIsSampleFailType#
The enumeration GeoIsSampleFailType enumerates the possible reasons for which a geometry may be found as not simple or invalid by the is_simple() and is_valid() algorithms.
Values:
-
enumerator kNoFailure = 0#
The geometry is simple/valid.
-
enumerator kEmpty = 1#
The geometry is empty.
-
enumerator kDuplicatePoints = 2#
The geometry has (consecutive) duplicate points.
-
enumerator kSpikes = 4#
The geometry contains spikes.
-
enumerator kSelfIntersections = 8#
The geometry has self-intersections.
-
enumerator kPolygonOuterFailure = 16#
The exterior ring of geometry is not simple/valid.
-
enumerator kPolygonInnersFailure = 32#
The interior rings of geometry is not simple/valid.
-
enumerator kFewPoints = 64#
The geometry has a very small number of points.
-
enumerator kWrongTopologicalDimension = 128#
The topological dimension of the geometry is smaller than its dimension.
-
enumerator kInvalidCoordinate = 256#
The geometry has at least one point with an invalid coordinate.
-
enumerator kWrongOrientation = 512#
The actual orientation of the geometry is different from the one defined.
-
enumerator kInteriorRingsOutside = 1024#
The geometry contains interior rings that lie outside the exterior ring.
-
enumerator kNestedInteriorRings = 2048#
The geometry has nested interior rings.
-
enumerator kNoFailure = 0#
Geometry algorithms#
- group append
几何图形的数据扩展
- param lhs:
[inout] 可扩展的几何图形
- param rhs:
[in] 点集或单点
LinearOrAreal
MultiPointOrPoint
LineString
点集或单点
Ring
点集或单点
Polygon
体现在外环和内环上
MultiPoint
点集或单点
Functions
-
void append(aidi::geometry::LineString2f &lhs, const aidi::geometry::MultiPoint2f &rhs)#
-
void append(aidi::geometry::MultiPoint2f &lhs, const aidi::geometry::MultiPoint2f &rhs)#
-
void append(aidi::geometry::LineString2i &lhs, const aidi::geometry::MultiPoint2i &rhs)#
-
void append(aidi::geometry::MultiPoint2i &lhs, const aidi::geometry::MultiPoint2i &rhs)#
- group area
多边形的面积
整型矩形面积
Warning
多边形的内环方向以及数据是否遵循约定方向等会对结果产生影响.
- param rhs:
多边形,矩形以及圆
Areal
Ring
Polygon
Rect
RotateRect
Circle
MultiPolygon
- param rhs:
- return:
NO_DISCARD float 浮点型面积
- return:
NO_DISCARD int32_t 整型面积
Functions
-
float area(const aidi::geometry::RotateRect2f &rhs)#
-
float area(const aidi::geometry::MultiPolygon2f &rhs)#
-
float area(const aidi::geometry::RotateRect2i &rhs)#
-
float area(const aidi::geometry::MultiPolygon2i &rhs)#
- group equal_operator
向量和点之间的数值比较
- param lhs:
点对应的同类型向量
- param rhs:
任意类型的点
- return:
true 点与向量数值上相等.
- return:
false 点与向量数值上不等.
- group addition_operator
向量+点=点
整型点+浮点型向量=浮点型点, 浮点型向量+整型点=浮点型点
- param lhs:
点对应的同类型向量
- param rhs:
任意类型的点
- param lhs:
整型点/浮点型向量
- param rhs:
浮点型向量/整型点
- return:
Point 结果不改变点的类型
- return:
Point2f 浮点型点
Functions
-
aidi::geometry::Point2f operator+(const aidi::geometry::Vector2f &lhs, const aidi::geometry::Point2f &rhs)#
-
aidi::geometry::Point2i operator+(const aidi::geometry::Vector2i &lhs, const aidi::geometry::Point2i &rhs)#
- group subtraction_operator
点-点=向量
浮点型-整形点=浮点型向量
整型点-浮点型点=浮点型向量
整型点-浮点型向量=浮点型点
- param lhs:
被减点
- param rhs:
减点
- param lhs:
整型点
- param rhs:
浮点型向量
- param lhs:
整型点
- param rhs:
浮点型点
- param lhs:
浮点型点
- param rhs:
整形点
- return:
Point::Vector 点对应的同类型向量
- return:
Point2f 浮点型点
- return:
Vector2f 浮点型向量
- return:
Vector2f 浮点型向量
Functions
-
aidi::geometry::Vector2f operator-(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
-
aidi::geometry::Vector2i operator-(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
-
aidi::geometry::Point2f operator-(const aidi::geometry::Point2i &lhs, const aidi::geometry::Vector2f &rhs)#
- group multiplication_operator
点和向量的放大
整型向量*浮点数=浮点型向量,浮点数*整型向量=浮点型向量
整型点*浮点数=浮点型点,浮点数*整型点=浮点型点
- param lhs:
点或向量的Elem
- param rhs:
任意类型的点或向量
- param lhs:
整形点/浮点数
- param rhs:
浮点数/整形点
- param lhs:
整型向量/浮点数
- param rhs:
浮点数/整型向量
- return:
结果不改变点或向量的类型
- return:
Point2f 浮点型点
- return:
Vector2f 浮点型向量
Functions
- group add_point
将第一个点的值加上第二个
- param lhs:
被改变的任意类型的第一个点
- param rhs:
同类型的第二个点不发生变化
- group add_value
将一个点的坐标加上相同值
- param lhs:
被改变的任意类型的点/点对应的同类型值
- param rhs:
点对应的同类型值/被改变的任意类型的点
- group cross_product
向量积,叉积
- param lhs:
任意类型的点
- param rhs:
同类型的点
- return:
NO_DISCARD 点对应的同类型值
- group divide_point
将第一个点除以第二个点
Note
注意int和float不同产生的结果.
- param lhs:
被改变的任意类型的第一个点
- param rhs:
同类型的第二个点不发生变化
- group divide_value
将一个点的坐标除以点对应的同类型的值
- param lhs:
被改变的任意类型的点
- param rhs:
点对应的同类型值
- group dot_product
数量积,点积
- param lhs:
任意类型的点或向量
- param rhs:
同类型的点或向量
- return:
NO_DISCARD 点或向量对应的同类型的值
Functions
- group multiply_point
将第一个点乘以第二个点
- param lhs:
被改变的任意类型的第一个点
- param rhs:
同类型的第二个点不发生变化
- group multiply_value
将一个点的坐标乘以相同值
- param lhs:
被改变的任意类型的点
- param rhs:
点对应的同类型值
- group subtract_point
将第一个点减去第二个点
- param lhs:
被改变的任意类型的第一个点
- param rhs:
同类型的第二个点不发生改变
- group subtract_value
将一个点的坐标减去相同值
- param lhs:
被改变的任意类型的点
- param rhs:
点对应的同类型值
- group azimuth
线段的方位角
向量的方位角
- param lhs:
任意类型的点或向量
- param rhs:
同类型的点或向量
- param rhs:
任意类型的向量
- return:
NO_DISCARD 两点形成线段从x轴正方向向y轴正方向旋转的弧度(±𝝅)
- return:
NO_DISCARD 原点(0,0)到向量所形成线段的方位角弧度(±𝝅)
Functions
-
aidi::geometry::Radian azimuth(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
-
aidi::geometry::Radian azimuth(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
-
aidi::geometry::Radian azimuth(const aidi::geometry::Vector2f &lhs, const aidi::geometry::Vector2f &rhs)#
- group center
多边形中心,即外接平行矩形的中心
整型圆的中心
- param rhs:
多边形,矩形和圆.
Areal
Ring
Polygon
Rect
RotateRect
Circle
- param rhs:
整型圆
- return:
NO_DISCARD 浮点型点
- return:
NO_DISCARD 整型点,即圆心.
Functions
- group centroid
多边形质心
整型圆质心
- param rhs:
多边形,矩形和圆
Areal
Ring
Polygon
Rect
RotateRect
Circle
- param rhs:
整型圆
- return:
NO_DISCARD 浮点型点
- return:
NO_DISCARD 整形点,即圆心
Functions
- group clear
清空几何图形数据
- param rhs:
线或多边形
LinearOrAreal
LineString
Ring
Polygon
MultiPoint
MultiPolygon
Functions
-
void clear(aidi::geometry::LineString2f &rhs)#
-
void clear(aidi::geometry::MultiPoint2f &rhs)#
-
void clear(aidi::geometry::MultiPolygon2f &rhs)#
-
void clear(aidi::geometry::LineString2i &rhs)#
-
void clear(aidi::geometry::MultiPoint2i &rhs)#
-
void clear(aidi::geometry::MultiPolygon2i &rhs)#
- group convert
几何图形之间的转换
- param lhs:
几何图形
- param rhs:
同类型的几何图形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
×
×
×
×
×
×
×
√
LineString
×
√
√
√
×
×
×
×
×
Ring
×
√
√
√
×
×
×
×
×
Polygon
×
×
×
√
×
×
×
×
×
Rect
×
×
√
√
√
×
×
×
×
RotateRect
×
×
√
√
×
×
×
×
×
Arc
×
×
×
×
×
×
×
√
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
Functions
-
void convert(const aidi::geometry::LineString2f &lhs, aidi::geometry::LineString2f &rhs)#
-
void convert(const aidi::geometry::LineString2i &lhs, aidi::geometry::LineString2i &rhs)#
- group convex_hull
多边形的凸包
Note
新的凸包将以x最小的点为起点,从x轴正方向向y轴正方向顺序排列.
- param lhs:
多边形
- param rhs:
Areal
Ring
Polygon
Functions
- group return_convex_hull
多边形的凸包
See also
Functions
- group correct
修正多边形的约定顺序和约定开闭包形式
- param rhs:
多边形
Areal
Ring
Polygon
- group return_correct
修正多边形的约定顺序和约定开闭包形式
See also
Functions
- group covered_by
第一个几何图形是否被第二个几何图形覆盖
The difference with the within algorithm is that this algorithm checks the border by default.
See also
Note
边界有交集仍然会被认为是覆盖.
- param lhs:
几何图形
- param rhs:
同类型的几何图形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
√
√
√
√
√
×
√
×
LineString
×
√
√
√
√
√
×
×
×
Ring
×
×
√
√
√
√
×
×
×
Polygon
×
×
√
√
√
√
×
×
×
Rect
×
×
√
√
√
√
×
×
×
RotateRect
×
×
√
√
√
√
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
√
×
Vector
×
×
×
×
×
×
×
×
×
- return:
NO_DISCARD bool
Functions
-
bool covered_by(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool covered_by(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool covered_by(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool covered_by(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
-
bool covered_by(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool covered_by(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group crosses
第一个线是否穿过第二个几何图形
See also
Note
如果没能穿过边界,则会被视为覆盖.
- param lhs:
线
- param rhs:
几何图形
Geometry
Point
LineString
Ring
Polygon
Rect
RotateRect
Circle
- return:
NO_DISCARD bool
Functions
-
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group difference
多边形之间的差集
Note
算法并不会清空MultiPolygon中已有的数据,而是将结果添加进MultiPolygon.
Warning
对于整型几何图形的差集结果存在交点为浮点型时,会产生一定的问题.
- param lhs:
多边形,矩形
- param rhs:
多边形,矩形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
×
×
×
×
×
×
×
×
×
LineString
×
×
×
×
×
×
×
×
×
Ring
×
×
√
√
√
√
×
×
×
Polygon
×
×
√
√
√
√
×
×
×
Rect
×
×
√
√
√
√
×
×
×
RotateRect
×
×
√
√
√
√
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
- param result:
多多边形,多边形之间的差集.
Functions
-
void difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void difference(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void difference(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
- group discrete_frechet_distance
线之间的frechet距离
几何图形之间最大的最短距离,用于描述相似度.
- param lhs:
线
- param rhs:
同类型的线
- return:
NO_DISCARD float
Functions
-
float discrete_frechet_distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
float discrete_frechet_distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
- group disjoint
几何图形是否相离
- param lhs:
几何图形
- param rhs:
同类型的几何图形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
√
√
√
√
√
×
√
×
LineString
√
√
√
√
√
√
×
√
×
Ring
√
√
√
√
√
√
×
√
×
Polygon
√
√
√
√
√
√
×
√
×
Rect
√
√
√
√
√
√
×
√
×
RotateRect
√
√
√
√
√
√
×
√
×
Arc
×
×
×
×
×
×
×
×
×
Circle
√
√
√
√
√
√
×
√
×
Vector
×
×
×
×
×
×
×
×
×
- return:
NO_DISCARD bool
Functions
-
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
-
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group distance
几何图形之间的距离
- param lhs:
几何图形
- param rhs:
同类型的几何图形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
√
√
√
√
√
×
√
×
LineString
√
√
√
√
√
√
×
√
×
Ring
√
√
√
√
√
√
×
√
×
Polygon
√
√
√
√
√
√
×
√
×
Rect
√
√
√
√
√
√
×
√
×
RotateRect
√
√
√
√
√
√
×
√
×
Arc
×
×
×
×
×
×
×
×
×
Circle
√
√
√
√
√
√
×
√
×
Vector
×
×
×
×
×
×
×
×
×
- return:
NO_DISCARD float
Functions
-
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
-
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group envelope
最小外接矩形
- param lhs:
线或多边形
- param rhs:
线或多边形的最小外接矩形
LinearOrAreal
LineString
Ring
Polygon
RotateRect
Functions
- group return_envelope
最小外接矩形
See also
Functions
- group equals
几何图形是否相等
- param lhs:
几何图形
- param rhs:
同类型的几何图形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
×
×
×
×
×
×
×
√
LineString
×
√
×
×
×
×
×
×
×
Ring
×
×
√
√
√
√
×
×
×
Polygon
×
×
√
√
√
√
×
×
×
Rect
×
×
√
√
√
√
×
×
×
RotateRect
×
×
√
√
√
√
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
√
×
Vector
√
×
×
×
×
×
×
×
√
- return:
NO_DISCARD bool
Functions
-
bool equals(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool equals(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool equals(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool equals(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group intersection
几何图形之间的交集
Warning
对于整型几何图形的交集结果存在交点为浮点型时,会产生一定的问题.
- param lhs:
[in] 几何图形
- param rhs:
[in] 同类型的几何图形
- param result:
[out] The intersection of geo1 and geo2
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
√
√
√
√
√
×
×
×
LineString
√
√
√
√
×
√
×
×
×
Ring
√
√
√
√
×
√
×
×
×
Polygon
√
√
√
√
×
√
×
×
×
Rect
×
×
×
×
×
×
×
×
×
RotateRect
×
×
×
×
×
×
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
Functions
-
void intersection(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Point2f &lhs, const aidi::geometry::LineString2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Point2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Point2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Point2f &lhs, const aidi::geometry::Rect2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Point2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Point2i &lhs, const aidi::geometry::LineString2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Point2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Point2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Point2i &lhs, const aidi::geometry::Rect2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Point2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Point2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Point2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Point2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Ring2f &lhs, const aidi::geometry::LineString2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Point2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Ring2i &lhs, const aidi::geometry::LineString2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Point2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::LineString2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Point2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::LineString2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Point2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs, aidi::geometry::MultiPoint2f &result)#
-
void intersection(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void intersection(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Point2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs, aidi::geometry::MultiPoint2i &result)#
-
void intersection(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void intersection(const aidi::geometry::Line2f &lhs, const aidi::geometry::Line2f &rhs, aidi::geometry::Point2f &result)#
- group intersects
几何图形是否相交(存在至少一个交点)
- param lhs:
几何图形
- param rhs:
同类型的几何图形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
√
√
√
√
√
×
√
×
LineString
√
√
√
√
√
√
×
√
×
Ring
√
√
√
√
√
√
×
√
×
Polygon
√
√
√
√
√
√
×
√
×
Rect
√
√
√
√
√
√
×
√
×
RotateRect
√
√
√
√
√
√
×
√
×
Arc
×
×
×
×
×
×
×
×
×
Circle
√
√
√
√
√
√
×
√
×
Vector
×
×
×
×
×
×
×
×
×
Functions
-
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
-
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group is_empty
判断几何图形是否为空
- param rhs:
线或多边形
LinearOrAreal
LineString
Ring
Polygon
MultiPoint
MultiPolygon
Functions
-
bool is_empty(const aidi::geometry::LineString2f &rhs)#
-
bool is_empty(const aidi::geometry::MultiPoint2f &rhs)#
-
bool is_empty(const aidi::geometry::MultiPolygon2f &rhs)#
-
bool is_empty(const aidi::geometry::LineString2i &rhs)#
-
bool is_empty(const aidi::geometry::MultiPoint2i &rhs)#
-
bool is_empty(const aidi::geometry::MultiPolygon2i &rhs)#
- group is_simple
判断几何图形是否是简单几何图形
- param rhs:
线或多边形
LinearOrAreal
LineString
Ring
Polygon
- return:
Linear:非空,没有重复点,不自交,没有尖峰.
- return:
Areal:非空,没有重复点.
Functions
-
bool is_simple(const aidi::geometry::LineString2f &rhs)#
-
bool is_simple(const aidi::geometry::LineString2i &rhs)#
- group return_is_simple
判断几何图形是否是简单几何图形
See also
See also
- param rhs:
线或多边形
- return:
NO_DISCARD GeoIsSampleFailType 几何图形不为简单几何图形的错误信息
Functions
-
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::LineString2f &rhs)#
-
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::LineString2i &rhs)#
- group is_valid
判断几何图形数据是否有效
- param rhs:
线或多边形
LinearOrAreal
LineString
Ring
Polygon
- return:
Linear:没有无效点,至少有两个点,满足拓扑维数(存在至少两个不相同点),可以有尖峰.
- return:
Ring:没有无效点,至少有三个点(闭包四个点),满足拓扑维数(存在至少三个不相同点), 可以有重复点,没有尖峰,没有自交,满足数据顺序定义.
- return:
Polygon:外环内环都是有效的,多边形不自交,内环在外环内,内环不存在嵌套.
Functions
-
bool is_valid(const aidi::geometry::LineString2f &rhs)#
-
bool is_valid(const aidi::geometry::LineString2i &rhs)#
- group return_is_valid
判断几何图形数据是否有效
See also
See also
failure_type
- param rhs:
线或多边形
- return:
NO_DISCARD int32_t 几何图形数据失效的错误信息
Functions
-
int32_t return_is_valid(const aidi::geometry::LineString2f &rhs)#
-
int32_t return_is_valid(const aidi::geometry::LineString2i &rhs)#
- group length
几何图形的长度
- param rhs:
线或向量
LinearOrVector
LineString
Vector
- return:
NO_DISCARD float
- group line_interpolate
线上的线性插值
Warning
对于整型线的插值结果存在浮点型时,会产生一定的问题.
- param lhs:
线
- param rhs:
点集或单点
- param result:
单点则为起点起插值的第一个点,点集则是全部点.
Functions
-
void line_interpolate(const aidi::geometry::LineString2f &lhs, const float &rhs, aidi::geometry::Point2f &result)#
-
void line_interpolate(const aidi::geometry::LineString2i &lhs, const float &rhs, aidi::geometry::Point2i &result)#
-
void line_interpolate(const aidi::geometry::LineString2f &lhs, const float &rhs, aidi::geometry::MultiPoint2f &result)#
-
void line_interpolate(const aidi::geometry::LineString2i &lhs, const float &rhs, aidi::geometry::MultiPoint2i &result)#
- group min_area_rect
最小面积外接矩形
- param lhs:
多边形
- param rhs:
同类型的旋转矩形
Areal
Ring
Polygon
- group return_min_area_rect
最小面积外接矩形
See also
- group overlaps
多边形是否有重叠部分
- param lhs:
多边形
- param rhs:
同类型的多边形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
×
×
×
×
×
×
×
×
×
LineString
×
×
×
×
×
×
×
×
×
Ring
×
×
√
√
×
×
×
×
×
Polygon
×
×
√
√
×
×
×
×
×
Rect
×
×
×
×
√
×
×
×
×
RotateRect
×
×
×
×
×
×
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
- return:
NO_DISCARD bool
Functions
- group perimeter
几何图形的周长
整型矩形的周长
- param rhs:
多边形的周长
Areal
Ring
Polygon
Rect
RotateRect
Circle
- param rhs:
整型矩形
- return:
NO_DISCARD int32_t 整型周长
Functions
-
float perimeter(const aidi::geometry::RotateRect2f &rhs)#
-
float perimeter(const aidi::geometry::RotateRect2i &rhs)#
- group reverse
翻转几何图形数据顺序
Note
The reverse of a (multi)polygon or ring might make a valid geometry invalid because the (counter)clockwise orientation reverses.
- param rhs:
线或多边形
LinearOrAreal
LineString
Ring
Polygon
- group return_reverse
翻转几何图形数据顺序
See also
Functions
-
aidi::geometry::LineString2f return_reverse(const aidi::geometry::LineString2f &rhs)#
-
aidi::geometry::LineString2i return_reverse(const aidi::geometry::LineString2i &rhs)#
-
aidi::geometry::LineString2f return_reverse(const aidi::geometry::LineString2f &rhs)#
- group simplify
简化几何图形
采用Douglas-Peucker算法进行多边形逼近,小于阈值则被删除.
Warning
结果会被强制改为闭包.
- param lhs:
线或多边形
- param rhs:
阈值
Functions
-
void simplify(aidi::geometry::LineString2f &lhs, const float &rhs)#
-
void simplify(aidi::geometry::LineString2i &lhs, const float &rhs)#
- group return_simplify
简化几何图形
See also
Functions
-
aidi::geometry::LineString2f return_simplify(const aidi::geometry::LineString2f &lhs, const float &rhs)#
-
aidi::geometry::LineString2i return_simplify(const aidi::geometry::LineString2i &lhs, const float &rhs)#
-
aidi::geometry::LineString2f return_simplify(const aidi::geometry::LineString2f &lhs, const float &rhs)#
- group sym_difference
几何图形之间的对称差
Warning
对于整型几何图形的对称差结果存在交点为浮点型时,会产生一定的问题.
Warning
几何结构不遵守约定顺序可能会产生一定的问题.
- param lhs:
多边形
- param rhs:
同类型的多边形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
×
×
×
×
×
×
×
×
×
LineString
×
×
×
×
×
×
×
×
×
Ring
×
×
√
√
×
×
×
×
×
Polygon
×
×
√
√
×
×
×
×
×
Rect
×
×
×
×
×
×
×
×
×
RotateRect
×
×
×
×
×
×
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
- param result:
同类型的多多边形
Functions
-
void sym_difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void sym_difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void sym_difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void sym_difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void sym_difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void sym_difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
- group return_sym_difference
几何图形之间的对称差
See also
Functions
-
aidi::geometry::MultiPolygon2f return_sym_difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
-
aidi::geometry::MultiPolygon2f return_sym_difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
-
aidi::geometry::MultiPolygon2f return_sym_difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
-
aidi::geometry::MultiPolygon2f return_sym_difference(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
-
aidi::geometry::MultiPolygon2i return_sym_difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
-
aidi::geometry::MultiPolygon2i return_sym_difference(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
-
aidi::geometry::MultiPolygon2f return_sym_difference(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
- group touches
几何图形之间是否触及(相切,不重叠)
- param lhs:
多边形
- param rhs:
同类型的多边形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
×
×
×
×
×
×
×
×
×
LineString
×
×
×
×
×
×
×
×
×
Ring
×
×
√
√
×
×
×
×
×
Polygon
×
×
√
√
×
×
×
×
×
Rect
×
×
×
×
×
×
×
×
×
RotateRect
×
×
×
×
×
×
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
- return:
NO_DISCARD bool
Functions
- group union_areal
多边形之间的并集
Warning
对于整型几何图形的并集结果存在交点为浮点型时,会产生一定的问题.
- param lhs:
多边形
- param rhs:
同类型的多边形
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
×
×
×
×
×
×
×
×
×
LineString
×
×
×
×
×
×
×
×
×
Ring
×
×
√
√
×
×
×
×
×
Polygon
×
×
√
√
×
×
×
×
×
Rect
×
×
×
×
×
×
×
×
×
RotateRect
×
×
×
×
×
×
×
×
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
×
×
×
×
×
×
×
Vector
×
×
×
×
×
×
×
×
×
- param result:
同类型的多多边形
Functions
-
void union_areal(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void union_areal(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void union_areal(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void union_areal(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs, aidi::geometry::MultiPolygon2f &result)#
-
void union_areal(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
-
void union_areal(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
- group return_union_areal
多边形之间的并集
See also
Functions
-
aidi::geometry::MultiPolygon2f return_union_areal(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
-
aidi::geometry::MultiPolygon2f return_union_areal(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
-
aidi::geometry::MultiPolygon2f return_union_areal(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
-
aidi::geometry::MultiPolygon2f return_union_areal(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
-
aidi::geometry::MultiPolygon2i return_union_areal(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
-
aidi::geometry::MultiPolygon2i return_union_areal(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
-
aidi::geometry::MultiPolygon2f return_union_areal(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
- group unique
去除几何图形中重复节点
- param rhs:
线或多边形
LinearOrAreal
LineString
Ring
Polygon
- group return_unique
去除几何图形中重复节点
See also
Functions
-
aidi::geometry::LineString2f return_unique(const aidi::geometry::LineString2f &rhs)#
-
aidi::geometry::LineString2i return_unique(const aidi::geometry::LineString2i &rhs)#
-
aidi::geometry::LineString2f return_unique(const aidi::geometry::LineString2f &rhs)#
- group within
第一个几何图形是否在第二个几何图形内部
- param lhs:
几何图形
- param rhs:
lhs/rhs
Point
LineString
Ring
Polygon
Rect
RotateRect
Arc
Circle
Vector
Point
√
√
√
√
√
√
×
√
×
LineString
×
√
√
√
√
√
×
√
×
Ring
×
×
√
√
√
√
×
√
×
Polygon
×
×
√
√
√
√
×
√
×
Rect
×
×
√
√
√
√
×
√
×
RotateRect
×
×
√
√
√
√
×
√
×
Arc
×
×
×
×
×
×
×
×
×
Circle
×
×
√
√
√
√
×
√
×
Vector
×
×
×
×
×
×
×
×
×
- return:
NO_DISCARD bool
Functions
-
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
-
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
-
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
-
bool within(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
-
bool within(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
- group transform_rotate
Geometry rotate transform.
Cartesian coordinate system(the origin of the first quadrant is in
the lower left corner), the matrix is rotated clockwise in radians.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.- param geometry:
Geometry.
Geometry
Point
LineString
Ring
Polygon
RotateRect
Vector
Segment
MultiPoint
MultiPolygon
- param radian:
Rotation radian.
- return:
NO_DISCARD the result is consistent with the input geometry.
- param rect:
Rect.
- param radian:
Rotation radian.
- return:
NO_DISCARD the result is RotateRect.
Functions
-
aidi::geometry::Point2f transform_rotate(const aidi::geometry::Point2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::LineString2f transform_rotate(const aidi::geometry::LineString2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::Ring2f transform_rotate(const aidi::geometry::Ring2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::Polygon2f transform_rotate(const aidi::geometry::Polygon2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::RotateRect2f transform_rotate(const aidi::geometry::RotateRect2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::Vector2f transform_rotate(const aidi::geometry::Vector2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::Segment2f transform_rotate(const aidi::geometry::Segment2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::MultiPoint2f transform_rotate(const aidi::geometry::MultiPoint2f &geometry, const aidi::geometry::Radian &radian)#
-
aidi::geometry::MultiPolygon2f transform_rotate(const aidi::geometry::MultiPolygon2f &geometry, const aidi::geometry::Radian &radian)#
- group transform_scale
Geometry scale transform.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
- param geometry:
Geometry.
Geometry
Point
LineString
Ring
Polygon
Rect
Vector
Segment
MultiPoint
MultiPolygon
- param ratiox:
Scaling ratio direction-x.
- param ratioy:
Scaling ratio direction-y.
- return:
NO_DISCARD the result is consistent with the input geometry.
- param rotate_rect:
RotateRect.
- param ratiox:
Scaling ratio direction-x.
- param ratioy:
Scaling ratio direction-y.
- return:
NO_DISCARD the result is Ring.
Functions
-
aidi::geometry::Point2f transform_scale(const aidi::geometry::Point2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::LineString2f transform_scale(const aidi::geometry::LineString2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::Ring2f transform_scale(const aidi::geometry::Ring2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::Polygon2f transform_scale(const aidi::geometry::Polygon2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::Rect2f transform_scale(const aidi::geometry::Rect2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::Vector2f transform_scale(const aidi::geometry::Vector2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::Segment2f transform_scale(const aidi::geometry::Segment2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::MultiPoint2f transform_scale(const aidi::geometry::MultiPoint2f &geometry, float ratiox, float ratioy)#
-
aidi::geometry::MultiPolygon2f transform_scale(const aidi::geometry::MultiPolygon2f &geometry, float ratiox, float ratioy)#
- group transform_translate
Geometry translate transform.
- param geometry:
Geometry.
Geometry
Point
LineString
Ring
Polygon
Rect
RotateRect
Vector
Segment
MultiPoint
MultiPolygon
- param directx:
Translation transform direction-x.
- param directy:
Translation transform direction-y.
- return:
NO_DISCARD the result is consistent with the input geometry.
Functions
-
aidi::geometry::Point2f transform_translate(const aidi::geometry::Point2f &geometry, float directx, float directy)#
-
aidi::geometry::LineString2f transform_translate(const aidi::geometry::LineString2f &geometry, float directx, float directy)#
-
aidi::geometry::Ring2f transform_translate(const aidi::geometry::Ring2f &geometry, float directx, float directy)#
-
aidi::geometry::Polygon2f transform_translate(const aidi::geometry::Polygon2f &geometry, float directx, float directy)#
-
aidi::geometry::Rect2f transform_translate(const aidi::geometry::Rect2f &geometry, float directx, float directy)#
-
aidi::geometry::RotateRect2f transform_translate(const aidi::geometry::RotateRect2f &geometry, float directx, float directy)#
-
aidi::geometry::Vector2f transform_translate(const aidi::geometry::Vector2f &geometry, float directx, float directy)#
-
aidi::geometry::Segment2f transform_translate(const aidi::geometry::Segment2f &geometry, float directx, float directy)#
-
aidi::geometry::MultiPoint2f transform_translate(const aidi::geometry::MultiPoint2f &geometry, float directx, float directy)#
-
aidi::geometry::MultiPolygon2f transform_translate(const aidi::geometry::MultiPolygon2f &geometry, float directx, float directy)#
- group transform
Geometry transform.
transform(geometry, step1), transform(geometry, step2) -> transform(geometry, step2 * step1).
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
- param geometry:
Geometry.
Geometry
Point
LineString
Ring
Polygon
Vector
Segment
MultiPoint
MultiPolygon
- param mat:
Transformation matrix.
- return:
NO_DISCARD the result is consistent with the input geometry.
- param rect:
Rect.
- param mat:
Transformation matrix.
- return:
NO_DISCARD the result is Ring.
- param rotate_rect:
RotateRect.
- param mat:
Transformation matrix.
- return:
NO_DISCARD the result is Ring.
Functions
-
aidi::geometry::Point2f transform(const aidi::geometry::Point2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::LineString2f transform(const aidi::geometry::LineString2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::Ring2f transform(const aidi::geometry::Ring2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::Polygon2f transform(const aidi::geometry::Polygon2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::Vector2f transform(const aidi::geometry::Vector2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::Segment2f transform(const aidi::geometry::Segment2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::MultiPoint2f transform(const aidi::geometry::MultiPoint2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
aidi::geometry::MultiPolygon2f transform(const aidi::geometry::MultiPolygon2f &geometry, const aidi::geometry::Matrix3f &mat)#
-
Matrix3f aidi::geometry::get_affine_transform(const std::vector<Point2f> &src, const std::vector<Point2f> &dst)#
Calculate an affine transform from three pairs of the corresponding points.
If the number of point pairs is less than 3, an aidi::excepts::InvalidArgument will be thrown.
- Parameters:
src – Coordinate of triangle vertices in the source image.
dst – Coordinate of the corresponding triangle vertices in the destination image.
- Throws:
aidi::excepts::InvalidArgument – if the number of point pairs is less than requirement.
- Returns:
NO_DISCARD transformation matrix.
-
Matrix3f aidi::geometry::get_perspective_transform(const std::vector<Point2f> &src, const std::vector<Point2f> &dst)#
Calculate a perspective transform from four pairs of the corresponding points.
If the number of point pairs is less than 4, an aidi::excepts::InvalidArgument will be thrown.
- Parameters:
src – Coordinate of quadrangle vertices in the source image.
dst – Coordinate of the corresponding quadrangle vertices in the destination image.
- Throws:
aidi::excepts::InvalidArgument – if the number of point pairs is less than requirement.
- Returns:
NO_DISCARD transformation matrix.
-
Matrix3f aidi::geometry::get_inverse_transform(const Matrix3f &mat)#
Get inverse transform matrix.
- Parameters:
mat – Source matrix.
- Returns:
NO_DISCARD inverse transform matrix.
-
Matrix3f aidi::geometry::get_rotate_transform(const Radian &radian)#
Get rotate transform matrix.
- Parameters:
radian – Rotation radian.
- Returns:
NO_DISCARD rotate transform matrix.
-
Matrix3f aidi::geometry::get_scale_transform(float ratiox, float ratioy)#
Get scale transform matrix.
- Parameters:
ratiox – Scaling ratio direction-x.
ratioy – Scaling ratio direction-y.
- Returns:
NO_DISCARD scale transform matrix.
-
Matrix3f aidi::geometry::get_translate_transform(float directx, float directy)#
Get translate transform matrix.
- Parameters:
directx – Translation transform direction-x.
directy – Translation transform direction-y.
- Returns:
NO_DISCARD translate transform matrix
-
using aidi::geometry::MultiPoint2f::Point = Point2f#
-
using aidi::geometry::MultiPoint2i::Point = Point2i#
-
using aidi::geometry::MultiPolygon2f::Polygon = Polygon2f#
-
using aidi::geometry::MultiPolygon2i::Polygon = Polygon2i#