2010-09-15 97 views
2

我對使用的形狀像這些:如何用預定義的七巧板形狀填充輪廓?

tangram

通常一個tangram由7種形狀(5個三角形,1平方和1個平行四邊形)。

我想要做的只是填充一個形狀只有七巧板形狀,所以在這一點上,形狀的大小和重複應該不重要。

這裏的東西我手動嘗試:

crescent with tangram shapes

我有點失去了對如何處理這一點。

假設我有一個路徑(一個有序列表/大綱點的數組), 我想我應該嘗試做某種三角測量。

有沒有這樣的事情,如三角形Deulanay三角形約束爲45度 直角三角形?

一個更加「粗暴」的方法是添加一束三角形(45度),並使用碰撞檢測來修復重疊,並希望避免間隙。因爲正方形和平行四邊形也可以由三角形(45度)組成,所以我想 會是一個不錯的乾淨幾何解決方案,對不對?

如何在任意形狀內包裝三角形(45度)?

歡迎任何想法。

回答

1

一些隨機的想法(可能他們幫你找到一個更好的解決方案)如果你只使用形狀的原始尺寸:

  • 正如你指出,在七巧板各種形狀可由...組成,例如:黃色或粉紅色的三角形(d-g-c),所以也可以考慮使用自下而上的方法,例如首先嚐試將多個黃色三角形放入形狀中,然後儘可能將它們組合成更大的形狀。在最糟糕的情況下,你會得到一組這些最小的三角形。

  • 非多邊形(如半月形在你的例子)的任何種類的三角測量可能並不能很好地工作......

  • 看起來你需要的形狀只能有少數離散的方向。爲了找到這些三角形與給定形狀的最佳擬合,我會提出以下近似解決方案:在整個形狀上繪製一個三角形網格(即具有對角線的方形網格),並將這些三角形完全包含在內。這很可能不會給你最佳的覆蓋範圍,但是你可以重複地將網格在水平和垂直方向上移動十分之一的網格大小,並且看看你是否會找到覆蓋原始形狀的較大部分的東西(或者你按照二進制搜索的精神,可以按原始網格大小的1/2和1/4等等)。

如果允許任意縮放形狀,可以通過添加更小和更小的形狀來近似任意(合理平滑)形狀爲任意精度。例如。如果您有光柵圖像,則可以選擇黃色三角形的大小,使它們中的兩個在圖像上形成一個像素,然後可以表示任何這樣的光柵圖像。

+1

非常好的意見。這是一個使用正方形網格的粗略測試:http://lifesine.eu/tangram/45BitmapTest3.html每個網格正方形被分成4個區域,根據每個網格「四分之一」的平均亮度繪製一個三角形(http: //lifesine.eu/tangram/algorithm.svg) – 2010-12-14 12:14:11

+0

看起來很不錯(測試)! – 2010-12-15 07:32:48