區域劃分總結

2021-08-10 19:55:41 字數 1839 閱讀 1110

**:

直線切割平面

當乙個平面上沒有直線的時候,可以看成被分成了1份;

有1條直線的時候,沒有結點,多了

1部分; 有2

條直線的時候,多了

1個節點,多了

2部分; 有3

條直線的時候,多了

2個節點,多了

3部分;

······

第n條直線 0

1234

節點數0

00+1

1+21+2+3

區域數1

1+11+1+2

1+1+2+3

1+1+2+3+4

也可以理解為當新增第i

條直線的時候,最多可以穿過

i-1條直線,將新的直線分成

i份,而這

i份可以將

i個部分分成

2i份,也就是多了

i各部分。

於是,a[i]=a[i-1]+i;

a[0]=1;

數學公式可以寫為n =1+1+2+3+4+

···+i

=i*(

i+1)

/2+1

v型折線切割平面

(1)第一種思路

折線個數01

23增加節點數00

48增加部分數11

59因為折線的原因,每次新增折線的時候有折點的那部分不會增加分割部分,也就是有幾個節點就會多出幾個部分,而且和折點部分還會再多出乙個,也就是

a[i]=2*2*(i-1)+1+a[i-1];

a[0]=1;

數學公式

第n條折線增加

2*2*(i-1)+1,

第n條折線是分割的部分為n=(

1+4*n-3

)*n/2+1=2n^2-n+1

。()

(2)第二種思路

把折線看成兩條相交的直線,而每次增加直線的時候都會因為折點而少2

個分割部分,於是第i條折線時,n=2i(2i+1)/2-2i+1=2n^2-n+1.

閃電型折線切割平面

與上述內容基本相同,第一種思路a[i]=a[i-1]+9(i-1)+1;a[0]=1;數學公式n=(9(i-1)+2)*n/2+1 

對於第i條折線,共有9(i-1)個節點,共產生9(i-1)+1條線把區域一分為2(感覺這裡的加一單純想是很難找出來,所以我的想法是既然知道了前半部分的9(i-1),後面的常數項應該可以通過特例幾個數得出)

第二種思路

對於乙個z,先當作三條線相交,但是很不幸,有一對平行線,所以分割的平面少了1,然後還有兩個反向延長線需要去掉,分隔平面少了4,所以一條z相比l3少了5個平面,因此:l(3n)-5n;(l()為直線分割的公式)

封閉曲線切割平面

因為是封閉曲線,每次切割時要與之前所有的曲線相交,也就是第i個曲線會與i-1個封閉曲線相交,有2(i-1)個交點,多產生2(i-1)個分割部分。

a[i]=a[i-1]+2*(i-1)

a[0]=1

a[1]=2

數學公式n=2*(n-1)*n/2+2

=n^2-n+2

平面切割空間

第i個平面切割i-1個平面,最多與i-1個平面相交,產生i-1條交線,乙個平面將原有空間分成兩個部分,增加乙個新的部分,由前面的結論可知,i-1條交線會將這個平面分成

i*(i-1)/2+1份,於是可知,第i個平面會增加i*(i-1)/2+1部分的空間。記b[i]=i*(i-1)/2+1;a[i]=a[i-1]+b[i];a[0]=1;b[0]=0;a[1]=2;b[1]=1;a[2]=4;b[2]=2;

數學公式為n=(2*1+3*2+4*3+···+i*(i-1))/2+(i-1)+2==

(i^3+5i)/6+1

c 記憶體區域劃分

c 中,記憶體分為5個區域 堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。其中 棧 就是那些編譯器在需要的時候分配,不需要的時候清理的變數的儲存區域,比如區域性變數和函式引數。在記憶體中連續儲存的區域,位址從低到高。堆 就是new分配的記憶體塊,需要delete。如果沒有delete,在程式退...

場景劃分區域

為何要對場景進行區域劃分,這個同樣是為了優化碰撞檢測。因為相對於其他邏輯而言碰撞檢測尤其消耗效能,尤其是對網格類的碰撞體進行碰撞檢測時效能開銷更大。試想一下場景中有1000個物體 如果沒有區域劃分的情況,物體兩兩碰撞檢測的次數是 1000 1000次,而如果遊戲幀率達到60,那麼這個碰撞檢測邏輯就達...

圓劃分的區域

畫個圈圈詛咒你!在一次青青草原acm個人賽中,瀟灑哥被喜洋洋以30s罰時壓制,委屈的當了個第二。瀟灑哥蹲在角落說出了他的口頭禪,並畫起了圈圈。突然,他想出了乙個有趣的題目,跑去給喜洋洋做。喜洋洋看到題目後懵逼了,但是看到瀟灑哥臉上欠揍的笑容就不爽,暗想一定要做出來狠狠的打瀟灑哥的臉。於是,他以上廁所...