Geometry Structure and Algorithm.#

Geometry Structure#

const float aidi::geometry::kPi = 3.14159265358979F#

Constant PI.

class IGeometry#

Common abstract base class for all plane geometry types.

Subclassed by aidi::geometry::Arc2f, aidi::geometry::Circle2f, aidi::geometry::Circle2i, aidi::geometry::Ellipse2f, 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 kCircle2f = 24#
enumerator kCircle2i = 25#
enumerator kLineString2f = 26#
enumerator kLineString2i = 27#
enumerator kMultiPoint2f = 28#
enumerator kMultiPoint2i = 29#
enumerator kMultiPolygon2f = 30#
enumerator kMultiPolygon2i = 31#
enumerator kEllipse2f = 32#

Public Functions

virtual GeometryType type() const = 0#

Enumerate value of geometry types.

Returns:

GeometryType

const char *type_name() const#

Name of geometry types.

Returns:

const char*

struct Radian : public aidi::geometry::IGeometry#

Can easily get the degree of the radian conversion.

The direction from the positive direction of the x-axis to the positive direction of the y-axis is positive direction of the angle defination.

Public Functions

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Radian(float radian = 0)#

Construct a new Radian object.

Parameters:

radianRadian.

bool operator==(const Radian &rhs) const#

Check if two Radian are equal.

Parameters:

rhs – Other Radian.

Returns:

true if two Radian are equal.

Radian operator-() const#

Get negative Radian.

Returns:

Radian negative Radian.

Radian norm(float mod = kPi * 2) const#

Normalize the radian into [0, mod)

Parameters:

mod – Divisor.

Returns:

NO_DISCARD Radian in [0, mod)

float degree() const#

Get the degree of the radian conversion.

Returns:

NO_DISCARD float degree.

Radian &from_degree(float degree)#

Set the radian of the degree conversion.

Parameters:

degree – Degree.

Returns:

Radian& reference to this object.

Public Members

float radian#

Radian data.

struct Vector2f : public aidi::geometry::IGeometry#

A floating-point vector with size and direction from the origin point (0, 0).

Public Types

using Elem = float#

Element type

using Point = Point2f#

Vector corresponding to a floating-point number type.

Public Functions

Vector2f() = default#

Default constructor,no initialization.

Vector2f(const Elem &x, const Elem &y)#

Constructor to set two values.

explicit Vector2f(const Point &rhs)#

Constructor to set a Point.

Vector2f operator-() const#

Inversion of vectors.

Vector2f operator+(const Vector2f &rhs) const#

Addition of vectors.

Vector2f operator-(const Vector2f &rhs) const#

Subtraction of vectors.

Vector2f operator*(Elem rhs) const#

Amplification of vectors.

Vector2f operator/(Elem rhs) const#

Reduction of vectors.

Elem operator*(const Vector2f &rhs) const#

vector product

Vector2f &operator+=(const Vector2f &rhs)#

Addition of vectors.

Vector2f &operator-=(const Vector2f &rhs)#

Subtraction of vectors.

Vector2f &operator*=(Elem rhs)#

Amplification of vectors.

Vector2f &operator/=(Elem rhs)#

Reduction of vectors.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Radian azimuth() const#

Azimuth of vectors.

Returns:

The radian of the rotation of the vector from the positive direction of the x-axis to the positive direction of the y-axis(±π).

float length() const#

Modulus of a vector.

Returns:

float Modulus length.

struct Vector2i : public aidi::geometry::IGeometry#

Integer vector with size and direction from the origin (0,0).

Public Types

using Elem = int32_t#

Element type.

using Point = Point2i#

Vector corresponding to an integer point of the same number type.

Public Functions

Vector2i() = default#

Default constructor.

Vector2i(const Elem &x, const Elem &y)#

Constructor to set two values.

explicit Vector2i(const Point2i &rhs)#

Constructor to set a Point.

Vector2i operator-() const#

Inversion of vectors.

Vector2i operator+(const Vector2i &rhs) const#

Addition of vectors.

Vector2i operator-(const Vector2i &rhs) const#

Subtraction of vectors.

Vector2i operator*(Elem rhs) const#

Amplification of vectors.

Vector2i operator/(Elem rhs) const#

Reduction of vectors.

Elem operator*(const Vector2i &rhs) const#

vector product

Vector2i &operator+=(const Vector2i &rhs)#

Addition of vectors.

Vector2i &operator-=(const Vector2i &rhs)#

Subtraction of vectors.

Vector2i &operator*=(Elem rhs)#

Amplification of vectors.

Vector2i &operator/=(Elem rhs)#

Reduction of vectors.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Radian azimuth() const#

Azimuth of vectors.

float length() const#

Modulus of a vector.

Returns:

float Modulus length

struct Point2f : public aidi::geometry::IGeometry#

Floating point coordinate points.

Public Types

using Elem = float#

Element type.

using Vector = Vector2f#

The vector of the same type corresponding to the point.

using Line = Line2f#

A line of the same type corresponding to a point.

Public Functions

Point2f() = default#

Default constructor,no initialization.

explicit Point2f(const Point2i &rhs)#

Construct a new Point with number type conversion.

Point2f(const Elem &x, const Elem &y)#

Constructor to set two values.

explicit Point2f(const Vector &rhs)#

Constructor to set a Vector.

bool operator==(const Vector &rhs) const#

Numerical comparison with vectors of the same type.

Point2f operator+(const Vector &rhs) const#

Translation of points.

Point2f operator-(const Vector &rhs) const#

Translation of points.

Point2f operator*(Elem rhs) const#

Enlarge point coordinates.

Point2f operator/(Elem rhs) const#

Point coordinates reduced.

Point2f &operator+=(const Vector &rhs)#

Translation of points.

Point2f &operator-=(const Vector &rhs)#

Translation of points.

Point2f &operator*=(Elem rhs)#

Enlarge point coordinates.

Point2f &operator/=(Elem rhs)#

Point coordinates reduced.

Elem operator*(const Point2f &rhs) const#

点积

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

struct Point2i : public aidi::geometry::IGeometry#

整型点

Public Types

using Elem = int32_t#

Element type

using Vector = Vector2i#

The vector of the same type corresponding to the point.

using Line = Line2i#

A line of the same type corresponding to a point.

Public Functions

Point2i() = default#

Default constructor,no initialization.

Point2i(const Elem &x, const Elem &y)#

Constructor to set two values.

explicit Point2i(const Vector &rhs)#

Constructor to set a Vector.

explicit Point2i(const Point2f &rhs)#

Constructor from Point2f.

bool operator==(const Vector &rhs) const#

Numerical comparison with vectors of the same type.

Parameters:

rhs – Vector to compare

Returns:

true if equal

Returns:

false

Point2i operator+(const Vector &rhs) const#

Translation of points.

Point2i operator-(const Vector &rhs) const#

Translation of points.

Point2i operator*(Elem rhs) const#

Enlarge point coordinates.

Point2i operator/(Elem rhs) const#

Point coordinates reduced.

Point2i &operator+=(const Vector &rhs)#

Translation of points.

Point2i &operator-=(const Vector &rhs)#

Translation of points.

Point2i &operator*=(Elem rhs)#

Enlarge point coordinates.

Point2i &operator/=(Elem rhs)#

Point coordinates reduced.

Elem operator*(const Point2i &rhs) const#

dot product

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

struct Segment2f : public std::pair<Point2f, Point2f>, public aidi::geometry::IGeometry#

Floating point line segments.

Public Types

using Point = Point2f#

Line segments corresponding to points of the same type.

using Vector = Vector2f#

Direction vectors of the same type corresponding to the line segment.

using Line = Line2f#

Line segment corresponding to a line of the same data type.

using Elem = Point2f::Elem#

Element type.

Public Functions

