当前位置:网站首页>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
边栏推荐
- 7、常见面试口语提问问题汇总
- WPF项目--控件入门基础用法,必知必会XAML
- 在资源管理类中提供对原始资源的访问——条款15
- Applicable scenario of multi-master replication (2) - client and collaborative editing that require offline operation
- MySQL的相关问题
- Delete table data or clear table
- Kubernetes原理剖析与实战应用手册,太全了
- Browser's built-in color picker
- Synchronized and volatile interview brief summary
- The use of border controls
猜你喜欢

Use of radiobutton

tooltips使用教程(鼠标悬停时显示提示)

国内市场上的BI软件,到底有啥区别

How useful is four-quadrant time management?

6-22漏洞利用-postgresql数据库密码破解

WPF项目--控件入门基础用法,必知必会XAML

TRACE32 - C source code association

苹果官网样式调整 结账时产品图片“巨大化”

"Autumn Recruitment Series" MySQL Interview Core 25 Questions (with answers)

Visualize GraphQL schemas with GraphiQL
随机推荐
Implement anti-shake and throttling functions
WPF项目--控件入门基础用法,必知必会XAML
[Meetup Preview] OpenMLDB+OneFlow: Link feature engineering to model training to accelerate machine learning model development
字符串反转的实现方法总结「建议收藏」
form 表单提交后,使页面不跳转[通俗易懂]
tooltips使用教程(鼠标悬停时显示提示)
OPPO在FaaS领域的探索与思考
Website vulnerability repair service provider's analysis of unauthorized vulnerability
C语言”三子棋“升级版(模式选择+AI下棋)
Kubernetes原理剖析与实战应用手册,太全了
C程序是如何跑起来的01 —— 普通可执行文件的构成
Single-cell sequencing workflow (single-cell RNA sequencing)
基于ABP实现DDD
网银被盗?这篇文章告诉你如何安全使用网银
Kubernetes common commands
The principle of hough transform detection of straight lines (opencv hough straight line detection)
Dialogue with Zhuang Biaowei: The first lesson of open source
radiobutton的使用
Why is the field of hacking almost filled with boys?
[MySQL] Mysql paradigm and the role of foreign keys