当前位置:网站首页>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
边栏推荐
- Qt practical cases (54) - using transparency QPixmap design pictures
- 工程流体力学复习
- 第05章 存储引擎【1.MySQL架构篇】【MySQL高级】
- jeecg master-slave database read-write separation configuration "recommended collection"
- 7、常见面试口语提问问题汇总
- 工程水文学试卷
- Oracle dynamically registers non-1521 ports
- Why don't you make a confession during the graduation season?
- mysql black window ~ build database and build table
- border控件的使用
猜你喜欢
随机推荐
"Autumn Recruitment Series" MySQL Interview Core 25 Questions (with answers)
更新数据表update
Tencent Cloud Deployment----DevOps
Why don't you make a confession during the graduation season?
基于ABP实现DDD
Deployment application life cycle and Pod health check
WPF project - basic usage of controls entry, you must know XAML
ML.NET related resources
After Grafana is installed, the web opens and reports an error
jeecg master-slave database read-write separation configuration "recommended collection"
update data table update
Destruction order of thread_local variables
BGP综合实验(建立对等体、路由反射器、联邦、路由宣告及聚合)
type of timer
Synchronized and volatile interview brief summary
Internet banking stolen?This article tells you how to use online banking safely
Emmet 语法
MySQL的相关问题
Replication Latency Case (3) - Monotonic Read
OPPO在FaaS领域的探索与思考









