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

📄 datafielddata.cpp

📁 With the De-Yi Li academician s data field theory, creating a single point of data field
💻 CPP
字号:
// DatafieldData.cpp: implementation of the DatafieldData class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SinglePointDataField.h"
#include "DatafieldData.h"

#include "2DMemAllocator.h"

#include "math.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

DatafieldData::DatafieldData()
{
	m_ppGridData = NULL;
	memset(&m_DataInfo,0,sizeof(m_DataInfo));

	m_press=10.0;
	for(int j=0;j<50;j++)
	{
		for(int i=0;i<50;i++)
		{
			Grid[j][i]=0;
		}
	}
	if( !C2DMemAllocator::AllocMemory2D(m_ppGridData, 50, 50) )
	{
		AfxMessageBox("内存分配失败,数据读取没有成功!");
	}
 }

DatafieldData::~DatafieldData()
{
	if( m_ppGridData!=NULL)
	{
		C2DMemAllocator::FreeMemory2D(m_ppGridData);
		m_ppGridData = NULL;
	}
}


void DatafieldData::GenerateDatafield()
{
	int i=0;
	int j=0;

	for(i=0;i<50-0;i++)
	{
		for(j=0;j<50-0;j++)
		{
			int a=0;
			int b=50-0;
			int c=0;
			int d=50-0;
			
			double V=0;

			int x=0;
			int y=0;
			for(x=a;x<b;x++)
			{
				for(y=c;y<d;y++)
				{
					double d=sqrt((abs(x-i))*(abs(x-i))+(abs(y-j))*(abs(y-j)));
					V=V+Grid[x][y]*(exp(-(d/m_press)*(d/m_press)));
				}
			}
			m_ppGridData[i][j]=V;
		}
	}
}

void DatafieldData::ModifyGridData(int x, int y, float z)
{
	Grid[50-x][y-1]=z;
}

void DatafieldData::SetDataInfo()
{
	m_DataInfo.cols=50;
	m_DataInfo.rows=50;
	m_DataInfo.xMax=49;
	m_DataInfo.xMin=0;
	m_DataInfo.yMax=49;
	m_DataInfo.yMin=0;
	
	m_DataInfo.zMax=m_ppGridData[0][0];
	m_DataInfo.zMin=m_ppGridData[0][0];
	for(int i=0;i<50;i++)
	{
		for(int j=0;j<50;j++)
		{
			if (m_ppGridData[i][j]<m_DataInfo.zMin)
			{
				m_DataInfo.zMin=m_ppGridData[i][j];
			}
			if (m_ppGridData[i][j]>m_DataInfo.zMax)
			{
				m_DataInfo.zMax=m_ppGridData[i][j];
			}
		}
	}
	if (m_DataInfo.zMax<=1)
	{
		m_DataInfo.zMax=1;
	}
}

void DatafieldData::init()
{


	for(int j=0;j<50;j++)
	{
		for(int i=0;i<50;i++)
		{
			Grid[j][i]=0;
		}
	}
}

⌨️ 快捷键说明

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