计算几何:算法与应用
文章平均质量分 60
IndeReChill
这个作者很懒,什么都没留下…
展开
-
Convex Hull:O(n^4)算法
课程:计算几何书籍:计算几何:算法与应用极点:构成凸包的顶点,它具有这样的性质:经过该点,总能找到一条直线,使得其他所有点都在该直线的同一侧。根据该思路,极点不会处于其他顶点所构成的三角形内部。因此我们只需要所有点进行它是否在其他顶点所组成的三角形内部做判断,即可得出所有的极点。如何判断一个点是否在三角形内:按逆时针方向去看三角形的边,如果一个点在三角形内部,则该点总在三角...原创 2018-06-22 21:19:24 · 486 阅读 · 0 评论 -
计算几何---ToLeftTest
计算几何—ToLeftTest标签(空格分隔): 计算几何问题场景ToLeftTest用于片段一个点在一个向量的左侧还是右侧(或者在向量所在的直线上)。 《计算几何–算法与应用》第一章中用于确定凸包的边。如图,灰色的线段即为凸包的边,也称为极边。 极边都会有一个性质,那就是:除了极边的两个端点,其余的顶点全部都在极边的左边/右边(或者上)。如何判断其余所有顶点在边的...原创 2018-04-20 21:50:07 · 2981 阅读 · 0 评论 -
Convex Hull:O(n^3)算法
课程:计算几何书籍:计算几何:算法与应用极边:对凸包有贡献的那些边。从Counter Clockwise来看,所有点都会落在极边的左侧(或者在极边上),而右侧为空。根据该思路,我们只需判断任意两点所构成的边是否为极边,即其他点是否都在同一侧(后者在边上)。判断点在边上的哪一侧,我们仍然使用O(n^4)算法中的ToLeft测试。代码: Patch.h与O(n^4)算法算...原创 2018-06-22 22:30:23 · 518 阅读 · 0 评论 -
Convex Hull:O(n^2)算法
课程:计算几何书籍:计算几何:算法与应用采用一种增量式(Incremental)的思维。考虑在已有的凸包上,在添加一个新的顶点,应该如何操作。 我们可以从新增的点向凸包引射线,我们能找到新增点与凸包的两个切点:s和t,s和t将凸包分成两段。其中有一段上的凸包顶点是需要更新的,另一段上的凸包顶点是需要保留的。具体的怎么判断请大家自行观看上述计算几何课程代码: Point....原创 2018-06-23 19:07:14 · 357 阅读 · 0 评论 -
Convex Hull:O(h*n)算法 Jarvis March
课程:计算几何书籍:计算几何:算法与应用Jarvis March算法也是一种递增式的思路。以极边的一个端点为起点,来查找另一条极边。以此进行下去,最后构成一个环路时(极点的末端等于最初的起始端点)。凸包构造结束。关于以一个极边为起始点的一天极边。可以用ToLeft测试进行比较,就如同O(n^2)中对点集逆时针排序那样。关于如何确定起始点,我们选取字典序最小的点作为起始点(Y值最...原创 2018-06-23 23:48:46 · 744 阅读 · 0 评论 -
Convex Hull:O(n * log(n))算法 Graham Scan
课程:计算几何书籍:计算几何:算法与应用具体思路请自行观看上述的课程。 这里具体讲一下顶点集的排序: 我们通过X轴从大到小排序,然后运用Graham Scan算法可以得出构成上凸包的顶点。 然后逆序顶点顺序,运用Graham Scan算法可以得出构成下凸包的顶点。 结合两者,去掉重复点,即可得到构成整个凸包的顶点。Point.h与之前一样Main.cpp/*...原创 2018-07-03 11:50:58 · 487 阅读 · 0 评论 -
Geomentric Intersection:O( (n+k) * log(n))算法 Bentiey & Ottmann Algorithm
Geomentric Intersection:O( (n+k) * log(n))算法 Bentiey & Ottmann Algorithm标签: 计算几何课程:计算几何:Geometric Intersection书籍:计算几何:算法与应用BO算法用于求解线段组中所有的交点。在实现中,我忽略了课程中邓老师所描述的退化情况。实现: POINT_H...原创 2018-08-02 14:04:15 · 647 阅读 · 1 评论