Segment2f(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

Segment2f(const Point &lhs, const Vector &direction, const float &dis)#

Constructor to set Point,direction Vector and distance.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

float length() const#

Length of line segment

Line in_line() const#

The line where the line segment is located.

Radian azimuth() const#

Azimuth of a line segment.

struct Segment2i : public std::pair<Point2i, Point2i>, public aidi::geometry::IGeometry#

Integral line segments.

Public Types

using Point = Point2i#

Line segments corresponding to points of the same type.

using Vector = Vector2i#

Direction vectors of the same type corresponding to the line segment.

using Line = Line2i#

Line segment corresponding to a line of the same data type.

using Elem = Point2i::Elem#

Element type.

Public Functions

Segment2i(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

Segment2i(const Point &lhs, const Vector &direction, const float &dis)#

Constructor to set Point,direction Vector and distance.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

float length() const#

Length of line segment

Line in_line() const#

The line where the line segment is located.

Radian azimuth() const#

Azimuth of a line segment.

struct Line2f : public aidi::geometry::IGeometry#

浮点型直线

Public Types

using Point = Point2f#

直线对应的同类型点.

using Segment = Segment2f#

直线对应的同类型线段.

using Vector = Vector2f#

直线对应的同类型方向向量.

using Elem = Point2f::Elem#

Element type.

Public Functions

Line2f(const Elem &a, const Elem &b, const Elem &c)#

Constructor to set ax+by+c=0.

Line2f(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

Line2f(const Point &lhs, const Vector &rhs)#

Constructor to set Point and direction Vector.

explicit Line2f(const Segment &rhs)#

Constructor to set a Segment.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Point passing_point() const#

直线的经过点.

优先返回y轴交点,其次返回x轴交点.

Returns:

NO_DISCARD Point

Vector direction() const#

直线的方向向量.

Radian azimuth() const#

直线的方位角.

struct Line2i : public aidi::geometry::IGeometry#

整型直线

Public Types

using Point = Point2i#

直线对应的同类型点.

using Segment = Segment2i#

直线对应的同类型线段.

using Vector = Vector2i#

直线对应的同类型方向向量.

using Elem = Point2i::Elem#

Element type.

Public Functions

Line2i(const Elem &a, const Elem &b, const Elem &c)#

Constructor to set ax+by+c=0.

Line2i(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

Line2i(const Point &lhs, const Vector &rhs)#

Constructor to set Point and direction Vector.

explicit Line2i(const Segment &rhs)#

Constructor to set a Segment.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Point passing_point() const#

直线的经过点.

优先返回y轴交点,其次返回x轴交点.

Returns:

NO_DISCARD Point

Vector direction() const#

直线的方向向量.

Radian azimuth() const#

直线的方位角.

struct Ray2f : public aidi::geometry::IGeometry#

浮点型射线

Public Types

using Point = Point2f#

射线对应的同类型射线.

using Vector = Vector2f#

射线对应的同类型方向向量.

using Line = Line2f#

射线对应的同类直线.

Public Functions

Ray2f(Point lhs, const Vector &rhs)#

Constructor to set Point and direction Vector.

Ray2f(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Radian azimuth() const#

射线的方位角.

Line in_line() const#

射线所在直线.

Public Members

Point start#

射线起始点.

Vector direction#

射线对应的方向向量.

struct Ray2i : public aidi::geometry::IGeometry#

整型射线

Public Types

using Point = Point2i#

射线对应的同类型射线.

using Vector = Vector2i#

射线对应的同类型方向向量.

using Line = Line2i#

射线对应的同类直线.

Public Functions

Ray2i(Point lhs, const Vector &rhs)#

Constructor to set Point and direction Vector.

Ray2i(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Radian azimuth() const#

射线的方位角.

Line in_line() const#

射线所在直线.

Public Members

Point start#

射线起始点.

Vector direction#

射线对应的方向向量.

struct LineString2f : public std::vector<Point2f>, public aidi::geometry::IGeometry#

浮点型线

一条线被认为是一些点的集合(std::vector),且按一定顺序连接相邻两点形成折线段.

Note

线可以是自交的,但这对于某些算法会产生错误的影响.可以通过 is_simple() 检测是否自交等问题.

Public Types

using Point = Point2f#

线对应的同类型点

using Rect = Rect2f#

线对应的同类型矩形 envelope()

Public Functions

LineString2f() = default#

Default constructor,creating an empty LineString.

LineString2f(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

LineString2f(const std::initializer_list<Point> &rhs)#

Constructor taking std::initializer_list,filling the LineString.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

float length() const#

折线段长度和

struct LineString2i : public std::vector<Point2i>, public aidi::geometry::IGeometry#

整型线

一条线被认为是一些点的集合(std::vector),且按一定顺序形成折线段.

Note

线可以是自交的,但这对于某些算法会产生错误的影响.可以通过 is_simple() 检测是否自交等问题.

Public Types

using Point = Point2i#

线对应的同类型点

using Rect = Rect2i#

线对应的同类型矩形 envelope()

Public Functions

LineString2i() = default#

Default constructor,creating an empty LineString.

LineString2i(const Point &lhs, const Point &rhs)#

Constructor to set two Points.

LineString2i(const std::initializer_list<Point> &rhs)#

Constructor taking std::initializer_list,filling the LineString.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

float length() const#

折线段长度和

struct Ring2f : public std::vector<Point2f>, public aidi::geometry::IGeometry#

浮点型环

环是一条不应自交的闭合线,即不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述环上的点,开包(第一点与最后一点不同).

Public Types

using Point = Point2f#

环对应的同类型点

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#

Enumerate value of geometry types.

Returns:

GeometryType

float area() const#

环面积

float perimeter() const#

环周长

struct Ring2i : public std::vector<Point2i>, public aidi::geometry::IGeometry#

整型环

环是一条不应自交的闭合线,即不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述环上的点,开包(第一点与最后一点不同).

Public Types

using Point = Point2i#

环对应的同类型点

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#

Enumerate value of geometry types.

Returns:

GeometryType

float area() const#

环面积

float perimeter() const#

环周长

struct Size2f : public aidi::geometry::IGeometry#

Specify rect or image size.

Public Types

using Elem = float#

Element type.

Public Functions

Size2f(Elem w, Elem h)#

Construct a new Size 2f object.

Parameters:
  • w – Width (cols).

  • h – Height (rows).

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Public Members

Elem h = 0.0#

Width (cols) and height (rows).

struct Size2i : public aidi::geometry::IGeometry#

Specify rect or image size.

Public Types

using Elem = uint32_t#

Element type.

Public Functions

Size2i(Elem w, Elem h)#

Construct a new Size2i object.

Parameters:
  • w – Width (cols).

  • h – Height (rows).

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Public Members

Elem h = 0#

Width and height.

struct Rect2f : public aidi::geometry::IGeometry#

浮点型矩形

有一个角为直角的平行四边形,与坐标轴平行.

Public Types

using Point = Point2f#

矩形对应的同类型点

using Elem = Size2f::Elem#

Element type.

using LineString = LineString2f#

矩形边对应类型的线段

using Ring = Ring2f#

矩形对应的同类型环 convert()

Public Functions

Rect2f() = default#

Default constructor,no initialization.

Rect2f(Point min_corner, const Elem &w, const Elem &h)#

矩形的最小顶点和矩形宽高描述矩形.

Rect2f(const Point &lhs, const Point &rhs)#

任意对角两点描述矩形.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Point xmin_ymin() const#

x最小,y最小顶点,同 min_corner.

Point xmax_ymin() const#

x最大,y最小顶点.

Point xmax_ymax() const#

x最大,y最大顶点.

Point xmin_ymax() const#

x最小,y最大顶点.

Elem area() const#

矩形面积

Elem perimeter() const#

矩形周长

Public Members

Point min_corner#

矩形的最小顶点.

Size size#

矩形的宽高.

struct Rect2i : public aidi::geometry::IGeometry#

整型矩形

有一个角为直角的平行四边形,与坐标轴平行.

Public Types

using Point = Point2i#

矩形对应的同类型点

using Elem = Size2i::Elem#

Element type.

using LineString = LineString2i#

矩形边对应类型的线段

using Ring = Ring2i#

矩形对应的同类型环 convert()

Public Functions

Rect2i() = default#

Default constructor,no initialization.

Rect2i(Point min_corner, const Elem &w, const Elem &h)#

矩形的最小顶点和矩形宽高描述矩形.

Rect2i(const Point &lhs, const Point &rhs)#

任意对角两点描述矩形.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Point xmin_ymin() const#

x最小,y最小顶点,同 min_corner.

Point xmax_ymin() const#

x最大,y最小顶点.

Point xmax_ymax() const#

x最大,y最大顶点.

Point xmin_ymax() const#

x最小,y最大顶点.

Elem area() const#

矩形面积

Elem perimeter() const#

矩形周长

Public Members

Point min_corner#

矩形的最小顶点.

Size size#

矩形的宽高.

struct Polygon2f : public aidi::geometry::IGeometry#

浮点型多边形

多边形由一个外环和零个或多个内环组成,内环方向与外环相反,形成带孔或不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述外环上的点,开包(第一点与最后一点不同).

Public Types

using Ring = Ring2f#

外环对应的同类型环

using RingList = std::vector<Ring>#

内环对应的同类型环集合

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#

Enumerate value of geometry types.

Returns:

GeometryType

float area() const#

多边形面积

Warning

如果内环描述不正确,如与外环相同方向,则计算面积时会重复计算内环面积. 可以通过 correct() 来修正几何图形,以得到正确的期望结果. 内环相互相切或与外环相切时仍可以得到正确的多边形面积.

float perimeter() const#

多边形周长

Warning

如果内环互相相切,或与外环相切,则计算周长时会重复计算相切边长.

Public Members

Ring outer#

外环,从x轴正方向向y轴正方向描述各点,开包.

RingList inners#

零个或多个内环,方向与外环相反.

struct Polygon2i : public aidi::geometry::IGeometry#

整型多边形

多边形由一个外环和零个或多个内环组成,内环方向与外环相反,形成带孔或不带孔的多边形. 应遵循从x轴正方向向y轴正方向描述外环上的点,开包(第一点与最后一点不同).

Public Types

using Ring = Ring2i#

外环对应的同类型环

using RingList = std::vector<Ring>#

内环对应的同类型环集合

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#

Enumerate value of geometry types.

Returns:

GeometryType

float area() const#

多边形面积

Warning

如果内环描述不正确,如与外环相同方向,则计算面积时会重复计算内环面积. 可以通过 correct() 来修正几何图形,以得到正确的期望结果. 内环相互相切或与外环相切时仍可以得到正确的多边形面积.

float perimeter() const#

多边形周长

Warning

如果内环互相相切,或与外环相切,则计算周长时会重复计算相切边长.

Public Members

Ring outer#

外环,从x轴正方向向y轴正方向描述各点,开包.

RingList inners#

零个或多个内环,方向与外环相反.

struct RotateRect2f : public aidi::geometry::IGeometry#

浮点型旋转矩形

有一个角为直角的平行四边形,不一定与坐标轴平行. 一个旋转矩形由其中心点center, 大小size 及指向角度radian所定义.

拥有相同的覆盖范围,但指向角度不同的多个旋转矩形本质上是不同。

Public Types

using Point = Point2f#

旋转矩形对应的同类型点

using Size = Size2f#

旋转矩形的大小,宽度w为沿角度方向的边长, 高度h为垂直于角度方向的边长

using LineString = LineString2f#

旋转矩形边对应类型的线段

using Ring = Ring2f#

旋转矩形对应的同类型环 convert()

using Rect = Rect2f#

旋转矩形对应的同类型矩形 envelope()

Public Functions

RotateRect2f() = default#

Default constructor,no initialization.

RotateRect2f(Point center, Size size, Radian radian = Radian())#

根据旋转矩形中心点,大小和方位角构造旋转矩形.

bool operator==(const RotateRect2f &rhs) const#

任意对角两点描述平行矩形.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Ring to_ring() const#

convert the rotate rectangle to ring. The order of the points is consistent with the order in which the rays from the center point are rotated in the positive direction and scanned in the positive direction.

Rect bounding_box() const#

Get the bounding box.

Public Members

Point center#

中心点.

struct RotateRect2i : public aidi::geometry::IGeometry#

整型旋转矩形

有一个角为直角的平行四边形,不一定与坐标轴平行. 一个旋转矩形由其中心点center, 大小size 及指向角度radian所定义.

拥有相同的覆盖范围,但指向角度不同的多个旋转矩形本质上是不同。

Public Types

using Point = Point2i#

旋转矩形对应的同类型点

using Size = Size2i#

旋转矩形的大小,宽度w为沿角度方向的边长, 高度h为垂直于角度方向的边长

using LineString = LineString2i#

旋转矩形边对应类型的线段

using Ring = Ring2i#

旋转矩形对应的同类型环 convert()

using Rect = Rect2i#

旋转矩形对应的同类型矩形 envelope()

Public Functions

RotateRect2i() = default#

Default constructor,no initialization.

RotateRect2i(Point center, Size size, Radian radian = Radian())#

根据旋转矩形中心点,大小和方位角构造旋转矩形.

bool operator==(const RotateRect2i &rhs) const#

任意对角两点描述平行矩形.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Ring to_ring() const#

convert the rotate rectangle to ring. The order of the points is consistent with the order in which the rays from the center point are rotated in the positive direction and scanned in the positive direction.

Rect bounding_box() const#

Get the bounding box.

Public Members

Point center#

中心点.

struct Ellipse2f : public aidi::geometry::IGeometry#

浮点型椭圆.

  • 椭圆即围绕两个焦点的平面曲线,曲线上的点到两个焦点的距离和为常数.

  • 一个椭圆由其中心点center,长半轴短半轴组成的axis,以及指向角度radian所定义.

  • 拥有相同的覆盖范围,但指向角度不同的多个椭圆本质上是不同的.

Public Types

using Point = Point2f#

椭圆对应的同类型点.

using Axis = Size2f#

椭圆的长半轴和短半轴组成的类型.

using Focus = Segment2f#

椭圆第一定义下x轴上左焦点和右焦点组成的类型.

using Rect = Rect2f#

椭圆对应的同类型矩形.

Public Functions

Ellipse2f() = default#

Default constructor,no initialization.

Ellipse2f(Point center, float major_semi_axis, float minor_semi_axis, Radian radian = Radian())#

根据椭圆中心点,长半轴短半轴长度和指向角度构造椭圆.

Require major_semi_axis >= minor_semi_axis, otherwise swap major_semi_axis and minor_semi_axis and add kPi * 0.5 to radian.

Parameters:
  • center – 椭圆中心点.

  • major_semi_axis – 长半轴长度.

  • minor_semi_axis – 段半轴长度.

  • radian – 指向角度.

Ellipse2f(Point center, Axis axis, Radian radian = Radian())#

根据椭圆中心点,长半轴短半轴长度和指向角度构造椭圆.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters:
  • center – 中心点.

  • axis – axis.w means major semi axis, axis.h means minor semi axis.

  • radian – 指向角度.

Ellipse2f(const Point &focus1, const Point &focus2, const Point &point)#

根据两个焦点和椭圆上一点构建椭圆.

Parameters:
  • focus1 – 椭圆其中一个焦点.

  • focus2 – 椭圆另一个焦点.

  • point – 椭圆上一点.

Ellipse2f(float a, float b, float d = 1, Point center = Point())#

根据椭圆标准方程构建椭圆.

\[ \frac{(x - center.x)^2}{a^2} + \frac{(y - center.y)^2}{b^2} = d (a \ge b \gt 0) \]

Parameters:
  • a – Major semi axis.

  • b – Minor semi axis.

  • d – Scale.

  • center – 中心点.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

Focus focus() const#

椭圆焦点.

float ecc() const#

椭圆离心率.

Rect bounding_box() const#

Get the bounding box.

Public Members

Point center#

中心点.

Axis axis#

axis.w means major semi axis, axis.h means minor semi axis.

Radian radian#

指向角度.

struct Arc2f : public aidi::geometry::IGeometry#

浮点型弧

Public Types

using Point = Point2f#

弧对应的同类型点

Public Functions

Arc2f() = default#

Default constructor,no initialization.

Arc2f(Point center, float radius, Radian start_angle, Radian end_angle)#

从x轴正方向向y轴正方向描述弧圆心,半径,起始弧度和终止弧度,.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

inline Radian angle() const#

Central angle.

inline float length() const#

Arc length.

Arc2f &norm(float mod = kPi * 2)#

Normalized Arc radian.

Public Members

Point center#

The centre of the circle corresponding to the arc.

float radius = 0#

The radius of the circle corresponding to the arc.

Radian start_angle#

Arc start radian.

Radian end_angle#

Arc end radian.

struct Circle2f : public aidi::geometry::IGeometry#

浮点型圆

Public Types

using Point = Point2f#

圆对应的同类型点

using Rect = Rect2f#

圆对应的同类型矩形 envelope()

Public Functions

Circle2f() = default#

Default constructor,no initialization.

Circle2f(Point center, float radius)#

Constructor to set center and radius.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

float area() const#

圆面积

float perimeter() const#

圆周长

Public Members

Point center#

圆心

float radius = 0#

半径

struct Circle2i : public aidi::geometry::IGeometry#

整型圆

Public Types

using Point = Point2i#

圆对应的同类型点

using Rect = Rect2i#

圆对应的同类型矩形 envelope()

Public Functions

Circle2i() = default#

Default constructor,no initialization.

Circle2i(Point center, float radius)#

Constructor to set center and radius.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

float area() const#

圆面积

float perimeter() const#

圆周长

Public Members

Point center#

圆心

float radius = 0#

半径

struct MultiPoint2f : public std::vector<Point2f>, public aidi::geometry::IGeometry#

浮点型点集

Warning

算法实现中不会清空原有数据,导致结果产生错误.

Public Functions

MultiPoint2f() = default#

Default constructor,no initialization.

MultiPoint2f(const std::initializer_list<Point> &rhs)#

Constructor taking std::initializer_list,filling the MultiPoint.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

struct MultiPoint2i : public std::vector<Point2i>, public aidi::geometry::IGeometry#

整型点集

Warning

算法实现中不会清空原有数据,导致结果产生错误.

Public Functions

MultiPoint2i() = default#

Default constructor,no initialization.

MultiPoint2i(const std::initializer_list<Point> &rhs)#

Constructor taking std::initializer_list,filling the MultiPoint.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

struct MultiPolygon2f : public std::vector<Polygon2f>, public aidi::geometry::IGeometry#

浮点型多多边形

Warning

算法实现中不会清空原有数据,导致结果产生错误.

Public Functions

MultiPolygon2f() = default#

Default constructor,no initialization.

MultiPolygon2f(const std::initializer_list<Polygon> &rhs)#

Constructor taking std::initializer_list,filling the MultiPolygon.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

struct MultiPolygon2i : public std::vector<Polygon2i>, public aidi::geometry::IGeometry#

整型多多边形

Warning

算法实现中不会清空原有数据,导致结果产生错误.

Public Functions

MultiPolygon2i() = default#

Default constructor,no initialization.

MultiPolygon2i(const std::initializer_list<Polygon> &rhs)#

Constructor taking std::initializer_list,filling the MultiPolygon.

virtual IGeometry::GeometryType type() const override#

Enumerate value of geometry types.

Returns:

GeometryType

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(Matrix3f &&rhs) noexcept#

Move constructor.

Parameters:

rhs – other rvalue 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.

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.

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::Point2f &rhs)#
void append(aidi::geometry::LineString2f &lhs, const aidi::geometry::MultiPoint2f &rhs)#
void append(aidi::geometry::Ring2f &lhs, const aidi::geometry::Point2f &rhs)#
void append(aidi::geometry::Ring2f &lhs, const aidi::geometry::MultiPoint2f &rhs)#
void append(aidi::geometry::MultiPoint2f &lhs, const aidi::geometry::Point2f &rhs)#
void append(aidi::geometry::MultiPoint2f &lhs, const aidi::geometry::MultiPoint2f &rhs)#
void append(aidi::geometry::LineString2i &lhs, const aidi::geometry::Point2i &rhs)#
void append(aidi::geometry::LineString2i &lhs, const aidi::geometry::MultiPoint2i &rhs)#
void append(aidi::geometry::Ring2i &lhs, const aidi::geometry::Point2i &rhs)#
void append(aidi::geometry::Ring2i &lhs, const aidi::geometry::MultiPoint2i &rhs)#
void append(aidi::geometry::MultiPoint2i &lhs, const aidi::geometry::Point2i &rhs)#
void append(aidi::geometry::MultiPoint2i &lhs, const aidi::geometry::MultiPoint2i &rhs)#
group area

多边形的面积

整型矩形面积

Warning

多边形的内环方向以及数据是否遵循约定方向等会对结果产生影响.

param rhs:

多边形,矩形以及圆

Areal

Ring

Polygon

Rect

RotateRect

Ellipse

Circle

MultiPolygon

param rhs:

Rect2i

return:

float 浮点型面积

return:

uint32_t 整型面积

Functions

float area(const aidi::geometry::Ring2f &rhs)#
float area(const aidi::geometry::Polygon2f &rhs)#
float area(const aidi::geometry::Rect2f &rhs)#
float area(const aidi::geometry::RotateRect2f &rhs)#
float area(const aidi::geometry::Ellipse2f &rhs)#
float area(const aidi::geometry::Circle2f &rhs)#
float area(const aidi::geometry::MultiPolygon2f &rhs)#
float area(const aidi::geometry::Ring2i &rhs)#
float area(const aidi::geometry::Polygon2i &rhs)#
float area(const aidi::geometry::RotateRect2i &rhs)#
float area(const aidi::geometry::Circle2i &rhs)#
float area(const aidi::geometry::MultiPolygon2i &rhs)#
uint32_t area(const aidi::geometry::Rect2i &rhs)#
group equal_operator

向量和点之间的数值比较

param lhs:

The vector of the same type corresponding to the point

param rhs:

任意类型的点

return:

true 点与向量数值上相等.

return:

false 点与向量数值上不等.

Functions

bool operator==(const aidi::geometry::Vector2f &lhs, const aidi::geometry::Point2f &rhs)#
bool operator==(const aidi::geometry::Vector2i &lhs, const aidi::geometry::Point2i &rhs)#
group addition_operator

向量+点=点

整型点+浮点型向量=浮点型点, 浮点型向量+整型点=浮点型点

param lhs:

The vector of the same type corresponding to the point

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)#
aidi::geometry::Point2f operator+(const aidi::geometry::Point2i &lhs, const aidi::geometry::Vector2f &rhs)#
aidi::geometry::Point2f operator+(const aidi::geometry::Vector2f &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 The vector of the same type corresponding to the point

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)#
aidi::geometry::Vector2f operator-(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2f &rhs)#
aidi::geometry::Vector2f operator-(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2i &rhs)#
group multiplication_operator

点和Amplification of vectors

整型向量*浮点数=浮点型向量,浮点数*整型向量=浮点型向量

整型点*浮点数=浮点型点,浮点数*整型点=浮点型点

param lhs:

点或向量的Elem

param rhs:

任意类型的点或向量

param lhs:

整形点/浮点数

param rhs:

浮点数/整形点

param lhs:

整型向量/浮点数

param rhs:

浮点数/整型向量

return:

结果不改变点或向量的类型

return:

Point2f 浮点型点

return:

Vector2f 浮点型向量

Functions

aidi::geometry::Point2f operator*(const float &lhs, const aidi::geometry::Point2f &rhs)#
aidi::geometry::Point2i operator*(const int32_t &lhs, const aidi::geometry::Point2i &rhs)#
aidi::geometry::Vector2f operator*(const float &lhs, const aidi::geometry::Vector2f &rhs)#
aidi::geometry::Vector2i operator*(const int32_t &lhs, const aidi::geometry::Vector2i &rhs)#
aidi::geometry::Point2f operator*(const aidi::geometry::Point2i &lhs, const float &rhs)#
aidi::geometry::Point2f operator*(const float &lhs, const aidi::geometry::Point2i &rhs)#
aidi::geometry::Vector2f operator*(const aidi::geometry::Vector2i &lhs, const float &rhs)#
aidi::geometry::Vector2f operator*(const float &lhs, const aidi::geometry::Vector2i &rhs)#
group add_point

将第一个点的值加上第二个

param lhs:

被改变的任意类型的第一个点

param rhs:

同类型的第二个点不发生变化

Functions

void add_point(aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
void add_point(aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
group add_value

将一个点的坐标加上相同值

param lhs:

被改变的任意类型的点/点对应的同类型值

param rhs:

点对应的同类型值/被改变的任意类型的点

Functions

void add_value(aidi::geometry::Point2f &lhs, const float &rhs)#
void add_value(aidi::geometry::Point2i &lhs, const int32_t &rhs)#
group cross_product

向量积,叉积

param lhs:

任意类型的点

param rhs:

同类型的点

return:

点对应的同类型值

Functions

float cross_product(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
int32_t cross_product(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
group divide_point

将第一个点除以第二个点

Note

注意int和float不同产生的结果.

param lhs:

被改变的任意类型的第一个点

param rhs:

同类型的第二个点不发生变化

Functions

void divide_point(aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
void divide_point(aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
group divide_value

将一个点的坐标除以点对应的同类型的值

param lhs:

被改变的任意类型的点

param rhs:

点对应的同类型值

Functions

void divide_value(aidi::geometry::Point2f &lhs, const float &rhs)#
void divide_value(aidi::geometry::Point2i &lhs, const int32_t &rhs)#
group dot_product

数量积,点积

param lhs:

任意类型的点或向量

param rhs:

同类型的点或向量

return:

点或向量对应的同类型的值

Functions

float dot_product(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
int32_t dot_product(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
float dot_product(const aidi::geometry::Vector2f &lhs, const aidi::geometry::Vector2f &rhs)#
int32_t dot_product(const aidi::geometry::Vector2i &lhs, const aidi::geometry::Vector2i &rhs)#
group multiply_point

将第一个点乘以第二个点

param lhs:

被改变的任意类型的第一个点

param rhs:

同类型的第二个点不发生变化

Functions

void multiply_point(aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
void multiply_point(aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
group multiply_value

将一个点的坐标乘以相同值

param lhs:

被改变的任意类型的点

param rhs:

点对应的同类型值

Functions

void multiply_value(aidi::geometry::Point2f &lhs, const float &rhs)#
void multiply_value(aidi::geometry::Point2i &lhs, const int32_t &rhs)#
group subtract_point

将第一个点减去第二个点

param lhs:

被改变的任意类型的第一个点

param rhs:

同类型的第二个点不发生改变

Functions

void subtract_point(aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
void subtract_point(aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
group subtract_value

将一个点的坐标减去相同值

param lhs:

被改变的任意类型的点

param rhs:

点对应的同类型值

Functions

void subtract_value(aidi::geometry::Point2f &lhs, const float &rhs)#
void subtract_value(aidi::geometry::Point2i &lhs, const int32_t &rhs)#
group azimuth

线段的方位角

向量的方位角

param lhs:

任意类型的点或向量

param rhs:

同类型的点或向量

param rhs:

任意类型的向量

return:

两点形成线段从x轴正方向向y轴正方向旋转的弧度(±𝝅)

return:

原点(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)#
aidi::geometry::Radian azimuth(const aidi::geometry::Vector2i &lhs, const aidi::geometry::Vector2i &rhs)#
aidi::geometry::Radian azimuth(const aidi::geometry::Vector2f &rhs)#
aidi::geometry::Radian azimuth(const aidi::geometry::Vector2i &rhs)#
group center

多边形中心,即外接平行矩形的中心

整型圆的中心

param rhs:

多边形,矩形和圆.

Areal

Ring

Polygon

Rect

RotateRect

Ellipse

Circle

param rhs:

整型圆

return:

Point2f 浮点型点

return:

整型点,即圆心.

Functions

aidi::geometry::Point2f center(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Rect2f &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::RotateRect2f &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Ellipse2f &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Circle2f &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Polygon2i &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::Rect2i &rhs)#
aidi::geometry::Point2f center(const aidi::geometry::RotateRect2i &rhs)#
aidi::geometry::Point2i center(const aidi::geometry::Circle2i &rhs)#
group centroid

多边形质心

整型圆质心

param rhs:

多边形,矩形和圆

Areal

Ring

Polygon

Rect

RotateRect

Ellipse

Circle

param rhs:

整型圆

return:

Point2f 浮点型点

return:

Point2i 整形点,即圆心

Functions

aidi::geometry::Point2f centroid(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Rect2f &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::RotateRect2f &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Ellipse2f &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Circle2f &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Polygon2i &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::Rect2i &rhs)#
aidi::geometry::Point2f centroid(const aidi::geometry::RotateRect2i &rhs)#
aidi::geometry::Point2i centroid(const aidi::geometry::Circle2i &rhs)#
group clear

清空几何图形数据

param rhs:

线或多边形

LinearOrAreal

LineString

Ring

Polygon

MultiPoint

MultiPolygon

Functions

void clear(aidi::geometry::LineString2f &rhs)#
void clear(aidi::geometry::Ring2f &rhs)#
void clear(aidi::geometry::Polygon2f &rhs)#
void clear(aidi::geometry::MultiPoint2f &rhs)#
void clear(aidi::geometry::MultiPolygon2f &rhs)#
void clear(aidi::geometry::LineString2i &rhs)#
void clear(aidi::geometry::Ring2i &rhs)#
void clear(aidi::geometry::Polygon2i &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::Point2f &lhs, aidi::geometry::Point2f &rhs)#
void convert(const aidi::geometry::Point2f &lhs, aidi::geometry::Point2i &rhs)#
void convert(const aidi::geometry::Point2f &lhs, aidi::geometry::Vector2f &rhs)#
void convert(const aidi::geometry::Point2i &lhs, aidi::geometry::Point2f &rhs)#
void convert(const aidi::geometry::Point2i &lhs, aidi::geometry::Point2i &rhs)#
void convert(const aidi::geometry::Point2i &lhs, aidi::geometry::Vector2i &rhs)#
void convert(const aidi::geometry::LineString2f &lhs, aidi::geometry::LineString2f &rhs)#
void convert(const aidi::geometry::LineString2f &lhs, aidi::geometry::Ring2f &rhs)#
void convert(const aidi::geometry::LineString2f &lhs, aidi::geometry::Polygon2f &rhs)#
void convert(const aidi::geometry::LineString2i &lhs, aidi::geometry::LineString2i &rhs)#
void convert(const aidi::geometry::LineString2i &lhs, aidi::geometry::Ring2i &rhs)#
void convert(const aidi::geometry::LineString2i &lhs, aidi::geometry::Polygon2i &rhs)#
void convert(const aidi::geometry::Ring2f &lhs, aidi::geometry::LineString2f &rhs)#
void convert(const aidi::geometry::Ring2f &lhs, aidi::geometry::Ring2f &rhs)#
void convert(const aidi::geometry::Ring2f &lhs, aidi::geometry::Polygon2f &rhs)#
void convert(const aidi::geometry::Ring2i &lhs, aidi::geometry::LineString2i &rhs)#
void convert(const aidi::geometry::Ring2i &lhs, aidi::geometry::Ring2i &rhs)#
void convert(const aidi::geometry::Ring2i &lhs, aidi::geometry::Polygon2i &rhs)#
void convert(const aidi::geometry::Polygon2f &lhs, aidi::geometry::Polygon2f &rhs)#
void convert(const aidi::geometry::Polygon2i &lhs, aidi::geometry::Polygon2i &rhs)#
void convert(const aidi::geometry::Rect2f &lhs, aidi::geometry::Ring2f &rhs)#
void convert(const aidi::geometry::Rect2f &lhs, aidi::geometry::Polygon2f &rhs)#
void convert(const aidi::geometry::Rect2f &lhs, aidi::geometry::Rect2f &rhs)#
void convert(const aidi::geometry::Rect2i &lhs, aidi::geometry::Ring2i &rhs)#
void convert(const aidi::geometry::Rect2i &lhs, aidi::geometry::Polygon2i &rhs)#
void convert(const aidi::geometry::Rect2i &lhs, aidi::geometry::Rect2i &rhs)#
void convert(const aidi::geometry::RotateRect2f &lhs, aidi::geometry::Ring2f &rhs)#
void convert(const aidi::geometry::RotateRect2f &lhs, aidi::geometry::Polygon2f &rhs)#
void convert(const aidi::geometry::RotateRect2i &lhs, aidi::geometry::Ring2i &rhs)#
void convert(const aidi::geometry::RotateRect2i &lhs, aidi::geometry::Polygon2i &rhs)#
void convert(const aidi::geometry::Arc2f &lhs, aidi::geometry::Circle2f &rhs)#
group convex_hull

多边形的凸包

Note

新的凸包将以x最小的点为起点,从x轴正方向向y轴正方向顺序排列.

param lhs:

多边形

param rhs:

Areal

Ring

Polygon

Functions

void convex_hull(const aidi::geometry::Ring2f &lhs, aidi::geometry::Ring2f &rhs)#
void convex_hull(const aidi::geometry::Ring2i &lhs, aidi::geometry::Ring2i &rhs)#
void convex_hull(const aidi::geometry::Polygon2f &lhs, aidi::geometry::Ring2f &rhs)#
void convex_hull(const aidi::geometry::Polygon2i &lhs, aidi::geometry::Ring2i &rhs)#
group return_convex_hull

多边形的凸包

See also

convex_hull()

Functions

aidi::geometry::Ring2f return_convex_hull(const aidi::geometry::Ring2f &lhs)#
aidi::geometry::Ring2i return_convex_hull(const aidi::geometry::Ring2i &lhs)#
aidi::geometry::Ring2f return_convex_hull(const aidi::geometry::Polygon2f &lhs)#
aidi::geometry::Ring2i return_convex_hull(const aidi::geometry::Polygon2i &lhs)#
group correct

修正多边形的约定顺序和约定开闭包形式

conventionally open and closed packet forms

param rhs:

polygon object.

Areal

Ring

Polygon

Functions

void correct(aidi::geometry::Ring2f &rhs)#
void correct(aidi::geometry::Ring2i &rhs)#
void correct(aidi::geometry::Polygon2f &rhs)#
void correct(aidi::geometry::Polygon2i &rhs)#
group return_correct

修正多边形的约定顺序和约定开闭包形式

See also

correct()

Functions

aidi::geometry::Ring2f return_correct(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::Ring2i return_correct(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::Polygon2f return_correct(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::Polygon2i return_correct(const aidi::geometry::Polygon2i &rhs)#
group covered_by

whether the first geometry is covered by the second geometry

second geometry

The difference with the within algorithm is that this algorithm checks the border by default.

See also

within()

Note

Boundaries with intersections are also considered to be covered.

param lhs:

The first geometry object

param rhs:

The second geometry object

lhs/rhs

Point

LineString

Ring

Polygon

Rect

RotateRect

Arc

Circle

Vector

Point

×

×

LineString

×

×

×

×

Ring

×

×

×

×

×

Polygon

×

×

×

×

×

Rect

×

×

×

×

×

RotateRect

×

×

×

×

×

Arc

×

×

×

×

×

×

×

×

×

Circle

×

×

×

×

×

×

×

×

Vector

×

×

×

×

×

×

×

×

×

return:

bool

Functions

bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool covered_by(const aidi::geometry::Point2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool covered_by(const aidi::geometry::Point2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool covered_by(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool covered_by(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool covered_by(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool covered_by(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Rect2f &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::Ring2i &rhs)#
bool covered_by(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool covered_by(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool covered_by(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool covered_by(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool covered_by(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool covered_by(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool covered_by(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool covered_by(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool covered_by(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool covered_by(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool covered_by(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool covered_by(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool covered_by(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool covered_by(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool covered_by(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool covered_by(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool covered_by(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool covered_by(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool covered_by(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool covered_by(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool covered_by(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool covered_by(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool covered_by(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool covered_by(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool covered_by(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool covered_by(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool covered_by(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool covered_by(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool covered_by(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool covered_by(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &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::Ring2i &rhs)#
bool covered_by(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool covered_by(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool covered_by(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool covered_by(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool covered_by(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Circle2i &rhs)#
group crosses

Whether the first line crosses the second geometric figure.

See also

covered_by()

Note

If the first geometry does not cross the boundary of the second geometry, it will be considered as covered.

param lhs:

line or other geometry object.

param rhs:

The second geometry

Geometry

Point

LineString

Ring

Polygon

Rect

RotateRect

Circle

return:

bool

Functions

bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Point2f &rhs)#
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool crosses(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Point2i &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool crosses(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Circle2i &rhs)#
group difference

Difference sets between two polygons.

Note

The algorithm does not clear the MultiPolygon of existing data, but adds the result to the MultiPolygon.

Warning

Imperfect support for integer geometry types.

param lhs:

Geometry object

param rhs:

Geometry object

lhs/rhs

Point

LineString

Ring

Polygon

Rect

RotateRect

Arc

Circle

Vector

Point

×

×

×

×

×

×

×

×

×

LineString

×

×

×

×

×

×

×

×

×

Ring

×

×

×

×

×

Polygon

×

×

×

×

×

Rect

×

×

×

×

×

RotateRect

×

×

×

×

×

Arc

×

×

×

×

×

×

×

×

×

Circle

×

×

×

×

×

×

×

×

×

Vector

×

×

×

×

×

×

×

×

×

param result:

MultiPolygons (or other type), difference sets between two polygons.

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:

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:

bool

Functions

bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::Point2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::Point2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Point2f &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool disjoint(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Point2i &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool disjoint(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool disjoint(const aidi::geometry::Line2f &lhs, const aidi::geometry::Line2f &rhs)#
bool disjoint(const aidi::geometry::Line2i &lhs, const aidi::geometry::Line2i &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:

float

Functions

float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::Point2f &lhs, const aidi::geometry::Line2f &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::Point2i &lhs, const aidi::geometry::Circle2i &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Circle2i &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Circle2i &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Circle2i &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Circle2i &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Circle2i &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Point2f &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::LineString2f &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Ring2f &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Polygon2f &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Rect2f &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
float distance(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Circle2f &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Point2i &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::LineString2i &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Ring2i &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Polygon2i &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Rect2i &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
float distance(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Circle2i &rhs)#
group envelope

最小外接矩形

param lhs:

线或多边形

param rhs:

线或多边形的最小外接矩形

LinearOrAreal

LineString

Ring

Polygon

RotateRect

Ellipse

Functions

void envelope(const aidi::geometry::LineString2f &lhs, aidi::geometry::Rect2f &rhs)#
void envelope(const aidi::geometry::Ring2f &lhs, aidi::geometry::Rect2f &rhs)#
void envelope(const aidi::geometry::Polygon2f &lhs, aidi::geometry::Rect2f &rhs)#
void envelope(const aidi::geometry::RotateRect2f &lhs, aidi::geometry::Rect2f &rhs)#
void envelope(const aidi::geometry::Ellipse2f &lhs, aidi::geometry::Rect2f &rhs)#
void envelope(const aidi::geometry::LineString2i &lhs, aidi::geometry::Rect2i &rhs)#
void envelope(const aidi::geometry::Ring2i &lhs, aidi::geometry::Rect2i &rhs)#
void envelope(const aidi::geometry::Polygon2i &lhs, aidi::geometry::Rect2i &rhs)#
void envelope(const aidi::geometry::RotateRect2i &lhs, aidi::geometry::Rect2i &rhs)#
group return_envelope

最小外接矩形

See also

envelope()

Functions

aidi::geometry::Rect2f return_envelope(const aidi::geometry::LineString2f &rhs)#
aidi::geometry::Rect2f return_envelope(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::Rect2f return_envelope(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::Rect2f return_envelope(const aidi::geometry::RotateRect2f &rhs)#
aidi::geometry::Rect2f return_envelope(const aidi::geometry::Ellipse2f &rhs)#
aidi::geometry::Rect2i return_envelope(const aidi::geometry::LineString2i &rhs)#
aidi::geometry::Rect2i return_envelope(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::Rect2i return_envelope(const aidi::geometry::Polygon2i &rhs)#
aidi::geometry::Rect2i return_envelope(const aidi::geometry::RotateRect2i &rhs)#
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:

bool

Functions

bool equals(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
bool equals(const aidi::geometry::Point2f &lhs, const aidi::geometry::Vector2f &rhs)#
bool equals(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
bool equals(const aidi::geometry::Point2i &lhs, const aidi::geometry::Vector2i &rhs)#
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::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool equals(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool equals(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool equals(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool equals(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool equals(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool equals(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool equals(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool equals(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool equals(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool equals(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool equals(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool equals(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool equals(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool equals(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool equals(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool equals(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool equals(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool equals(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool equals(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool equals(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool equals(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool equals(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool equals(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool equals(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool equals(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool equals(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool equals(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool equals(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool equals(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool equals(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool equals(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool equals(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool equals(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool equals(const aidi::geometry::Vector2f &lhs, const aidi::geometry::Point2f &rhs)#
bool equals(const aidi::geometry::Vector2f &lhs, const aidi::geometry::Vector2f &rhs)#
bool equals(const aidi::geometry::Vector2i &lhs, const aidi::geometry::Point2i &rhs)#
bool equals(const aidi::geometry::Vector2i &lhs, const aidi::geometry::Vector2i &rhs)#
bool equals(const aidi::geometry::Line2f &lhs, const aidi::geometry::Line2f &rhs)#
bool equals(const aidi::geometry::Line2i &lhs, const aidi::geometry::Line2i &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::MultiPolygon2f &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)#
void intersection(const aidi::geometry::Line2f &lhs, const aidi::geometry::Circle2f &rhs, aidi::geometry::MultiPoint2f &result)#
void intersection(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Line2f &rhs, aidi::geometry::MultiPoint2f &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::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::Point2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::Point2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::Point2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::Point2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::Point2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::Point2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::Point2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Point2f &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool intersects(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Point2i &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool intersects(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool intersects(const aidi::geometry::Line2f &lhs, const aidi::geometry::Line2f &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::Ring2f &rhs)#
bool is_empty(const aidi::geometry::Polygon2f &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::Ring2i &rhs)#
bool is_empty(const aidi::geometry::Polygon2i &rhs)#
bool is_empty(const aidi::geometry::MultiPoint2i &rhs)#
bool is_empty(const aidi::geometry::MultiPolygon2i &rhs)#
group is_rect

判断几何图像能否转换成矩形.

param ring:

Ring.

return:

true if Ring can be converted to Rect.

Functions

bool is_rect(const aidi::geometry::Ring2f &ring)#
bool is_rect(const aidi::geometry::Ring2i &ring)#
group is_axial_rect

判断几何图像能否转成平行坐标轴的矩形.

param ring:

Ring.

return:

true if Ring can be converted to Rect and Rect is parallel coordinate axis.

Functions

bool is_axial_rect(const aidi::geometry::Ring2f &ring)#
bool is_axial_rect(const aidi::geometry::Ring2i &ring)#
group is_rotate_rect

判断几何图像能否转成不平行坐标轴的矩形.

param ring:

Ring.

return:

true if Ring can be converted to Rect and Rect isnot parallel coordinate axis.

Functions

bool is_rotate_rect(const aidi::geometry::Ring2f &ring)#
bool is_rotate_rect(const aidi::geometry::Ring2i &ring)#
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::Ring2f &rhs)#
bool is_simple(const aidi::geometry::Polygon2f &rhs)#
bool is_simple(const aidi::geometry::LineString2i &rhs)#
bool is_simple(const aidi::geometry::Ring2i &rhs)#
bool is_simple(const aidi::geometry::Polygon2i &rhs)#
group return_is_simple

判断几何图形是否是简单几何图形

See also

is_simple()

param rhs:

线或多边形

return:

GeoIsSampleFailType 几何图形不为简单几何图形的错误信息

Functions

aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::LineString2f &rhs)#
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::LineString2i &rhs)#
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::GeoIsSampleFailType return_is_simple(const aidi::geometry::Polygon2i &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::Ring2f &rhs)#
bool is_valid(const aidi::geometry::Polygon2f &rhs)#
bool is_valid(const aidi::geometry::LineString2i &rhs)#
bool is_valid(const aidi::geometry::Ring2i &rhs)#
bool is_valid(const aidi::geometry::Polygon2i &rhs)#
group return_is_valid

判断几何图形数据是否有效

See also

is_valid()

See also

failure_type

param rhs:

线或多边形

return:

int32_t 几何图形数据失效的错误信息

Functions

int32_t return_is_valid(const aidi::geometry::LineString2f &rhs)#
int32_t return_is_valid(const aidi::geometry::LineString2i &rhs)#
int32_t return_is_valid(const aidi::geometry::Ring2f &rhs)#
int32_t return_is_valid(const aidi::geometry::Ring2i &rhs)#
int32_t return_is_valid(const aidi::geometry::Polygon2f &rhs)#
int32_t return_is_valid(const aidi::geometry::Polygon2i &rhs)#
group length

几何图形的长度

param rhs:

线或向量

LinearOrVector

LineString

Vector

return:

float

Functions

float length(const aidi::geometry::LineString2f &rhs)#
float length(const aidi::geometry::LineString2i &rhs)#
float length(const aidi::geometry::Vector2f &rhs)#
float length(const aidi::geometry::Vector2i &rhs)#
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

Ellipse

Functions

void min_area_rect(const aidi::geometry::Ring2f &lhs, aidi::geometry::RotateRect2f &rhs)#
void min_area_rect(const aidi::geometry::Polygon2f &lhs, aidi::geometry::RotateRect2f &rhs)#
void min_area_rect(const aidi::geometry::Ellipse2f &lhs, aidi::geometry::RotateRect2f &rhs)#
group return_min_area_rect

最小面积外接矩形

See also

min_area_rect()

Functions

aidi::geometry::RotateRect2f return_min_area_rect(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::RotateRect2f return_min_area_rect(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::RotateRect2f return_min_area_rect(const aidi::geometry::Ellipse2f &rhs)#
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:

bool

Functions

bool overlaps(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool overlaps(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool overlaps(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool overlaps(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool overlaps(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool overlaps(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool overlaps(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool overlaps(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool overlaps(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool overlaps(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
group perimeter

几何图形的周长

整型矩形的周长

param rhs:

多边形的周长

Areal

Ring

Polygon

Rect

RotateRect

Circle

param rhs:

整型矩形

return:

uint32_t 整型周长

Functions

float perimeter(const aidi::geometry::Ring2f &rhs)#
float perimeter(const aidi::geometry::Polygon2f &rhs)#
float perimeter(const aidi::geometry::Rect2f &rhs)#
float perimeter(const aidi::geometry::RotateRect2f &rhs)#
float perimeter(const aidi::geometry::Circle2f &rhs)#
float perimeter(const aidi::geometry::Ring2i &rhs)#
float perimeter(const aidi::geometry::Polygon2i &rhs)#
float perimeter(const aidi::geometry::RotateRect2i &rhs)#
float perimeter(const aidi::geometry::Circle2i &rhs)#
uint32_t perimeter(const aidi::geometry::Rect2i &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

Functions

void reverse(aidi::geometry::LineString2f &rhs)#
void reverse(aidi::geometry::Ring2f &rhs)#
void reverse(aidi::geometry::Polygon2f &rhs)#
void reverse(aidi::geometry::LineString2i &rhs)#
void reverse(aidi::geometry::Ring2i &rhs)#
void reverse(aidi::geometry::Polygon2i &rhs)#
group return_reverse

翻转几何图形数据顺序

See also

reverse()

Functions

aidi::geometry::LineString2f return_reverse(const aidi::geometry::LineString2f &rhs)#
aidi::geometry::Ring2f return_reverse(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::Polygon2f return_reverse(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::LineString2i return_reverse(const aidi::geometry::LineString2i &rhs)#
aidi::geometry::Ring2i return_reverse(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::Polygon2i return_reverse(const aidi::geometry::Polygon2i &rhs)#
group simplify

简化几何图形

采用Douglas-Peucker算法进行多边形逼近,小于阈值则被删除.

Warning

结果会被强制改为闭包.

param lhs:

线或多边形

param rhs:

阈值

Functions

void simplify(aidi::geometry::LineString2f &lhs, const float &rhs)#
void simplify(aidi::geometry::Ring2f &lhs, const float &rhs)#
void simplify(aidi::geometry::Polygon2f &lhs, const float &rhs)#
void simplify(aidi::geometry::LineString2i &lhs, const float &rhs)#
void simplify(aidi::geometry::Ring2i &lhs, const float &rhs)#
void simplify(aidi::geometry::Polygon2i &lhs, const float &rhs)#
group return_simplify

简化几何图形

See also

simplify()

Functions

aidi::geometry::LineString2f return_simplify(const aidi::geometry::LineString2f &lhs, const float &rhs)#
aidi::geometry::Ring2f return_simplify(const aidi::geometry::Ring2f &lhs, const float &rhs)#
aidi::geometry::Polygon2f return_simplify(const aidi::geometry::Polygon2f &lhs, const float &rhs)#
aidi::geometry::LineString2i return_simplify(const aidi::geometry::LineString2i &lhs, const float &rhs)#
aidi::geometry::Ring2i return_simplify(const aidi::geometry::Ring2i &lhs, const float &rhs)#
aidi::geometry::Polygon2i return_simplify(const aidi::geometry::Polygon2i &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)#
void sym_difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
void sym_difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
group return_sym_difference

几何图形之间的对称差

See also

sym_difference()

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::MultiPolygon2i return_sym_difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
aidi::geometry::MultiPolygon2i return_sym_difference(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &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:

bool

Functions

bool touches(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool touches(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool touches(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool touches(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool touches(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool touches(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool touches(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool touches(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
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)#
void union_areal(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs, aidi::geometry::MultiPolygon2i &result)#
void union_areal(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs, aidi::geometry::MultiPolygon2i &result)#
group return_union_areal

多边形之间的并集

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::MultiPolygon2i return_union_areal(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
aidi::geometry::MultiPolygon2i return_union_areal(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
group unique

去除几何图形中重复节点

param rhs:

线或多边形

LinearOrAreal

LineString

Ring

Polygon

Functions

void unique(aidi::geometry::LineString2f &rhs)#
void unique(aidi::geometry::Ring2f &rhs)#
void unique(aidi::geometry::Polygon2f &rhs)#
void unique(aidi::geometry::LineString2i &rhs)#
void unique(aidi::geometry::Ring2i &rhs)#
void unique(aidi::geometry::Polygon2i &rhs)#
group return_unique

去除几何图形中重复节点

See also

unique()

Functions

aidi::geometry::LineString2f return_unique(const aidi::geometry::LineString2f &rhs)#
aidi::geometry::Ring2f return_unique(const aidi::geometry::Ring2f &rhs)#
aidi::geometry::Polygon2f return_unique(const aidi::geometry::Polygon2f &rhs)#
aidi::geometry::LineString2i return_unique(const aidi::geometry::LineString2i &rhs)#
aidi::geometry::Ring2i return_unique(const aidi::geometry::Ring2i &rhs)#
aidi::geometry::Polygon2i return_unique(const aidi::geometry::Polygon2i &rhs)#
group within

第一个几何图形是否在第二个几何图形内部

  • 区别于 covered_by() 当第一个几何图形的顶点落在第二个几何图形边上时,返回false.

  • 当第二个几何图形的顶点落在第一个几个图像边上时(例如第二个几何图形是凹多边形),返回true.

    See also

    covered_by()

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:

bool

Functions

bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::Point2f &rhs)#
bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::Point2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::Point2i &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::Point2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::LineString2f &rhs)#
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::LineString2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::LineString2i &rhs)#
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::LineString2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool within(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::Ring2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::Ring2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::Ring2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::Ring2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool within(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::Polygon2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::Polygon2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool within(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::Rect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::Rect2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::Rect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::Rect2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool within(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::RotateRect2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::RotateRect2i &lhs, const aidi::geometry::Circle2i &rhs)#
bool within(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Ring2f &rhs)#
bool within(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Polygon2f &rhs)#
bool within(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Rect2f &rhs)#
bool within(const aidi::geometry::Circle2f &lhs, const aidi::geometry::RotateRect2f &rhs)#
bool within(const aidi::geometry::Circle2f &lhs, const aidi::geometry::Circle2f &rhs)#
bool within(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Ring2i &rhs)#
bool within(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Polygon2i &rhs)#
bool within(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Rect2i &rhs)#
bool within(const aidi::geometry::Circle2i &lhs, const aidi::geometry::RotateRect2i &rhs)#
bool within(const aidi::geometry::Circle2i &lhs, const aidi::geometry::Circle2i &rhs)#
group transform_rotate

Geometry rotate transform.

Cartesian coordinate system(the origin of the first quadrant is in

the lower left corner), follow

Radian

definition direction.

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

Ellipse

Vector

Segment

MultiPoint

MultiPolygon

param radian:

Rotation radian.

return:

The result is consistent with the input geometry.

param rect:

Rect.

param radian:

Rotation radian.

return:

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::Ellipse2f transform_rotate(const aidi::geometry::Ellipse2f &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)#
aidi::geometry::RotateRect2f transform_rotate(const aidi::geometry::Rect2f &rect, 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

Ellipse

Vector

Segment

MultiPoint

MultiPolygon

param ratiox:

Scaling ratio direction-x.

param ratioy:

Scaling ratio direction-y.

return:

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:

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::Ellipse2f transform_scale(const aidi::geometry::Ellipse2f &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)#
aidi::geometry::Ring2f transform_scale(const aidi::geometry::RotateRect2f &rotate_rect, float ratiox, float ratioy)#
group transform_translate

Geometry translate transform.

param geometry:

Geometry.

Geometry

Point

LineString

Ring

Polygon

Rect

RotateRect

Ellipse

Vector

Segment

MultiPoint

MultiPolygon

param directx:

Translation transform direction-x.

param directy:

Translation transform direction-y.

return:

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::Ellipse2f transform_translate(const aidi::geometry::Ellipse2f &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:

the result is consistent with the input geometry.

param rect:

Rect.

param mat:

Transformation matrix.

return:

the result is Ring.

param rotate_rect:

RotateRect.

param mat:

Transformation matrix.

return:

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)#
aidi::geometry::Ring2f transform(const aidi::geometry::Rect2f &rect, const aidi::geometry::Matrix3f &mat)#
aidi::geometry::Ring2f transform(const aidi::geometry::RotateRect2f &rotate_rect, 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:

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:

transformation matrix.

Matrix3f aidi::geometry::get_inverse_transform(const Matrix3f &mat)#

Get inverse transform matrix.

Parameters:

mat – Source matrix.

Returns:

inverse transform matrix.

Matrix3f aidi::geometry::get_rotate_transform(const Radian &radian)#

Get rotate transform matrix.

Follow Radian definition direction.

Parameters:

radian – Rotation radian.

Returns:

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:

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:

translate transform matrix

using aidi::geometry::Rect2f::Size = Size2f#
using aidi::geometry::Rect2i::Size = Size2i#
using aidi::geometry::MultiPoint2f::Point = Point2f#
using aidi::geometry::MultiPoint2i::Point = Point2i#
using aidi::geometry::MultiPolygon2f::Polygon = Polygon2f#
using aidi::geometry::MultiPolygon2i::Polygon = Polygon2i#