掃瞄線演算法(一)之矩形那些事兒

2021-08-19 20:21:21 字數 417 閱讀 4752

用一條平行於軸的線掃瞄幾何圖形,得出某些所求的解。

實際上就是線段樹維護區間並集的長度。

這裡思考一下,如果要求被覆蓋k次的部分的面積和,怎麼辦?(留坑)

如果你想用簡單的兩個方向分別掃,當然可以了。這裡提供乙個只掃一次的方法。(為了炫個技鍛鍊思維水平)

node:l、r表示左右端點

lp、rp表示端點有沒有被覆蓋

cnt表示被重複覆蓋了幾次

len被覆蓋的總長度

num被多少條連續線段覆蓋。即,若[1, 10]被[1, 5]與[4, 10]覆蓋,那麼num=1

每次加邊之前,做兩件事:

vertical contribution:len

horizontal contribution:2*num*(now - pre)

於是問題就得以解決了。

掃瞄線演算法

給出幾個矩形對角端點座標,求這些矩形整體覆蓋的面積。基本思想如下圖 先離散化。掃瞄線 是一根想象中的虛線,從左往右掃瞄,遇到 矩形 則成為 事件 遇到 起始邊 則update相應區間的 厚度 或者 覆蓋次數 covercnt 1。遇到 結束邊 則update相應區間的 厚度 covercnt 1。用...

X 掃瞄線演算法

多邊形有兩種重要的表示方法 頂點表示和點陣表示 頂點表示是用多邊形的頂點序列來表示多邊形。這種表示直觀 幾何意義強 佔記憶體少,易於進行幾何變換。但由於它沒有明確指出哪些象素在多邊形內,故不能直接用於面著色 點陣表示是用位於多邊形內的象素集合來刻畫多邊形。這種表示丟失了許多幾何資訊 如邊界 頂點等 ...

區域填充之掃瞄線演算法

區域的填充可以根據區域的填充,採用不同的填充演算法,而其中有掃瞄線類演算法和種子填充演算法。這裡,先介紹掃瞄線類演算法之有序邊表的掃瞄線演算法。其他什麼種子填充 邊界標誌演算法 4連通區域的遞迴演算法 8連通區域的遞迴演算法 掃瞄線種子填充演算法比較簡單。其實有序邊表其實領會了也好理解,關鍵是將思想...