将三角形放置在一条直线上,以最小化最大距离

时间:2019-02-08 15:06:14

标签: algorithm line packing

我需要将三角形(不同形状)放置在一条直线上,并使第一个三角形和最后一个三角形之间的距离尽可能小。允许三角形仅在一个角上接触线,但是必须将其放置在线的顶部,不允许它们通过线。

我可以旋转三角形,但不能更改其大小或形状。

我尝试将三角形排列成圆形,直到达到180°,然后重复该过程,但我觉得这不是一种非常有效的算法。

Example (non-altered)

1 个答案:

答案 0 :(得分:0)

首先,旋转三角形,使最短尺寸为水平(使最短边为底)。之后,您将拥有最少的总长度。

第二,按右下角的角度对三角形进行排序,并按该顺序收集它们。之后,它们将不相交。

第二步证明

   B          D
   |\        /|
   | \      / |
   |  \    /  |
   |   \  /   |
   |____\/____|
   A    C     E

对于已排序的三角形ACB DCE <180-CED ACB ACE + DCE <180,因此三角形不会重叠。