📄 layer.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 + -