推 s89162504: 你說的是kd tree嗎? 04/03 08:04
→ WoodChen: 不是,是 quadtree 04/03 08:45
推 springman: 所找到的節點數最多有沒有可能接近總節點數呢? 04/03 10:55
→ springman: 哦、切得愈多,比例就會愈低,可能還好。 04/03 10:56
推 s89162504: 相鄰的定義是什麼? 04/03 11:36
→ WoodChen: 樹的每個節點都是正方形,相鄰代表有邊重疊。例如第一 04/03 12:21
→ WoodChen: 象限與第四象限就是相鄰。但相鄰不見得面積要一樣。 04/03 12:21
→ DJWS: 記憶體價格便宜容易擴充 大家都用空間換時間 04/05 06:17
https://i.imgur.com/IJVtKYD.png
目前是用測試周遭區域的方式來找空白區域(白色)。
給一個 x,y 座標,求該座標是落在紅色或白色區域的複雜度為 ln(N)
藍色區域周圍最多會有 4*藍色邊長/最小切割區域邊長 的待測點
最好的情況下待測點只有 4 個。
配合 A* 是可以跑,性能目前看起來也還可以,
但若按照上面的推論,可能還是有些不足。
不過因為我還必須動態的改動紅白區域(白色變紅色或紅色變白色),
不知道 DCEL 建表的性能如何?
過幾天再試試看,謝謝
※ 編輯: WoodChen (36.237.83.117), 04/05/2018 21:44:04
推 ddavid: 總覺得如果用二元編碼後會有某種程度的公式解找到同層鄰居 04/06 01:55
→ ddavid: ,再利用鄰居的父親若非自己的父親則必也為鄰居、上鄰居的 04/06 01:57
→ ddavid: 下方子節點也必為上鄰居之類的性質好像有可能從同層鄰居把 04/06 01:58
→ ddavid: 所有鄰居推出來,然而我不知道效率好不好 04/06 01:58
→ ddavid: 這邊講到二元編碼是上下1 bit、左右1 bit,所以右上、右下 04/06 02:00
→ ddavid: 、左上、左下分別為01 11 00 10 04/06 02:00
→ ddavid: 然後可能就可以依目標的某些特性,用改變其中幾個bit的公 04/06 02:01
→ ddavid: 式取得四個方向的同一層(即大小相等的)鄰居 04/06 02:02
→ ddavid: 只是我沒有去仔細推敲是否確實可行以及效率 04/06 02:03
→ DJWS: ^^^^^^^^^^^^ 說反了 04/06 06:01
→ DJWS: 這應該跟二元樹的前繼截點/後繼節點 差不多意思吧 04/06 06:10
→ WoodChen: 如果周圍的相鄰面多的話,自然測試點就多,因為是要找 04/11 23:12
→ WoodChen: 出所有相鄰面 04/11 23:12
推 ddavid: 其他所有鄰面必然是同層鄰居的子或父節點,所以要找出所 04/12 15:55
→ ddavid: 有都是可以從同層的出發 04/12 15:55
→ ddavid: 而且有一些方向關係可以肯定,比如A是B的上方同層鄰居,則 04/12 15:55
→ ddavid: A所有只往下方走(包括左下跟右下)的子孫節點都同樣是B 04/12 15:55
→ ddavid: 的鄰居 04/12 15:55
→ ddavid: 這就是上面講編碼方便的其中一個地方,找到上同層鄰居A以 04/12 15:56
→ ddavid: 後,我在A編碼後面無限制接上10或11全都自然是B的鄰居 04/12 15:56
→ ddavid: 父親方向也不難,一直往上推,直到共同祖先出現以前都會是 04/12 15:56
→ ddavid: 鄰居 04/12 15:56