我想解析以蓝色显示的以下多边形,从多边形中删除导致凹陷的所有点.

目前,我一直试图做的是:
这在大多数情况下都有效,但在前一种情况下,(2,3)和(2,4)处的点都不会被删除.在这两种情况下,其中一个点将被删除,但另一个点将不依赖于传入数组的顺序.
我想知道的是:
谢谢.
geometry convex-optimization convex-polygon computational-geometry
我有一些很好的C代码,但我不明白代码的一部分.在这一部分中,它传递一个方法,指向二维数组,只指定了一个维度.
这里是:
if (cmppt(pts[i*3], pts[hull*3]))
hull = i;
Run Code Online (Sandbox Code Playgroud)
方法cmppt看起来像这样:
inline bool cmppt(const float* a, const float* b) {
if (a[0] < b[0]) return true;
if (a[0] > b[0]) return false;
if (a[2] < b[2]) return true;
if (a[2] > b[2]) return false;
return false;
}
Run Code Online (Sandbox Code Playgroud)
数组pts是二维数组.我的问题是,当方法传递给两个数组时,例如pts [3]和pts [0]我怎么知道它看到的数组的哪个部分?似乎pts [0]查看数组第一维的第一个元素,而pts [3]查看数组第一维的第二个元素,但这没有意义.
谢谢