Re: [問題] boost polygon library 效能

看板C_and_CPP作者 (~renard~)時間11年前 (2012/12/24 23:45), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
Hi all: 抱歉沒有定義清楚問題 紅色部份未必會比黑色的小 而且很不幸的他們會重疊 (但相同色的不會重疊) 所以現在問題縮小到: http://img525.imageshack.us/img525/1315/test2qs.png
如何將這些polygon分群 (1) 紅、黑的polygon數目可能不同 (ex:一個紅色的可能是兩個以上的polygon組成) (2) 黑紅相疊的polygon至少要分在同群 (才能確保有XOR到) 有好的演算法可以作到這種分群嗎? (同群內的polygon越近越好,boost XOR 限制) 因為AABB algo還沒熟悉,會先study一下 謝謝! ※ 引述《damody (天亮damody)》之銘言: : ※ 引述《yu1 (~renard~)》之銘言: : : 謝謝大家推文,我會嘗試分析看看時間和n的關係 : : 更精確來說我的問題: : : 圖示: http://img100.imageshack.us/img100/5840/testys.png
: : (抱歉想不到更好的了) : : 我有一堆polygon (由3~10個頂點組成) : : 且polygon之間不會相交 : : 這一堆polygon (約20萬個),簡稱 polygon set A,圖中的黑色 : : 而這堆polygon去作一些處理後, 頂點座標會稍微移動 : : 處理完的polygons,簡稱 polygone set B,圖中的紅色 : : 我想要用boost polygon library 去得出 A和B的差異 : : 所以就用 他library提供的function A ^ B (XOR) : : 時間複雜度應該是O(nlogn),無intersection, n 約= 1~200萬 : : 但是跑了半小時之久 : : 如果我先將他們分開做 XOR會比較好嗎 (接下來還能Multi-thread) : : 但是分開又是另一種問題了,要如何確保不會將polygon 分屍... : 看了你的問題以後發現如果能保證紅色範圍小於等於黑色範圍的話 : 根本不用用到boost polygon,感覺你的處理是細化處理, : 如果你是從bitmap上抓到polygon的特徵的話, : 直接把紅色的範圍減掉黑色的範圍就好, : 如果得到的資料已經是polygon的外圍點集合, : 可以直接把黑色當作外圍的contour, : 紅色當作內圍的contour, : 假設每一個黑色polygon一定大於包著紅色的polygon, : 且黑色polygon之間不重疊, : 紅色polygon之間不重疊, : 在這一堆限制條件下,可以直接用黑色polygon 的 AABB, : 找到包到的紅色polygon, : 然後可以直接把黑色當作外圍的contour, : 紅色當作內圍的contour。 : 大陸有翻譯一本real-time collision detection 的書 : 叫 实时碰撞检测算法技术 : 裡面有從2005年以前近十年的碰撞演算法發展 : 不過現實世界的問題可以從很多不同的觀點切入優化 : 就不知道適不適合你了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.108.13

12/25 03:28, , 1F
得到的已經是 polygon 的連續點了?
12/25 03:28, 1F
文章代碼(AID): #1Gs7YsnT (C_and_CPP)
文章代碼(AID): #1Gs7YsnT (C_and_CPP)