作者ccbruce (今、そこに いる仆)
看板CSSE
标题[问题] 请问一下Polygon Clipping的相关演算法
时间Wed Mar 5 22:10:13 2008
※ [本文转录自 Prob_Solve 看板]
作者: ccbruce (今、そこに いる仆) 看板: Prob_Solve
标题: [问题] 请问一下Polygon Clipping的相关演算法
时间: Wed Mar 5 22:08:10 2008
有没有网站有比较多这方面的参考资料。
是这样的,因为我想要在写出一个视窗能「半透明」的程式。在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 来自: 59.115.146.83 (03/05 22:10)