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

📄 layer.cpp

📁 采用距离反比加权算法
💻 CPP
字号:
// Layer.cpp: implementation of the CLayer class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Test.h"
#include "Layer.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CLayer::CLayer()
{

}

CLayer::~CLayer()
{
  Clear();
}
void CLayer::Clear()
{
	m_ScatterArray.RemoveAll();
	m_GridArray.Clear();
}
void CLayer::DivGridXY()
{
   m_GridArray.Clear();

/////////////////////开辟格子///////////////////
   int i,j,k;
   CGLVertex vertex;

   double dbDeltaX=(m_dbMaxX-m_dbMinX)/m_nX;
   double dbDeltaY=(m_dbMaxY-m_dbMinY)/m_nY;

   for(i=0;i<m_nX;i++)
	   for(j=0;j<m_nY;j++)
	   {
		   CGridXY *pGridXY=new CGridXY;
		   pGridXY->m_dbLeft=m_dbMinX+i*dbDeltaX;
		   pGridXY->m_dbTop=m_dbMinY+j*dbDeltaY;
		   pGridXY->m_dbBottom=m_dbMinY+(j+1)*dbDeltaY;
		   pGridXY->m_dbRight=m_dbMinX+(i+1)*dbDeltaX;
		   
		   m_GridArray.Add(pGridXY);
	   }

	int nCount=m_ScatterArray.GetSize();

	for(k=0;k<nCount;k++)
	{
		vertex=m_ScatterArray.GetAt(k);
		for(i=0;i<m_nX;i++)
			for(j=0;j<m_nY;j++)
			{
				if(vertex.x>(m_dbMinX+i*dbDeltaX-dbDeltaX/2)&&vertex.x<(m_dbMinX+(i+1)*dbDeltaX+dbDeltaX/2)&&\
					vertex.y>(m_dbMinY+i*dbDeltaY-dbDeltaY/2)&&vertex.y<(m_dbMinY+(i+1)*dbDeltaY+dbDeltaY/2))
				{
					CGridXY *pGrid=m_GridArray.GetAt(i*m_nY+j);
					pGrid->m_ScatterArray.Add(vertex);
				}
			}
	}
	IsValid();
}
void CLayer::IsValid()
{
	BOOL  ret=TRUE;
	int nCount=m_GridArray.GetSize();

	for(int i=0;i<nCount;i++)
	{
		CGridXY *pGrid=m_GridArray.GetAt(i);
		if(pGrid==NULL)
		  ret=FALSE;
			
		int nNum=pGrid->m_ScatterArray.GetSize();
		if(nNum<1)
			ret=FALSE;
	}
	if(!ret)
	{
	  if(m_nY>=2)
		  m_nY--;
	  else
		  m_nX--;
	  if(m_nY<1)
		  m_nY=1;
	  if(m_nX<1)
		  m_nX=1;
      DivGridXY();
	}	
}
void CLayer::Init(int x,int y,double dbMaxX,double dbMinX,double dbMaxY,double dbMinY)
{
	m_nY=y;
	m_nX=x;
    
	m_dbMinX=dbMinX;
	m_dbMaxX=dbMaxX;

	m_dbMinY=dbMinY;
	m_dbMaxY=dbMaxY;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -