用C# 開發一個示例,畫一個指定大小的矩形,在此矩形范圍內將提供的其他不同大小的矩形進行排版,生成排版圖,矩形之間和邊距之間分別可以設定間距。此功能為排版優化。
uj5u.com熱心網友回復:
這個還是直接買吧,演算法太復雜,估計沒人會免費分享出來uj5u.com熱心網友回復:
為矩形設定邊距可以通過把矩形內邊距算作矩形自身引數的方式來簡化。這類程式很多。例如在一個 DIV 里邊自動排放幾百個照片,都是這類演算法。簡單來說就是把隨時分割出來的空余空間動態產生一個個矩形(空閑矩形),然后對于每一個需要放入的矩形,遍歷查找一個寬度最接近、或者高度最接近的空余矩形嵌入其中。
uj5u.com熱心網友回復:
空閑矩形是可以有重復相交部分的,沒有關系。當放好任何一個目標矩形之后,從空閑矩形串列中洗掉掉所有與之相交的空閑矩形,從空閑矩形(去掉被占用的左上角部分)產生2個新的空閑矩形重新放入空閑矩形串列。你自己畫圖來說明一下這個規則就明白了。uj5u.com熱心網友回復:
間邊距只是增大了目標矩形的尺寸,并不影響排版計算,無需考慮排版時應盡量避免斷頭折線的出現(不利于后期切割)
目標矩形以左上角聚集(可旋轉一次),使控制矩形面積最小或一邊等于材料的一邊
用二叉樹保存結果
uj5u.com熱心網友回復:
謝謝大家,我的排版要求不高,能稍微優化排出來就行,是有償的,有這方面經驗的可以聯系我uj5u.com熱心網友回復:
那你到 豬八戒 去發標就是了,何苦在這里無望的等待uj5u.com熱心網友回復:
謝謝大家,只是想這里人才多,看有沒有大神看到uj5u.com熱心網友回復:
將里面小矩形的長、寬都放到一個結構體的l,w,假設有n個小矩形,那么就有n個l和n個w,然后對這些l和w進行全組合,并求出每種組合的和,并對這些和排序,和最接近外邊大矩形的長、寬的就是你要的最優解需要控制好一個小矩形自己的長、寬不能參與組合演算法
規模小的話,差不多能實作
uj5u.com熱心網友回復:
這是一個二維裝箱問題,使用skyline方法+遺傳演算法效果拔群。如果有需要可以私聊。30以下矩形全排很快,197個的算子能排到97%以上。uj5u.com熱心網友回復:
二維的排列組合問題,只能用窮舉法對比,還要考慮多少原料,半成品最佳組合,比如5個原料,出三種半成品,并不是每個原料上排列所有3種半成品最佳。先作數學模型,找最佳演算法uj5u.com熱心網友回復:
一般算例是不可能列舉的,這個領域算例給定了25-197個不同尺寸的矩形,這個列舉已經失效了。uj5u.com熱心網友回復:
沒錢,你要演算法? 就看懂,也要花時間。uj5u.com熱心網友回復:
用一定的演算法可以達到比較好的效果。例如25個不同的矩形滿排效果。

97個不同矩形排列面積占用率在97%以上耗時大約2分鐘的效果。
uj5u.com熱心網友回復:
樓上可以分享下相關演算法和軟體嗎?
uj5u.com熱心網友回復:
二維裝箱,貪婪uj5u.com熱心網友回復:
最簡單的方式實作就是二叉,擺放金字塔uj5u.com熱心網友回復:
堆疊堆疊堆疊堆疊
堆疊堆疊
uj5u.com熱心網友回復:
可以分享下原始碼?轉載請註明出處,本文鏈接:https://www.uj5u.com/net/79086.html
標籤:C#
上一篇:C#使用VLC的libvlc.dll開發了個視頻播放器,播放高清視頻就會卡,請問怎么呼叫libvlc的硬體解碼
下一篇:c#一級課題
