![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
部分平面几何算法的C++实现
.猪饲料.
这个作者很懒,什么都没留下…
展开
-
多边形布尔运算(2)
本文给出多边形布尔运算的实现,采用的算法在一文介绍。首先定义MarkedPoint结构体作为辅助数据结构,其定义如下:其中original表示多边形原始的点,即非交点;value是点的几何数。原创 2024-04-30 08:42:09 · 128 阅读 · 0 评论 -
多边形布尔运算(1)
两平面向量交点的几何数的绝对值取1,这两个向量在该交点处各有一个几何数,其正负号由向量的旋向决定——记这两个平面向量分别为P1和P2,若从P2旋转到P1为逆时针,则P1在该交点处的几何数为-1,则P2在该交点处的几何数为+1;其中O(n1×n2)是关键的复杂度,算法的主要开销在计算交点,交点计算的复杂度决定了整个算法的复杂度,算法的优化也取决于交点计算,尽量避免不必要的交点计算操作是很重要的。一般地,当其中一个多边形的环中无几何数不为0的点时,即一个多边形的环中无交点时,便是计算得到了所有的环。原创 2024-04-30 08:38:25 · 1678 阅读 · 1 评论 -
多边形耳切算法
将多边形转为三角形集合的算法。原创 2024-04-29 13:15:36 · 297 阅读 · 0 评论 -
相交判断算法
提供参数inside决定一个AABB矩形包含在另一个AABB矩形中时是否算相交。提供inside参数决定多边形包含在圆内部或圆包含在多边形内部是否算相交。提供inside参数决定一个多边形包含在另一个多边形内部是否算相交。多边形完全在AABB矩形内或AABB矩形完全在多边形内也算相交。提供inside参数决定多段线完全在多边形内部时是否算相交。提供inside参数决定一个圆包含在另一个圆中是否算相交。圆完全在AABB矩形内或AABB矩形完全在圆内也算相交。多段线完全在AABB矩形内也算相交。原创 2024-04-29 13:11:49 · 284 阅读 · 0 评论 -
线段部分重合与完全重合判断算法
判断两线段是否有重合:仅有一个端点重合不算两线段重合,完全重合也算重合。原创 2024-04-29 13:06:16 · 170 阅读 · 0 评论 -
平行、矩形、左侧判断算法
平行、矩形、左侧判断算法。原创 2024-04-29 13:04:39 · 93 阅读 · 0 评论 -
判断在几何对象内算法
判断一个三角形是否完全在另一个三角形内部:与三角形相交或有顶点在三角形上均不算在三角形内部。判断有限长线段是否完全在三角形内:线段与三角形相交或有端点在三角形上均不算在三角形内部。判断点是否在多边形内:coincide决定是否包含点在多边形上的情况。判断点是否在三角形内:coincide决定是否包含点在三角形上的情况。判断点是否在AABB矩形内:coincide决定是否包含点在AABB矩形上的情况。判断点是否在圆内:coincide决定是否包含点在圆上的情况。原创 2024-04-29 13:02:15 · 137 阅读 · 0 评论 -
距离算法
点到直线距离:如果为有限长线段且垂足不在线段上,则计算点到线段端点距离。点到多段线距离:计算点到每一段有限长线段的距离,取最近距离。点到多边形距离:计算点到每一段有限长线段的距离,取最近距离。原创 2024-04-29 12:59:11 · 175 阅读 · 0 评论 -
基本几何对象(9)——Bezier
定义Bezier类,这是为了能绘制曲线才定义的类。Bezier对象中有一个Polyline对象来表示贝塞尔曲线的形状,而Bezier本身的点则表示控制点。为了降低性能开销,仅在构造Bezier和修改Bezier控制点时重新计算贝塞尔曲线的形状,变换Bezier时,分别对Bezier本身的点和其中的Polyline的点做变换,而不重新计算形状。下面给出Bezier的声明。下面给出Bezier的实现。原创 2024-04-29 12:55:32 · 104 阅读 · 0 评论 -
基本几何对象(8)——Line
定义Line类,表示有限长的线段或无限长的直线,但这个类很少用,因为通常都是直接用两点表示Line了。下面给出Line的声明。下面给出Line的实现。原创 2024-04-29 12:50:55 · 78 阅读 · 0 评论 -
基本几何对象(7)——Circle
定义Circle类,用圆心和半径表示圆。下面给出Circle的声明。下面给出Circle的实现。原创 2024-04-29 12:54:00 · 73 阅读 · 0 评论 -
基本几何对象(6)——Triangle
定义Triangle类,用于多边形的三角耳切。下面给出Triangle的声明。下面给出Triangle的实现。原创 2024-04-29 12:49:22 · 81 阅读 · 0 评论 -
基本几何对象(5)——Polygon
定义Polygon类,作为多边形,这是一个常用的几何对象。Polygon是有相同首尾点的Polyline,因此我选择在Polyline的尾部添加一个和头部点相同的点作为尾部点,而非像某些实现那样在获取第尾部点时返回头部点。下面给出Polygon的声明。下面给出Polygon的实现。原创 2024-04-29 12:47:33 · 205 阅读 · 0 评论 -
基本几何对象(4)——Polyline
定义Polyline类,作为多段线,这回是一个常用的几何对象。下面给出Polyline的声明。下面给出Polyline的实现。原创 2024-04-29 12:00:07 · 82 阅读 · 0 评论 -
基本几何对象(3)——AABBRect
定义AABBRect类,通常用于表示其他几何对象的AABB外接矩形,用于相交的快速判断。下面给出AABBRect的声明。下面给出AABBRect的实现。原创 2024-04-29 11:58:28 · 71 阅读 · 0 评论 -
基本几何对象(2)——Point
定义Point类,即点,同时也可以作为平面向量使用。Point的加减乘除是作为向量的加减乘除。下面给出Point的声明。下面给出Point的实现。原创 2024-04-29 11:55:12 · 104 阅读 · 0 评论 -
基本几何对象(1)——Geometry
定义基础的Geometry类,作为所有几何类的基类,方便用Geometry指针进行统一操作:长度、空判别、清空、克隆、变换、旋转、平移、缩放、凸包、外接AABB矩形、最小外界矩形。Geometry定义了type()虚函数,返回一个枚举值,表示Geometry指针所指向对象的实际类型,下面给出枚举值的定义。另外,在计算时还依赖如圆周率这样的常数,下面列出所有用到的常数。下面给出Geometry的声明。下面给出Geometry的实现。原创 2024-04-29 11:53:33 · 176 阅读 · 0 评论