我想将一个多面体(Object)放到另一个(Container)中。两个多面体都是凸的,由一组点和三角形定义。容器具有恒定的尺寸。对象可以缩放,并且应该严格在容器内。我想计算物体的位置和方向,使其成为最大的。近似而有效的解决方案也有所帮助。
有什么建议吗?非常感谢。
答案 0 :(得分:1)
建议快速&基于椭圆体的次优解:
对于两个顶点集,以重心为中心,通过计算等效的惯性椭球来标准化坐标,为您提供更具各向同性的集合。
对于外层,找到面与原点之间的最短距离;对于内部集合,找到到顶点的最远距离。这给你两个球体,一个封闭,一个封闭。
现在将封闭的球体变换为封闭球体的坐标,给出一个椭圆体:椭圆体的长轴告诉您可以膨胀多少以适应球体。
如果多面体倾斜,这种近似可能会很差。
您可以通过从内部多面体的中心绘制光线穿过所有顶点并点击外部多面体来略微改进此解决方案,这可能会为您提供额外的增长因子。
答案 1 :(得分:1)
另一个建议,如果运行时间允许:
对于外多面体的固定姿势,内部多面体的姿态由3个平移和3个旋转参数(例如欧拉角)围绕任意中心定义。
当这些参数固定后,从中心投射光线穿过内顶点直到你碰到外面的多面体,可以得到允许的比例因子。
现在问题重新定义为6个变量函数的最大化,预期有局部最大值。这可以通过Hooke& amp; Jeeves步骤,上山单纯形法(Nelder-Mead)和/或模拟退火。
我不建议从我的另一个答案中的解决方案开始并保持接近它,因为你可能被困在当地的最大值。