Games202 Lecture3-4之SAT: Summed Area Table
SAT: Summed Area Table
- 一維
- 二維
- 分析
一種可以準確進行范圍查詢的方式。
數據結構: Summed Area Table (SAT)
算法:prefix sum 前綴和
一維
對于一個存放texture的一維數組,構建一個等大的summed area table,這個table中每個元素的值是texture數組中該位置元素以及其左側所有元素的總和。
SAT(i)=∑j≤iTexture(j)SAT(i) = \sum_{\mathclap{j\le i}} Texture(j) SAT(i)=j≤i?∑?Texture(j)
示意:
在(a,b]范圍內元素和的計算方式:
RQ((a,b])=SAT(b)?SAT(a)RQ((a,b]) = SAT(b) - SAT(a) RQ((a,b])=SAT(b)?SAT(a)
二維
對于一個存放texture的二維數組,構建一個等大的summed area table。
每個元素的值記錄的是texture數組中該元素以及其左側和上方的所有元素的總和。
SAT(x,y)=∑x′≤x,y′≤yTexture(x′,y′)SAT(x,y)=\sum_{x'\le x, y'\le y} Texture(x',y') SAT(x,y)=x′≤x,y′≤y∑?Texture(x′,y′)
示意:
圖中藍色部分元素和的計算方式:
RQ(D)=SAT(D)?SAT(C)?SAT(B)+SAT(A)RQ(D) = SAT(D) - SAT(C) - SAT(B) + SAT(A) RQ(D)=SAT(D)?SAT(C)?SAT(B)+SAT(A)
其中,
SAT(A)=SAT(Ax′,Ay′)SAT(A) = SAT(A_{x'},A_{y'}) SAT(A)=SAT(Ax′?,Ay′?)
分析
時間復雜度O(M*N)
空間復雜度O(M*N)
數據精度會稍有損失,但是影響不大。
二維SAT進行計算時,行與行之間是獨立的,可以并行計算。
總結
以上是生活随笔為你收集整理的Games202 Lecture3-4之SAT: Summed Area Table的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10月重磅程序员新书上架7本,每一本都很
- 下一篇: 大数据之flink数据一致性