⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdlg.cpp

📁 DGCL (An Efficient Density and Grid Based Clustering Algorithm for Large Spatial Database)的实现代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						}
						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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -