algorithm - 将三角形放在一条线上,最小化最大距离

标签 algorithm line packing

我需要将三角形(不同形状)放置在一条直线上,第一个三角形和最后一个三角形之间的距离尽可能低。三角形只允许一个角与线接触,但需要放在线的上方,不允许穿过线。

我可以旋转三角形,但不能改变它们的大小或形状。

我尝试围绕直线的一个点放置类似圆形的三角形,直到达到 180° 并重复该过程,但我认为这不是一个非常有效的算法。

Example (non-altered)

最佳答案

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

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

第二步证明

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

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

关于algorithm - 将三角形放在一条线上,最小化最大距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54595214/

相关文章:

Java 将 4 个字节转换为 int

python - python列表中最常见的子列表

java - 验证二维Array中的所有 "1"是否构成矩形的算法

javascript - 查找html文本区域中的行数

coupling - 通过将两个不同的数据项存储在单个变量中来耦合它们的概念是否有名称?

c++ - 在编译 boost 时定义 BOOST_DISABLE_ABI_HEADERS 会带来什么危害?

algorithm - 为什么哈希表平均访问时间不变?

algorithm - 将许多小多边形组合成一个(一些)大多边形

css - 具有 div 样式的 div 内的线/边距/边框 (html/css)

r - 如何在 ggplot2 R 中创建 react 规范(按行加入)?