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

📄 global.h

📁 899289遗传算法源代码89928899289遗传算法源代码9遗传算法源代码
💻 H
字号:
// Global.h: interface for the CGlobal class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GLOBAL_H__A1E35111_D778_41A0_AA7F_E8AB52B17E61__INCLUDED_)
#define AFX_GLOBAL_H__A1E35111_D778_41A0_AA7F_E8AB52B17E61__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define SEDATALEN  200
#define SEDATANUM  20

double const PI = 3.14159265358979;
double const e  = 2.718281828;

typedef struct tagPARAMCTRL
{
	int		nRanSpec;
	int		nFC;
	int		nNN;
	int		nR, nG, nB;
	int		nFA;
	double	dX1, dY1, dX2, dY2;
	double	dYsjb;
	double	dAA, dRP, dRV;
	double	dT17, dT30, dT31;
} PARAMCTRL;

class CGlobal  
{
public:
	CGlobal();
	virtual ~CGlobal();

//ATTRIBUTE
public:
	BYTE* m_pPicDataOld; //实现RGB调整时用来保存原图像的数据
	BYTE* m_pPicDataNew; //实现RGB调整时用来保存调整后的图像的数据
	int m_nPicLeng;       //实现RGB调整时用来保存图像数据的长度(字节)
	int m_nPicBit;        //实现RGB调整时用来保存图像的颜色位数

	double m_dRGBTime;
	//控制参数表
	double m_dSeData0[2][SEDATANUM];
	//     SeData0(0,i)或SeData(1,i) 为临时值
	double m_dSeData[SEDATALEN][SEDATANUM];
	//     23组参数,每组19个参数值
	//     SeData(0,i)组 为初始值
	//     SeData(i,0)=1标志该组有效
	PARAMCTRL m_paraCtrl;

	//调色参数
	int m_nR, m_nG, m_nB;
	//图片大小
	DWORD m_dwHeight, m_dwWidth;

	BOOL m_bESCStop;

	COLORREF m_rgbBackground;

//METHOD
public:

	//设置桌面图片
	void SetWallPaper();//PicBox As PictureBox)
	//清除桌面图片
	void ClearWallPaper();
	//设置桌面图片API调用
	void SetWallPaperA(char* pBmpFile);

	//控制参数压入
	void SeDataIN();
	//控制参数弹出
	void SeDataOUT();
	//  __min();
	//	__max();

	//+++++++++++实现不同方程的牛顿迭代法,并返回方程的各种基本性质+++++++++++++
	int MMi(double x0, double y0, int nN, int M, int nM, 
					 double* Hx, double* Hy, double* dL1, double* dL2, 
					 double* dL3, double* dL4);
		//调用时MMi(x0, y0, Int(SeData(0, 13)), M, nM, dX, dY, dL1, dL2, dL3, dL4)

			// 牛顿迭代法解方程原理:
			// 不失一般性设方程为: f(Z) = 0  (关于复数Z的函数)
			// 对 f(Z) 求导函数得: f//(Z)
			// 对任意复数Z0可以有Z1   , Z1 = Z0 - f(Z0)/f//(Z0)
			// 同样,对复数Z1可以有Z2 , Z2 = Z1 - f(Z1)/f//(Z1)
			// …… …… ……
			// 则,有迭代式:Z(n+1)=Z(n)-f(Z(n))/f//(Z(n))
			// 对于选定的起始点,迭代大多都会收敛于方程f(z) = 0 的某个根,
			// 这就是牛顿迭代法解方程的基本方式;
			// 但也可能存在许多点,使迭代根本就不会收敛,
			// 甚至可能出现混沌的状态。
    
			//dX 第一次迭代x轴的变化率
			//dY 第一次迭代y轴的变化率
			//dL1  第一次迭代移动距离
			//dL2  第nM次迭代移动距离
			//dL3  第nM次迭代距离(0,0)点的距离
			//dL4  迭代得到解以后距离解的大概距离

	//一些复变函数
	//============================
	//Z1^Z2  (复数的复数次方)
	void ZZFang(double x1, double y1, double x2, double y2, double k, double* pX, double* pY);
	//Z1*Z2  (复数乘积)
	void Zji(double x1, double y1, double x2, double y2, double* pX, double* pY);
	//Z1/Z2  (复数商)
	void Zshang(double x1, double y1, double x2, double y2, double* pX, double* pY);
	//Z^N  (复数的实数次方)
	void Zfang(double x1, double y1, double N, double* pX, double* pY);
	//Arg(Z)  (复数的辐角)
	double ZArg(double x, double y, double k);
	//为了实现 Mandelbrot 特效定义的函数 (其实就是Mandelbrot函数迭代)
	void fz2(double x0, double y0, double xx, double yy, double* pX, double* pY, int N);
	//曼德勃罗特集的数学模型非常简单。假设有复数Z和μ,用下式迭代计算:Z=Z2+μ
	int MDBLT(int x0, int y0);

	//++++++++++++更改图像RGB数据++++++++++++++
	void EditRGB(BYTE* pRGBData0, BYTE* pRGBData1, int dLeng, int PicBit, int dR, int dG, int dB, double RGBTimeNow);
	//16位色时返回图片具体编码方式
	int HGetPixelFormat();//Pic As PictureBox)


	void LoadDefault();

};

extern CGlobal G;

#endif // !defined(AFX_GLOBAL_H__A1E35111_D778_41A0_AA7F_E8AB52B17E61__INCLUDED_)

⌨️ 快捷键说明

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