gpt4 book ai didi

algorithm - 凸包排序步骤

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:06 27 4
gpt4 key购买 nike

我正在阅读格雷厄姆扫描算法以从 CLRS 中找到凸包。Convex hull在CLRS中给出的算法是::

enter image description here

我无法理解这一行(算法的第 2 步):

If two or more points have the same polar angle relative to p0, all but the farthest such point are convex combinations of p0 and the farthest point, and so we remove them entirely from consideration.

  1. 这是什么意思?多个点相对于 Po 的极角相同怎么办?

还可以说,我做了一个结构

struct points
{
int x, y;
} P[10000];
  1. 我应该如何使用 C++ STL 库实现排序步骤?我的意思是,我应该如何在 sort(P+1, P+N, comparator) 中定义 comparator 函数?

最佳答案

What does this mean,what should i do if more than one points have the same polar angle with respect to Po?

假设 P0(0,0),P1(1,1) P2(2,2)。现在 P1 和 P2 相对于 P0 有相同的角度,在这种情况下你丢弃 P1 .如果 P0 和 P2 之间有更多点具有相同的角度,则丢弃除 P2 之外的所有(当然还有 P0)。

How should i implement the sorting step using C++ STL (sort function in Algorithm ) Library?Especially i mean sort(P+1,P+N,comparator). How should I define the comparator function?

不太熟悉 C++ (STL),但请检查它是否有您可以使用的 atan2 函数。另见:Find angle between two points, respective to horizontal axis?How to calculate the angle between a line and the horizontal axis?

关于algorithm - 凸包排序步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11466802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com