[問題] 請問一下Polygon Clipping的相關演算法
看板Prob_Solve (計算數學 Problem Solving)作者ccbruce (今、そこに いる僕)時間16年前 (2008/03/05 22:08)推噓2(2推 0噓 4→)留言6則, 3人參與討論串1/2 (看更多)
有沒有網站有比較多這方面的參考資料。
是這樣的,因為我想要在寫出一個視窗能「半透明」的程式。在Vista有DWM可用;在WinXP
雖有Layered Window可用,但是並不好用,老實講,很難用。
如果要回歸傳統,就要想辦法抓出「蓋在半透明視窗下面的所有視窗」的畫面,把它們一
個個地由下往上疊,再畫上自己視窗的半透明背景來得到半透明效果。
雖然這樣的想法很簡單,但是速度太慢,如果下面只有1, 2個視窗那還好,如果有10幾個
就會非常慢,所以必須有比較快的演算法來決定底下有哪些視窗該抓,哪些不用。
我的構想是把目前視窗的Rectangle當成Subject Polygon,而把下面每個視窗的Rectangle
當成Clipping Polygon,然後執行以下的迴圈:
Let S=The rectangle of my window
Let B=() ;The ordered set of windows
For each below window W
Let C=The rectangle of W
If Intersection(S, C)=Empty Set Then
Continue
S=S-Intersection(S, C)
B=B+W
If S=Empty Set Then
End Loop
Next
Return B
這裡想到可以加速的地方有:
1.跳過沒交集的視窗
2.Clipping Polygon永遠是矩形
最後,雖然我找到不少演算法是可以把它們交集算出來的,卻不知道怎麼樣才可以作到差
集。如果可以,我還想知道怎麼算聯集,這樣可以試另外的做法。
--
愛 哀 だ 百 は こ も こ
し し か 億 か ん ろ ん
い い ら 年 な な く な
ほ の い に に
ど 年 も も
に 月
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.146.83
※ ccbruce:轉錄至看板 CSSE 03/05 22:10
推
03/05 23:45, , 1F
03/05 23:45, 1F
推
03/06 16:45, , 2F
03/06 16:45, 2F
→
03/06 16:46, , 3F
03/06 16:46, 3F
→
03/06 16:46, , 4F
03/06 16:46, 4F
→
03/06 19:49, , 5F
03/06 19:49, 5F
→
03/06 19:50, , 6F
03/06 19:50, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章