我有`System.Windows.Media.Point3D集合,表示自由形式对象的横截面。
它总是或多或少的形状像“海鸥翅膀”,“M”图案,两个凸起的凸起和中间的“山谷”。它在空间中的方向是任意的,并且不能保证中央山谷是横截面中唯一的凹陷。
我已经有一种方法可以检测到一个保证位于这些山谷之间的点,现在我想找到一对代表中心点周围“双切线”的点,即两个点使每个其他点保持在同一侧,并且也循环起点。
下面的图显示了我想要实现的目标:
我相信交叉产品是一个好方法,可以找出三个点是“凹”还是“凸”,但还没弄明白如何执行循环(如何开始,增加什么,何时到停止)。
另外,虽然我可以使用蛮力(不是那么多点),但这肯定会伤害我的感情。
答案 0 :(得分:1)
确定顶点的凸包。不是凸包顶点的一部分的顶点序列对应于凹面。根据您的描述,听起来总是会有一个凹面。顶点凹面序列的第一个和最后一个顶点是您要查找的线的端点。