3d 适合一组方向的最紧圆锥

3d 适合一组方向的最紧圆锥,3d,geometry,data-fitting,3d,Geometry,Data Fitting,给定3Dd_1,…,d_n中的一组单位方向 如何找到他们周围最紧的圆锥体 例如,如何找到另一个单位向量m,以及表示角度的标量值alpha,例如: 对于每个i,角度介于(m,d\u i)=cos(a) px*d2x+py*d2y*pz*d2z>=cos(a) … px*dnx+py*dny*pz*dnz>=cos(a) 我会研究LP算法。同时,我解决了一个非常类似的问题,这可能是一个起点:。你是对的,一旦你找到了凸包,你就可以找到最小的外接圆。但事实证明,证明n个点位于同一个半球并非易事。也许可以

给定3Dd_1,…,d_n中的一组单位方向

如何找到他们周围最紧的圆锥体

例如,如何找到另一个单位向量m,以及表示角度的标量值alpha,例如:

对于每个i,角度介于(md\u i)<alpha

α最小


添加注释:方向可以跨越一半以上的空间。在这种情况下,对于“圆锥”,我们指的是从圆锥顶点开始并与圆锥轴在给定角度内的一组半线

如果方向集都位于原点的一个半空间内,则可以计算单位半径球体上向量尖端的凸包,从而在该球体上生成一个凸多边形,然后找到包围该多边形的最小圆。通过投影到合适的平面,可以避免球形计算

我意识到这是一个抽象的视图,您可能需要更具体的建议,但它仍然可能有帮助:凸包+最小外接圆


如果方向集跨越一个以上的半空间,那么在这种情况下,您需要定义“圆锥体”的含义。

这是一个线性规划问题

查找a,p(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算法。同时,我解决了一个非常类似的问题,这可能是一个起点:。你是对的,一旦你找到了凸包,你就可以找到最小的外接圆。但事实证明,证明n个点位于同一个半球并非易事。也许可以根据您的“最小圆锥体”问题定制此算法。

谢谢!减少到2D也是我最初的选择。不幸的是,我的方向跨越了一个以上的半空间……当方向跨越了一个以上的半空间时,在单位球体上找到一个最大的圆,它没有任何方向的尖端。定义外部空圆锥体的。你想要的圆锥体是它的补充。