当前位置:网站首页>Graham's Scan method for solving convex hull problems
Graham's Scan method for solving convex hull problems
2022-07-31 15:54:00 【Yasen Jia】
Question background
- About the convex hull
Assuming that there are 13 points p0~p12 on the plane, make a polygon through some points, so that this polygon can "enclose" all the points, when the polygon is a convex polygon,We call this the "convex hull" - Convex Hull Problem
On a two-dimensional coordinate system, each point can be represented by coordinates (x,y)
Given the number of points and the coordinates of each point, find the points that form the convex hull
Graham’s Scan method
Find a point on the convex hull first, and start from that point to find the points on the convex hull one by one in a counterclockwise direction
Steps
Put all points in the two-dimensional coordinate system, then the point with the smallest ordinate must be the point on the convex hull, as shown in the figure p0
Translate the coordinates of all points to make p0 as the origin, as shown above
Calculate the argument of each point with respect to p0 α \alpha α, sorts the points in ascending order of argument.When α \alpha α When the points are the same, the points closer to p0 are ranked first.For example, the results obtained in the above figure are p1, p2, p3, p4, p5, p6, p7, p8.It can be known from geometric knowledge that the first point p1 and the last point p8 must be points on the convex hull
Now that we know the first point p0 and the second point p1 on the convex hull, we put them on the stack in turn.
Initialize the current point to p2, and perform the following operations:
a. Determine the difference between the vector formed by the two points at the top of the stack and the vector formed by the stack vertex and the current pointWhether the relationship is counterclockwise, that is, whether the vector obtained after the cross product is counterclockwise.(Another formulation of this question is to connect two points at the top of the stack to get a straight line to see if the current point is to the left of the straight line)b. If so, the current point is the point on the convex hull, and it is pushed into the stack.And take the next point in the sorting as the current point, and continue to judge a until all points are traversed.c. If not, the top element of the stack is not a point on the convex hull, and the top element of the stack is popped.The current point remains unchanged, and the judgment of a continues until it is a counterclockwise relationship.
After the final traversal, the elements in the stack are the points that form the convex hull
Flowchart
Code Link
边栏推荐
猜你喜欢
外媒所言非虚,苹果降价或许是真的在清库存
6-22 Vulnerability exploit - postgresql database password cracking
对话庄表伟:开源第一课
基于ABP实现DDD
BGP综合实验(建立对等体、路由反射器、联邦、路由宣告及聚合)
01 邂逅typescript,环境搭建
mysql black window ~ build database and build table
工程力学复习资料
What is the difference between BI software in the domestic market?
TRACE32 - Common Operations
随机推荐
C程序是如何跑起来的01 —— 普通可执行文件的构成
What is the difference between BI software in the domestic market?
Qt实战案例(54)——利用QPixmap设计图片透明度
MySQL的相关问题
mysql黑窗口~建库建表
多主复制的适用场景(2)-需离线操作的客户端和协作编辑
多主复制下处理写冲突(4)-多主复制拓扑
网银被盗?这篇文章告诉你如何安全使用网银
[Meetup Preview] OpenMLDB+OneFlow: Link feature engineering to model training to accelerate machine learning model development
.NET 20周年专访 - 张善友:.NET 技术是如何赋能并改变世界的
Codeforces Round #796 (Div. 2)(A-D)
arm按键控制led灯闪烁(嵌入式按键实验报告)
Implementing click on the 3D model in RenderTexture in Unity
腾讯云部署----DevOps
对话庄表伟:开源第一课
Doing things software development - the importance of law and understanding of reasonable conclusions
C language - function
Synchronized and volatile interview brief summary
T - sne + data visualization parts of the network parameters
ASP.NET Core 产生连续 Guid