2

我对使用这些形状很感兴趣:

七巧板

通常一个七巧板由 7 个形状(5 个三角形、1 个正方形和 1 个平行四边形)组成。

我想做的是只用七巧板形状填充形状,所以在这一点上,形状的大小和重复应该无关紧要。

这是我手动尝试的:

七巧板形状的新月形

我对如何解决这个问题有点迷茫。

假设我有一条路径(轮廓点的有序列表/数组),我想我应该尝试进行某种三角测量。

有没有像 Deulanay 三角剖分这样的东西,三角形被限制为 45 度直角三角形?

一种更“粗暴”的方法是添加一堆三角形(45 度)并使用SAT 进行碰撞检测以“修复”重叠,并希望避免出现间隙。

由于正方形和平行四边形也可以由三角形(45度)组成,我想会有一个很好的干净几何解决方案,对吧?

如何在任意形状内打包三角形(45 度)?

欢迎任何想法。

4

1 回答 1

1

如果您仅使用形状的原始尺寸,一些随机想法(也许它们可以帮助您找到更好的解决方案):

  • 正如您所指出的,七巧板中的所有形状都可以由例如黄色或粉红色三角形(dgc)组成,因此请尝试考虑一种自下而上的方法,例如首先尝试将尽可能多的黄色三角形放入您的形状中,然后如果可能,将它们组合成更大的形状。在最坏的情况下,您最终会得到一组这些最小的三角形。

  • 任何类型的非多边形三角剖分(例如您示例中的半月形)可能都无法很好地工作......

  • 看起来您要求形状只能有几个离散的方向。为了找到这些三角形与给定形状的最佳拟合,我提出以下近似解决方案:在形状上绘制一个三角形网格(即带有对角线的方形网格)并取那些完全包含的三角形。这很可能不会为您提供最佳覆盖范围,但是您可以在水平和垂直方向上将网格重复移动网格大小的十分之一,看看您是否会找到覆盖原始形状较大部分的东西(或者您本着二分搜索的精神,可以按原始网格大小的 1/2 和 1/4 等步长进行)。

如果您允许任意缩放形状,您可以通过添加越来越小的形状来将任何(合理平滑?)形状逼近到任意精度。例如,如果您有一个光栅图像,您可以选择黄色三角形的大小,使它们中的两个在图像上形成一个像素,然后您可以表示任何这样的光栅图像。

于 2010-09-15T19:36:26.657 回答