亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? drawer.cpp

?? Julia集的分形算法
?? CPP
字號:
// Drawer.cpp: implementation of the Drawer class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Drawer.h"
#include <complex>
using namespace std;

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

Drawer::Drawer(HDC hDC):bReDraw(TRUE),m_OutR(100.0),m_times(500)
{
	m_Rect.left = 100;
	m_Rect.top = 20;
	m_Rect.right = 740;
	m_Rect.bottom = 500;
	nEnlarge = 100;
	Large = 1;
	ParaWindow.dPmin = -2.2;
	ParaWindow.dQmin = -1.2;
	ParaWindow.dPmax = 0.8;
	ParaWindow.dQmax = 1.2;
/*
	ParaWindow.dPmin = -1.0;
	ParaWindow.dQmin = -4.0;
	ParaWindow.dPmax = 8.0;
	ParaWindow.dQmax = 8.0;
*/	
	m_hDC = CreateCompatibleDC(hDC);
	m_hBitmap = CreateCompatibleBitmap(hDC,640,480);
	SelectObject(m_hDC,m_hBitmap);
}

Drawer::~Drawer()
{
	DeleteDC(m_hDC);
	DeleteObject(m_hBitmap);
	m_hBitmap = NULL;
	m_hDC = NULL;
}

void Drawer::Enlarge(RECT rt)
{
	int iTmp;
	double dTmp;
	double dp,dq;
	if(rt.left > rt.right)
	{
		iTmp = rt.right;
		rt.right = rt.left;
		rt.left = iTmp;
	}
	if(rt.top > rt.bottom)
	{
		iTmp = rt.bottom;
		rt.bottom = rt.top;
		rt.top = iTmp;
	}
	if(rt.left < m_Rect.left) return;
	if(rt.top < m_Rect.top) return;
	if(rt.right > m_Rect.right)	return;
	if(rt.bottom > m_Rect.bottom) return;
	
	dp = (ParaWindow.dPmax - ParaWindow.dPmin)/(m_Rect.right - m_Rect.left);
	dq = (ParaWindow.dQmax - ParaWindow.dQmin)/(m_Rect.bottom - m_Rect.top);

	dTmp = ParaWindow.dPmin;
	ParaWindow.dPmin = ParaWindow.dPmin + dp*(rt.left - m_Rect.left);
	ParaWindow.dPmax = dTmp + dp*(rt.right - m_Rect.left);

	dTmp = ParaWindow.dQmin;
	ParaWindow.dQmin = ParaWindow.dQmin + dq*(rt.top - m_Rect.top);
	ParaWindow.dQmax = dTmp + dq*(rt.bottom - m_Rect.top);

	bReDraw = TRUE;
}

void Drawer::Reset()
{
	ParaWindow.dPmin = -2.0;
	ParaWindow.dQmin = -2.0;
	ParaWindow.dPmax = 2.0;
	ParaWindow.dQmax = 2.0;
	bReDraw = TRUE;
}

void Drawer::DrawJulia(HDC hDC)
{
	if(!bReDraw)
	{
		BitBlt(hDC, m_Rect.left, m_Rect.top, m_Rect.right-m_Rect.left,\
			m_Rect.bottom-m_Rect.top, m_hDC, 0, 0,SRCCOPY);
		return;
	}
	int i = m_Rect.left,i1(0);
	int j = m_Rect.top,j1(0);
	int k = 0;
	double r;
	double x0(0),y0(0),dp,dq;

	// c1 = λ - 1;c2 = λ - 2;
	std::complex<double> C1(-1.0,0);
	std::complex<double> C2(-2.0,0);

	dp = (ParaWindow.dPmax - ParaWindow.dPmin)/(m_Rect.right - m_Rect.left);
	dq = (ParaWindow.dQmax - ParaWindow.dQmin)/(m_Rect.bottom - m_Rect.top);

	for(i1 = 0;i < m_Rect.right;i++,i1++)
	{
		for(j1 = 0,j = m_Rect.top;j<m_Rect.bottom;j++,j1++)
		{
			x0 = ParaWindow.dPmin + dp*i1;
			y0 = ParaWindow.dQmin + dq*j1;

			std::complex<double> Z(0,0);
			std::complex<double> Tn(x0,y0);
			
			for(k = 0;k<m_times;k++)
			{
			//	Tn = Tn = (pow(Tn,2) + C1)/(Tn*2.0 + C2);
			//	Tn = pow(Tn,2);
				Z = pow(Z,2) + Tn;
			
			//	Z = (pow(Z,2) + Tn + C1)/(Z*2.0 + Tn + C2);
			//	Z = pow(Z,2);
				r = abs(Z);
				r *= r;
			
				if(r > m_OutR)
					break;
			}

			if (k >= m_times) k = r*100;
			k *= 0x1111ff;
			
			
			SetPixelV(hDC, i, j, k);
			
			
			SetPixelV(m_hDC, (i-m_Rect.left), (j-m_Rect.top), k);
		}
	}
	bReDraw = FALSE;
}

