二維瓦片網格邊界檢測
1. 每個網格只考慮enws四個相鄰格仔
四個相鄰格仔ensw編號為0~3
2. 當前方向d(0~3): 如果當前格仔是上乙個格仔選擇的ensw(0~3)中的乙個, 則這個選擇就是當前方向
3. 選擇下乙個的策略:
按找以下優先順序判斷 (d+3)%4, (d+4)%4, (d+5)%4, (d+6)%4
(第一優選是右手側, 最後一項是原路返回)
如果這四個點都不是, 則本點是孤立點.
4. 頭節點
檢測到的第乙個邊界點作為頭節點, 把與頭節點相鄰的外界點(或者邊界)看作上乙個點.
如果是按照w->e, n->s的順序檢測, 則頭節點的方向是e
5. 結束
當再次遇到頭結點, 則結束
#include enum dir ;
enum ;
struct point
bool operator!=(const point& p) const
// 邊界和外部
bool checkpoint(int* map, int w, int h)
// 相鄰點
void getnearpoints(point near[dirmax]) const
// 下乙個點
point getnextpoint(int* map, int w, int h, point near[dirmax], dir& d)
}// 孤點, 返回自己
return *this;
}};int main() ,,,
,,,,
,, ,,
}; int w = 9;
int h = 12;
// 查詢頭點
point head = ;
bool findhead = false;
for (int i = 0; i < h && !findhead; ++i)
}} // (本程式只處理其中的一塊區域, 並且不考慮內部空洞)
if (!findhead) return 1;
point cur = head;
dir d = e;
point near[dirmax];
do while (cur != head);
// 顯示
for (int i = 0; i < h; ++i)
std::cout << std::endl;
} return 0;}/*
執行輸出:
000222000
002212200
022122220
222220000
000220000
000200000
000200000
022222220
021111120
021112220
022222000
000002222
*/
二維網格遷移
給你乙個 n 行 m 列的二維網格 grid 和乙個整數 k。你需要將 grid 遷移 k 次。每次 遷移 操作將會引發下述活動 輸入 grid 1,2,3 4,5,6 7,8,9 k 1 輸出 9,1,2 3,4,5 6,7,8 輸入 grid 3,8,1,9 19,7,2,5 4,6,11,10...
Grid 網格二維布局 筆記
首先,你必須使用 display grid 將容器元素定義為乙個 grid 網格 布局,使用 grid template columns 和 grid template rows 設定 列 和 行 的尺寸大小,然後通過 grid column 和 grid row 將其子元素放入這個 grid 網格...
對二維資料進行邊界拓展
對二維資料處理的時候,常常遇到須要越界的問題。比方對影象進行濾波操作。對原始資料的邊界進行拓展。然後使用拓展後的資料作處理,能夠解決越界的問題。依據拓展出的資料的值來自 能夠分為多種邊界拓展方式,我們要實現的是將邊界進行奇對稱拓展。舉例說明什麼是奇拓展。比方對原始二維資料向左拓展4列,那麼在邊界上向...