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