在由(x,y)点定义的折线中找到双切线

时间:2014-06-13 20:26:35

标签: algorithm computational-geometry points convex concave

我有`System.Windows.Media.Point3D集合,表示自由形式对象的横截面。

它总是或多或少的形状像“海鸥翅膀”,“M”图案,两个凸起的凸起和中间的“山谷”。它在空间中的方向是任意的,并且不能保证中央山谷是横截面中唯一的凹陷。

我已经有一种方法可以检测到一个保证位于这些山谷之间的点,现在我想找到一对代表中心点周围“双切线”的点,即两个点使每个其他点保持在同一侧,并且也循环起点。

下面的图显示了我想要实现的目标:

enter image description here

我相信交叉产品是一个好方法,可以找出三个点是“凹”还是“凸”,但还没弄明白如何执行循环(如何开始,增加什么,何时到停止)。

另外,虽然我可以使用蛮力(不是那么多点),但这肯定会伤害我的感情。

1 个答案:

答案 0 :(得分:1)

确定顶点的凸包。不是凸包顶点的一部分的顶点序列对应于凹面。根据您的描述,听起来总是会有一个凹面。顶点凹面序列的第一个和最后一个顶点是您要查找的线的端点。