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

标签 algorithm computational-geometry points convex concave

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

它的形状总是或多或少像“海鸥翅膀”,“M”型,带有两个凸起和中间的“谷”。它在空间中的朝向是任意的,不能保证截面中只有中心谷是凹面。

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

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

enter image description here

我相信叉积是找出三个点是“凹”还是“凸”的好方法,但还没有弄清楚如何执行循环(如何开始,递增什么,何时递增)停止)。

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

最佳答案

确定顶点的凸包。不属于凸包顶点的顶点序列对应于凹面。根据您的描述,听起来总是只有一个凹面。凹性顶点序列的第一个和最后一个顶点就是你要找的直线的端点。

关于algorithm - 在由 (x,y) 点定义的折线中查找双切线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24213351/

相关文章:

algorithm - 盒子中所有点对的切线范围

javascript - 在 Javascript 中将像素存储在椭圆形中的算法是什么?

python - 将tensorflow object detection api与opencv的centroid tracking算法集成

ruby - 给定一组人,其中每一对都有一个值,我如何找到总值最小的配对配置?

python - 线性搜索给定数组以给出所需的元素索引

computational-geometry - vtk中顶点和点的区别

c++ - 二维平铺世界中矩形的并集

algorithm - 大整数的除法(模数)(最多 200 位)

ios - 处理 iPhone 5、6 和 6 Plus 的高度和宽度尺寸(磅)

c# - 查找 2 个数组中 2 个点之间的最小距离