void Drawer::Resize(HDC hDC,RECT Rect)
{
	HBITMAP hBitmap = NULL;
	
	hBitmap = CreateCompatibleBitmap(hDC,Rect.right - Rect.left,Rect.bottom - Rect.top);
	if(hBitmap)
	{
		m_Rect = Rect;
		DeleteObject(m_hBitmap);
		m_hBitmap = hBitmap;
		SelectObject(m_hDC,hBitmap);
		bReDraw = TRUE;
	}
	
}

void Drawer::DrawTnCurve(HDC hDC)
{
//	MessageBox(NULL,NULL,NULL,MB_OK);
	double Labuda0 = 2.0 - 1.0/(1.0 + pow(2.0,1.0/6.0));
	double Labuda = Labuda0 + 0*(2 - Labuda0)/10;

	//Draw coordinate in the Rect;
	SetMapMode(hDC,MM_LOENGLISH);
	SetViewportOrgEx(hDC,m_Rect.right - 50,(-Large)*(m_Rect.top + 20) + 2*(m_Rect.top + 20),NULL);
	MoveToEx(hDC,0,0,NULL);
	LineTo(hDC,0,-(Large)*m_Rect.bottom);
	MoveToEx(hDC,0,0,NULL);
	LineTo(hDC,-(Large*10)*m_Rect.right,0);
	MoveToEx(hDC,20,20,NULL);
	LineTo(hDC,-m_Rect.right + 50,-m_Rect.right + 50);

	//Draw The Tn Curve;
	double Z = 0.0;
	double Tn = 0.0;
	HPEN pen = CreatePen(PS_SOLID,1,RGB(0,255,0));
	HPEN pOldPen;
	double Tn_Z = 0;
	BOOL bFirst = TRUE;
	for(Z = -3.0; Z < 0.1; Z += 0.00001)
	{
		Tn = ((Z*Z + Labuda -1)/(2*Z + Labuda -2));
		Tn = pow(Tn,7.0);
		if(abs(100*nEnlarge*Z - 100*nEnlarge*Tn) == 0 && bFirst)// break;
		{
			bFirst = FALSE;
			Tn_Z = nEnlarge*Z;		
		}
		SetPixelV(hDC,(long)nEnlarge*Z,(long)nEnlarge*Tn,RGB(255,0,0));
	}
	Z = 1 - Labuda;
	Tn = ((Z*Z + Labuda -1)/(2*Z + Labuda -2));
	Tn = pow(Tn,7.0);
	pOldPen = (HPEN)SelectObject(hDC,pen);
	MoveToEx(hDC,(long)nEnlarge*Z,(long)nEnlarge*Tn,NULL);
	LineTo(hDC,0,(long)nEnlarge*Tn);
	SelectObject(hDC,&pOldPen);
	if(pen)
	{
		DeleteObject(pen);
		pen = CreatePen(PS_SOLID,1,RGB(178,0,155));
	}
	SelectObject(hDC,pen);
	MoveToEx(hDC,(long)nEnlarge*Tn,(long)nEnlarge*Tn,NULL);
	LineTo(hDC,(long)nEnlarge*Tn,-(long)nEnlarge*m_Rect.bottom);
	if(pen)
	{
		DeleteObject(pen);
		pen = CreatePen(PS_SOLID,1,RGB(0,0,255));
	}
	SelectObject(hDC,pen);
	MoveToEx(hDC,(long)Tn_Z,(long)Tn_Z,NULL);
	LineTo(hDC,0,(long)Tn_Z);
	if(pen)
	{
		DeleteObject(pen);
		SelectObject(hDC,&pOldPen);
	}
}

