testdlg.cpp
来自「DGCL (An Efficient Density and Grid Base」· C++ 代码 · 共 2,210 行 · 第 1/5 页
CPP
2,210 行
}
if(pGrid[i+1][j].used == true && pGrid[i+1][j].groupID != 0) //5
{
if(nMaxDens < pGrid[i+1][j].density)
{
nMaxDens = pGrid[i+1][j].density;
nGroupID = pGrid[i+1][j].groupID;
}
}
if(pGrid[i-1][j+1].used == true && pGrid[i-1][j+1].groupID != 0) //6
{
if(nMaxDens < pGrid[i-1][j+1].density)
{
nMaxDens = pGrid[i-1][j+1].density;
nGroupID = pGrid[i-1][j+1].groupID;
}
}
if(pGrid[i][j+1].used == true && pGrid[i][j+1].groupID != 0) //7
{
if(nMaxDens < pGrid[i][j+1].density)
{
nMaxDens = pGrid[i][j+1].density;
nGroupID = pGrid[i][j+1].groupID;
}
}
if(pGrid[i+1][j+1].used == true && pGrid[i+1][j+1].groupID != 0) //8
{
if(nMaxDens < pGrid[i+1][j+1].density)
{
nMaxDens = pGrid[i+1][j+1].density;
nGroupID = pGrid[i+1][j+1].groupID;
}
}
//分配groupID给未分配的cell
pGrid[i][j].groupID = nGroupID;
// if(pGrid[i-1][j-1].groupID == 0) //1
pGrid[i-1][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i][j-1].groupID == 0) //2
pGrid[i][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j-1].groupID == 0) //3
pGrid[i+1][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i-1][j].groupID == 0) //4
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j].groupID == 0) //5
pGrid[i+1][j].groupID = pGrid[i][j].groupID;
// if(pGrid[i-1][j+1].groupID == 0) //6
pGrid[i-1][j+1].groupID = pGrid[i][j].groupID;
// if(pGrid[i][j+1].groupID == 0) //7
pGrid[i][j+1].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j+1].groupID == 0) //8
pGrid[i+1][j+1].groupID = pGrid[i][j].groupID;
}
break;
case 1: //check 5 neighbors
while (true) {
if(pGrid[i-1][j-1].used == true) //1
{
if(pGrid[i-1][j-1].groupID ==0) nUsedTab = true;
else {
nUsedTab = false;
break;
}
}
if(pGrid[i][j-1].used == true) //2
{
if(pGrid[i][j-1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j-1].used == true) //3
{
if(pGrid[i+1][j-1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i-1][j].used == true) //4
{
if(pGrid[i-1][j].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j].used == true) //5
{
if(pGrid[i+1][j].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
break;
} //end while
if(pGrid[i][j].groupID == 0 && nUsedTab == true)
{
pGrid[i][j].groupID = ++nGroupNum;
pGrid[i-1][j-1].groupID = pGrid[i][j].groupID;
pGrid[i][j-1].groupID = pGrid[i][j].groupID;
pGrid[i+1][j-1].groupID = pGrid[i][j].groupID;
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
pGrid[i+1][j].groupID = pGrid[i][j].groupID;
}else{
if(pGrid[i-1][j-1].used == true && pGrid[i-1][j-1].groupID != 0) //1
{
nMaxDens = pGrid[i-1][j-1].density;
nGroupID = pGrid[i-1][j-1].groupID;
}
if(pGrid[i][j-1].used == true && pGrid[i][j-1].groupID != 0) //2
{
if(nMaxDens < pGrid[i][j-1].density)
{
nMaxDens = pGrid[i][j-1].density;
nGroupID = pGrid[i][j-1].groupID;
}
}
if(pGrid[i+1][j-1].used == true && pGrid[i+1][j-1].groupID != 0) //3
{
if(nMaxDens < pGrid[i+1][j-1].density)
{
nMaxDens = pGrid[i+1][j-1].density;
nGroupID = pGrid[i+1][j-1].groupID;
}
}
if(pGrid[i-1][j].used == true && pGrid[i-1][j].groupID != 0) //4
{
if(nMaxDens < pGrid[i-1][j].density)
{
nMaxDens = pGrid[i-1][j].density;
nGroupID = pGrid[i-1][j].groupID;
}
}
if(pGrid[i+1][j].used == true && pGrid[i+1][j].groupID != 0) //5
{
if(nMaxDens < pGrid[i+1][j].density)
{
nMaxDens = pGrid[i+1][j].density;
nGroupID = pGrid[i+1][j].groupID;
}
}
//分配groupID给未分配的cell
pGrid[i][j].groupID = nGroupID;
// if(pGrid[i-1][j-1].groupID == 0)
pGrid[i-1][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i][j-1].groupID == 0)
pGrid[i][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j-1].groupID == 0)
pGrid[i+1][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i-1][j].groupID == 0)
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j].groupID == 0)
pGrid[i+1][j].groupID = pGrid[i][j].groupID;
}
break;
case 2: //check 5 neighbors
while(true){
if(pGrid[i-1][j].used == true) //1
{
if(pGrid[i-1][j].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j].used == true) //2
{
if(pGrid[i+1][j].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i-1][j+1].used == true) //3
{
if(pGrid[i-1][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i][j+1].used == true) //4
{
if(pGrid[i][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j+1].used == true) //5
{
if(pGrid[i+1][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
break;
}//end while
if(pGrid[i][j].groupID == 0 && nUsedTab == true)
{
pGrid[i][j].groupID = ++nGroupNum;
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
pGrid[i+1][j].groupID = pGrid[i][j].groupID;
pGrid[i-1][j+1].groupID = pGrid[i][j].groupID;
pGrid[i][j+1].groupID = pGrid[i][j].groupID;
pGrid[i+1][j+1].groupID = pGrid[i][j].groupID;
}else{
if(pGrid[i-1][j].used == true && pGrid[i-1][j].groupID != 0) //1
{
nMaxDens = pGrid[i-1][j].density;
nGroupID = pGrid[i-1][j].groupID;
}
if(pGrid[i+1][j].used == true && pGrid[i+1][j].groupID != 0) //2
{
if(nMaxDens < pGrid[i+1][j].density)
{
nMaxDens = pGrid[i+1][j].density;
nGroupID = pGrid[i+1][j].groupID;
}
}
if(pGrid[i-1][j+1].used == true && pGrid[i-1][j+1].groupID != 0) //3
{
if(nMaxDens < pGrid[i-1][j+1].density)
{
nMaxDens = pGrid[i-1][j+1].density;
nGroupID = pGrid[i-1][j+1].groupID;
}
}
if(pGrid[i][j+1].used == true && pGrid[i][j+1].groupID != 0) //4
{
if(nMaxDens < pGrid[i][j+1].density)
{
nMaxDens = pGrid[i][j+1].density;
nGroupID = pGrid[i][j+1].groupID;
}
}
if(pGrid[i+1][j+1].used == true && pGrid[i+1][j+1].groupID != 0) //5
{
if(nMaxDens < pGrid[i+1][j+1].density)
{
nMaxDens = pGrid[i+1][j+1].density;
nGroupID = pGrid[i+1][j+1].groupID;
}
}
//分配groupID给未分配的cell
pGrid[i][j].groupID = nGroupID;
// if(pGrid[i-1][j].groupID == 0)
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j].groupID == 0)
pGrid[i+1][j].groupID = pGrid[i][j].groupID;
// if(pGrid[i-1][j+1].groupID == 0)
pGrid[i-1][j+1].groupID = pGrid[i][j].groupID;
// if(pGrid[i][j+1].groupID == 0)
pGrid[i][j+1].groupID = pGrid[i][j].groupID;
// if(pGrid[i+1][j+1].groupID == 0)
pGrid[i+1][j+1].groupID = pGrid[i][j].groupID;
}
break;
case 4: //check 5 neighbors
while (true) {
if(pGrid[i-1][j-1].used == true) //1
{
if(pGrid[i-1][j-1].groupID ==0) nUsedTab = true;
else {
nUsedTab = false;
break;
}
}
if(pGrid[i][j-1].used == true) //2
{
if(pGrid[i][j-1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i-1][j].used == true) //3
{
if(pGrid[i-1][j].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i-1][j+1].used == true) //4
{
if(pGrid[i-1][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i][j+1].used == true) //5
{
if(pGrid[i][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
break;
}//end while
if(pGrid[i][j].groupID == 0 && nUsedTab == true)
{
pGrid[i][j].groupID = ++nGroupNum;
pGrid[i-1][j-1].groupID = pGrid[i][j].groupID;
pGrid[i][j-1].groupID = pGrid[i][j].groupID;
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
pGrid[i-1][j+1].groupID = pGrid[i][j].groupID;
pGrid[i][j+1].groupID = pGrid[i][j].groupID;
}else{
if(pGrid[i-1][j-1].used == true && pGrid[i-1][j-1].groupID != 0) //1
{
nMaxDens = pGrid[i-1][j-1].density;
nGroupID = pGrid[i-1][j-1].groupID;
}
if(pGrid[i][j-1].used == true && pGrid[i][j-1].groupID != 0) //2
{
if(nMaxDens < pGrid[i][j-1].density)
{
nMaxDens = pGrid[i][j-1].density;
nGroupID = pGrid[i][j-1].groupID;
}
}
if(pGrid[i-1][j].used == true && pGrid[i-1][j].groupID != 0) //3
{
if(nMaxDens < pGrid[i-1][j].density)
{
nMaxDens = pGrid[i-1][j].density;
nGroupID = pGrid[i-1][j].groupID;
}
}
if(pGrid[i-1][j+1].used == true && pGrid[i-1][j+1].groupID != 0) //4
{
if(nMaxDens < pGrid[i-1][j+1].density)
{
nMaxDens = pGrid[i-1][j+1].density;
nGroupID = pGrid[i-1][j+1].groupID;
}
}
if(pGrid[i][j+1].used == true && pGrid[i][j+1].groupID != 0) //5
{
if(nMaxDens < pGrid[i][j+1].density)
{
nMaxDens = pGrid[i][j+1].density;
nGroupID = pGrid[i][j+1].groupID;
}
}
//分配groupID给未分配的cell
pGrid[i][j].groupID = nGroupID;
// if(pGrid[i-1][j-1].groupID == 0)
pGrid[i-1][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i][j-1].groupID == 0)
pGrid[i][j-1].groupID = pGrid[i][j].groupID;
// if(pGrid[i-1][j].groupID == 0)
pGrid[i-1][j].groupID = pGrid[i][j].groupID;
// if(pGrid[i-1][j+1].groupID == 0)
pGrid[i-1][j+1].groupID = pGrid[i][j].groupID;
// if(pGrid[i][j+1].groupID == 0)
pGrid[i][j+1].groupID = pGrid[i][j].groupID;
}
break;
case 8: //check 5 neighbors
while (true) {
if(pGrid[i][j-1].used == true) //1
{
if(pGrid[i][j-1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j-1].used == true) //2
{
if(pGrid[i+1][j-1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j].used == true) //3
{
if(pGrid[i+1][j].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i][j+1].used == true) //4
{
if(pGrid[i][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
if(pGrid[i+1][j+1].used == true) //5
{
if(pGrid[i+1][j+1].groupID == 0) nUsedTab = true;
else{
nUsedTab = false;
break;
}
}
break;
}//end while
if(pGrid[i][j].groupID == 0 && nUsedTab == true)
{
pGrid[i][j].groupID = ++nGroupNum;
pGrid[i][j-1].groupID = pGrid[i][j].groupID;
pGrid[i+1][j-1].groupID = pGrid[i][j].groupID;
pGrid[i+1][j].groupID = pGrid[i][j].groupID;
pGrid[i][j+1].groupID = pGrid[i][j].groupID;
pGrid[i+1][j+1].groupID = pGrid[i][j].groupID;
}else{
if(pGrid[i][j-1].used == true && pGrid[i][j-1].groupID != 0) //1
{
nMaxDens = pGrid[i][j-1].density;
nGroupID = pGrid[i][j-1].groupID;
}
if(pGrid[i+1][j-1].used == true && pGrid[i+1][j-1].groupID != 0) //2
{
if(nMaxDens < pGrid[i+1][j-1].density)
{
nMaxDens = pGrid[i+1][j-1].density;
nGroupID = pGrid[i+1][j-1].groupID;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?