我希望将一个多面体(对象)放入另一个多面体(容器)中。两个多面体都是凸的,由一组点和三角形定义。容器大小固定。对象可以缩放,并严格位于容器内。我希望计算出使对象最大的位置和方向。近似和高效的解决方案也可行。
有什么建议吗?非常感谢。
有什么建议吗?非常感谢。
基于椭球体的快速且次优解建议:
对于两个顶点集,以重心为中心并通过计算惯性等效椭球来归一化坐标,从而得到更各向同性的集合。
对于外部集合,找到面和原点之间的最短距离;对于内部集合,找到距离一个顶点最远的距离。这给你两个球,一个是封闭的,一个是包围的。
现在将封闭的球体变换到包围球的坐标系中,得到一个椭球体:椭球体的长轴告诉你可以膨胀多少才能适应球体。
如果多面体倾斜,则此近似可能很差。
您可以通过从内部多面体的中心绘制射线穿过所有顶点,并击中外部多面体,可能会给您提供额外的增长因子,稍微改善此解决方案。
如果时间允许,另一个建议:
对于外部多面体的固定姿态,内部多面体的姿态由围绕任意中心的3个平移和3个旋转参数(如欧拉角)定义。
当这些参数固定时,从中心通过内部顶点投射射线直到击中外部多面体,可以得到允许的缩放因子。
现在,问题被重新制定为6个变量函数的最大化问题,可能会出现局部最大值。这可以通过Hooke&Jeeves步骤、上山下山法(Nelder-Mead)和/或模拟退火来解决。
我不建议从我的其他答案中找到解决方案并保持接近它,因为您可能会陷入局部最大值。