BOOL Drawer::SaveBMP()
{
	BITMAPFILEHEADER bmpFHD = {0};
	BITMAPINFOHEADER bmpIFH = {0};
	LPBYTE lpBits = NULL;
	BITMAP bm = {0};
	
	int nRes = GetObject(m_hBitmap,sizeof(BITMAP),&bm);
	
	if(nRes == 0)
	{
		MessageBox(NULL,NULL,"存儲信息錯誤!",MB_OK);
		return FALSE;
	}

	bmpIFH.biBitCount = bm.bmBitsPixel;
	bmpIFH.biHeight = bm.bmHeight;
	bmpIFH.biWidth = bm.bmWidth;
	bmpIFH.biSize = sizeof(BITMAPINFOHEADER) + bmpIFH.biClrUsed*sizeof(RGBQUAD);
	bmpIFH.biSizeImage = bm.bmWidthBytes*bm.bmHeight;
	bmpIFH.biPlanes = 1;
	
	lpBits = (LPBYTE)GlobalAlloc(GMEM_FIXED,bmpIFH.biSizeImage);
	
	if(!lpBits)
	{
		MessageBox(NULL,NULL,"分配內存錯誤!",MB_OK);
		return FALSE;
	}
	
	if(!GetDIBits(m_hDC,m_hBitmap,0,(WORD)bmpIFH.biHeight,lpBits,(BITMAPINFO*)&bmpIFH,DIB_RGB_COLORS))
	{
		MessageBox(NULL,NULL,"獲取圖片信息出錯",MB_OK);
		return FALSE;
	}

	HANDLE hf;
	hf = CreateFile("D:\\1.bmp",GENERIC_READ | GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	if(hf == INVALID_HANDLE_VALUE)
	{
		return FALSE;
	}
	bmpFHD.bfType = 0x4D42;
	bmpFHD.bfOffBits = sizeof(BITMAPFILEHEADER) + bmpIFH.biSize ;//+ bmpIFH.biClrUsed*sizeof(RGBQUAD); 
	bmpFHD.bfSize = sizeof(BITMAPFILEHEADER) + bmpIFH.biSize + bmpIFH.biSizeImage;
	bmpFHD.bfReserved1 = bmpFHD.bfReserved2 = 0;
	
	DWORD lpTmp;
	if(!WriteFile(hf,(LPVOID)&bmpFHD,sizeof(BITMAPFILEHEADER),&lpTmp,NULL))
	{
		MessageBox(NULL,"寫頭文件出錯",NULL,MB_OK);
		return FALSE;
	}
	if(!WriteFile(hf,(LPVOID)&bmpIFH,sizeof(BITMAPINFOHEADER) + bmpIFH.biClrUsed*sizeof(RGBQUAD),&lpTmp,NULL))
	{
		MessageBox(NULL,"寫頭文件信息出錯",NULL,MB_OK);
		return FALSE;
	}
	if(!WriteFile(hf,(LPVOID)lpBits,bmpIFH.biSizeImage,&lpTmp,NULL))
	{
		MessageBox(NULL,"寫頭文件內容出錯",NULL,MB_OK);
		return FALSE;
	}

	if(!CloseHandle(hf))
	{
		return FALSE;
	}
	return TRUE;
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情五月婷婷| 91捆绑美女网站| 91视频www| 日韩一二三区不卡| 自拍偷拍欧美精品| 黑人巨大精品欧美一区| 欧美在线观看一二区| 日本一区二区三级电影在线观看 | 韩国av一区二区| 色婷婷av一区| 国产欧美日韩在线| 久久精品二区亚洲w码| 欧美日韩高清影院| 亚洲免费av在线| 波多野结衣在线aⅴ中文字幕不卡| 91精品国产日韩91久久久久久| 亚洲欧美另类小说| 9i在线看片成人免费| 久久精品人人做| 国产在线精品一区二区夜色| 欧美一区二区黄色| 日本v片在线高清不卡在线观看| 色狠狠一区二区| 亚洲男人天堂av网| 91在线云播放| 亚洲精品大片www| 在线亚洲一区观看| 亚洲一区在线观看视频| 欧美日韩亚洲丝袜制服| 午夜电影网一区| 欧美精品久久久久久久多人混战 | 久久精品国内一区二区三区| 欧美无乱码久久久免费午夜一区| 一区二区三区影院| 欧美在线三级电影| 亚洲成av人片一区二区梦乃| 欧美日韩美少妇| 日韩在线一区二区| 欧美成人video| 国产成人日日夜夜| 最近日韩中文字幕| 欧美日韩一区二区三区高清| 视频在线观看一区二区三区| 日韩精品中文字幕一区| 国产专区欧美精品| 亚洲欧洲www| 欧美日韩精品综合在线| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩一区二区三区高清免费看看| 美女一区二区视频| 中文字幕av不卡| 色狠狠色噜噜噜综合网| 日韩精品三区四区| 久久精品一二三| 97超碰欧美中文字幕| 一区二区三区蜜桃| 日韩一区二区三区四区| 成人看片黄a免费看在线| 亚洲最大的成人av| 精品国产91乱码一区二区三区| 成人免费看片app下载| 亚洲图片自拍偷拍| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 99精品欧美一区| 亚洲成人一区在线| 国产欧美日韩亚州综合| 欧美视频日韩视频在线观看| 韩国一区二区三区| 一二三四社区欧美黄| 精品欧美乱码久久久久久| 99久久精品久久久久久清纯| 美女视频免费一区| 亚洲午夜一区二区| 国产精品天干天干在线综合| 欧美一级夜夜爽| 91年精品国产| 国产成人午夜电影网| 免费观看在线色综合| 亚洲精品精品亚洲| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久电影网电视剧免费观看| 亚洲素人一区二区| 久久男人中文字幕资源站| 欧美性生活久久| 成人精品电影在线观看| 麻豆精品在线视频| 亚洲一区二区在线视频| 中文字幕亚洲综合久久菠萝蜜| 精品国产成人在线影院 | 久久久久青草大香线综合精品| 欧美特级限制片免费在线观看| 国产尤物一区二区| 麻豆国产精品视频| 日韩在线播放一区二区| 亚洲自拍欧美精品| 亚洲欧美偷拍卡通变态| 国产精品蜜臀在线观看| 亚洲精品一区二区三区蜜桃下载 | 免费观看成人av| 五月天欧美精品| 亚洲国产一区视频| 亚洲欧洲制服丝袜| 亚洲人快播电影网| 亚洲人成在线观看一区二区| 中文字幕日韩一区| 亚洲精品五月天| 亚洲综合精品自拍| 一区二区在线观看免费| 亚洲裸体在线观看| 亚洲乱码一区二区三区在线观看| 国产精品久久久久影院| 国产精品嫩草影院com| 中文字幕在线观看不卡| 国产精品视频一二三| 中文字幕亚洲综合久久菠萝蜜| 国产精品美女一区二区三区| 国产精品丝袜久久久久久app| 中文字幕av一区 二区| 中文字幕乱码久久午夜不卡| 国产精品美女久久久久久| 成人免费小视频| 亚洲国产中文字幕| 日本欧美大码aⅴ在线播放| 久久99深爱久久99精品| 国产大陆精品国产| 成人白浆超碰人人人人| 99re这里都是精品| 欧美日韩中文字幕精品| 日韩一区二区三区电影在线观看 | 在线一区二区视频| 精品视频在线免费看| 日韩一区二区三区av| 国产日韩三级在线| 一区二区三区四区在线免费观看| 亚洲成人av一区二区| 国产综合色精品一区二区三区| 成人av网在线| 欧美日韩aaaaa| 2022国产精品视频| ...xxx性欧美| 毛片不卡一区二区| 99久久夜色精品国产网站| 欧美色倩网站大全免费| 精品国产乱子伦一区| 综合久久综合久久| 蜜桃在线一区二区三区| 成人免费av在线| 7777精品伊人久久久大香线蕉| 久久综合一区二区| 亚洲午夜在线视频| 国产99一区视频免费| 欧美日韩国产欧美日美国产精品| 久久蜜桃香蕉精品一区二区三区| av资源网一区| 在线观看网站黄不卡| 激情综合色综合久久综合| 成人免费视频播放| 欧美电影在线免费观看| 亚洲在线一区二区三区| 男女性色大片免费观看一区二区| 成人听书哪个软件好| 欧美一区二区三区免费视频| 国产精品全国免费观看高清| 男女男精品网站| 久久久欧美精品sm网站| 亚洲一区二区三区中文字幕在线| 国产伦精一区二区三区| 欧美人动与zoxxxx乱| 亚洲欧美在线视频观看| 国产精品一区在线| 日韩视频在线一区二区| 一区二区三区不卡视频| 粉嫩av亚洲一区二区图片| 91精品国产高清一区二区三区| 亚洲精品日日夜夜| 成人av电影在线| 中文字幕欧美国产| 蜜桃久久久久久久| 在线观看91av| 亚洲国产精品视频| 91福利国产成人精品照片| 中文字幕 久热精品 视频在线| 国产中文一区二区三区| 日韩三级电影网址| 蜜桃视频一区二区| 6080yy午夜一二三区久久| 午夜精品久久久久久久99樱桃| 91丨九色porny丨蝌蚪| 偷窥少妇高潮呻吟av久久免费| 91成人网在线| 亚洲一区二区三区四区中文字幕| 91在线视频网址| 亚洲乱码国产乱码精品精98午夜| 99久久亚洲一区二区三区青草| 国产拍揄自揄精品视频麻豆| 国产成人午夜精品5599| 国产亚洲精品福利| 成人精品视频一区二区三区尤物| 国产午夜精品在线观看| 国产成人精品网址|