给出了一组3D d_1,.,d_n,
如何找到他们周围最紧的圆锥体?
例如,如何找到另一个单位向量m,以及表示角度的标量值alpha,这样:
AngleBetween(m,d_i) < alpha
α最小。
注意:方向可以跨越一半以上的空间。在这种情况下,“锥”,我们指的是从锥顶点开始,在一个给定的角度内从锥轴开始的一组半边。
发布于 2013-01-03 06:19:41
如果你的方向集都在一个半空间内,穿过原点,那么你就可以计算单位半径球面上向量尖端的凸包,它在那个球面上产生一个凸多边形,然后找出最小的圆来限制这个多边形。你可以通过投影到一个合适的平面来避免球面计算。
我意识到这是一个抽象的视图,您可能需要更多具体的建议,但它仍然可能有帮助:凸包+最小的限定圆。
如果您的方向集跨度超过一半空间,那么在这种情况下您需要定义您所说的“锥形”是什么意思。
发布于 2014-08-29 10:34:45
这是一个线性规划问题。
查找a,p最大化cos(a),但以:
px*d1x+py*d1y*pz*d1z >= cos(a)
px*d2x+py*d2y*pz*d2z >= cos(a)
..。
px*dnx+py*dny*pz*dnz >= cos(a)
我会研究LP算法。同时,我解决了一个非常类似的问题,可能是一个起点:https://github.com/VictorDavis/GeoConvexHull。你是对的,一旦你找到凸包,你就可以找到最小的外接圆。然而事实证明,证明n个点位于同一个半球是不平凡的。也许这个算法可以根据你的“最小锥”问题量身定做。
https://stackoverflow.com/questions/14138673
复制