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

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

?? 3dgrapher.cpp

?? 克里金、反距離插值算法_柵格圖等值線填充等
?? CPP
字號:
// 3DGrapher.cpp: implementation of the C3DGrapher class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "3DGrapher.h"
#include "gl\glaux.h"
#include <cmath>
using namespace std;

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

C3DGrapher::C3DGrapher()
{
	m_nProjectionType = PERSPECTIVE;
	m_dXrange = 100.0f;
	m_dXrange = 100.0f;
	m_dXrange = 100.0f;
	m_bDepthTest = true;
	m_bCullFace = true;
	m_nShadeModel = SMOOTH;
	m_nPolygonMode = FILL;
	m_dFOV = 45.0f;
	m_dXrot = 20.0f;
	m_dYrot = -20.0f;
	m_dZrot = 0.0f;
	m_dXtran = 0.0f;
	m_dYtran = 0.0f;
	m_dZtran = 0.0f;
	m_strTitle = _T("Untitled");
	m_strXtitle = _T("X");
	m_strYtitle = _T("Y");
	m_strZtitle = _T("Z");
	m_nFontBase = 0;
	m_colBkGnd = RGB(127, 127, 0);
	m_nSize = 0;
}

C3DGrapher::~C3DGrapher()
{
	Clear();
}

void C3DGrapher::Init(HWND hWnd) throw()
{
	ASSERT(::IsWindow(hWnd));

	m_hWnd = hWnd;
	m_hDC = ::GetDC(m_hWnd);
	
	try {
		SetWindowPixelFormat();
		CreateGLContext();
	} catch(CGrapherException e) {
		::MessageBox(NULL, e.what(), _T("GrapherException"), MB_OK);
	}
	CreateFont();
	Initialize();
}

void C3DGrapher::Clear() throw()
{
	list<C3DData*>::iterator iter;

	C3DData* pdata = NULL;
	for(iter=m_listData.begin(); iter!=m_listData.end(); ++iter) {
		pdata = *iter;
		delete pdata;
	}
	m_listData.clear();
}

void C3DGrapher::Destroy() throw()
{
	if(::wglGetCurrentContext())
		::wglMakeCurrent(NULL, NULL);
	if(m_hRC) {
		::wglDeleteContext(m_hRC);
		m_hRC = NULL;
	}
	::ReleaseDC(m_hWnd, m_hDC);
	DeleteFont();
}

void C3DGrapher::Resize(int cx, int cy) throw()
{
	BEGIN_GL
	if(cy==0)
		cx = 1;

	::glViewport(0, 0, cx, cy);
	::glMatrixMode(GL_PROJECTION);
	::glLoadIdentity();

	if(m_nProjectionType == PERSPECTIVE) {
		GLdouble fAspect;
		fAspect = (GLdouble)cx/(GLdouble)cy;
		::gluPerspective(m_dFOV, fAspect, 1.0, m_dZrange*300);
	} else if(m_nProjectionType == ORTHOGRAPHIC) {
		if(cx <= cy)
			::glOrtho(-m_dXrange*1.2, m_dXrange*1.2, -m_dYrange*cy/cx*1.2, m_dYrange*cy/cx*1.2, m_dZrange*300.0, -300*m_dZrange);
		else
			::glOrtho(-m_dXrange*cx/cy*1.2, m_dXrange*cx/cy*1.2, -m_dYrange*1.2, m_dYrange*1.2, 300.0*m_dZrange, -300*m_dZrange);
	}

	::glMatrixMode(GL_MODELVIEW);
	END_GL
}

void C3DGrapher::SetAxisRange(double xRange, double yRange, double zRange) throw()
{
	m_dXrange = xRange;
	m_dYrange = yRange;
	m_dZrange = zRange;
}

void C3DGrapher::SetBkGndColor(COLORREF col) throw()
{
	m_colBkGnd = col;
	BEGIN_GL
	::glClearColor(GetRValue(col)/255.0f, GetGValue(col)/255.0f, GetBValue(col)/255.0f, 1.0);
	END_GL
}

void C3DGrapher::Add3DData(C3DData* pdata) throw()
{
	m_listData.push_back(pdata);
	m_nSize++;
}

void C3DGrapher::SetTitles(string title, string xTitle, string yTitle, string zTitle) throw()
{
	m_strTitle = title;
	m_strXtitle = xTitle;
	m_strYtitle = yTitle;
	m_strZtitle = zTitle;
}

void C3DGrapher::SetWindowPixelFormat() throw(CGrapherException)
{
	PIXELFORMATDESCRIPTOR pfd = {
		sizeof(PIXELFORMATDESCRIPTOR),
			1,
			PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,
			24, 
			0, 0, 0, 0, 0, 0,
			0, 0,
			0, 0, 0, 0, 0,
			32,
			0,
			0,
			PFD_MAIN_PLANE,
			0,
			0, 0, 0
	};

	int nPixelFormat = ChoosePixelFormat(m_hDC, &pfd);
	if(!SetPixelFormat(m_hDC, nPixelFormat, &pfd))
		throw CGrapherException(_T("Failed to set pixel format"));
}

void C3DGrapher::CreateGLContext() throw(CGrapherException)
{
	m_hRC = ::wglCreateContext(m_hDC);
	if(!m_hRC)
		throw CGrapherException(_T("Failed to Create RC"));
	if(!::wglMakeCurrent(m_hDC, m_hRC))
		throw CGrapherException(_T("Failed to set current RC"));
	::wglMakeCurrent(m_hDC, NULL);
}

void C3DGrapher::CreateFont(string fontName, int height) throw(CGrapherException)
{
	BEGIN_GL
	CFont font;
	
	if((m_nFontBase = ::glGenLists(96)) == 0)
		throw CGrapherException(_T("Can't create font"));;

	if(fontName == _T("symbol"))
		font.CreateFont(height, 0, 0, 0, FW_NORMAL, 0, FALSE, FALSE, SYMBOL_CHARSET, OUT_TT_PRECIS,
							CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, DEFAULT_PITCH, fontName.c_str());
	else
		font.CreateFont(height, 0, 0, 0, FW_NORMAL, 0, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,
							CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, DEFAULT_PITCH, fontName.c_str());

	::SelectObject(m_hDC, font);
	::wglUseFontBitmaps(m_hDC, 32, 96, m_nFontBase);
	END_GL
}

void C3DGrapher::DeleteFont()
{
	BEGIN_GL
	if(m_nFontBase == 0)
		return;
	::glDeleteLists(m_nFontBase, 96);
	END_GL
}

void C3DGrapher::PrintString(string str, double x, double y, double z) const throw()
{
	BEGIN_GL
	::glRasterPos3f(x, y, z);
	::glPushAttrib(GL_LIST_BIT);
	::glListBase(m_nFontBase-32);
	::glCallLists(str.length(), GL_UNSIGNED_BYTE, str.c_str());
	::glPopAttrib();
	END_GL
}

void C3DGrapher::Initialize()
{
	BEGIN_GL
	::glClearDepth(1.0);
	if(m_bDepthTest)
		::glEnable(GL_DEPTH_TEST);
	else
		::glDisable(GL_DEPTH_TEST);
	if(m_bCullFace)
		::glEnable(GL_CULL_FACE);
	else
		::glDisable(GL_CULL_FACE);
	if(m_nShadeModel == FLAT)
		::glShadeModel(GL_FLAT);
	else if(m_nShadeModel == SMOOTH)
		::glShadeModel(GL_SMOOTH);

	if(m_nPolygonMode == FILL)
		::glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
	else if(m_nPolygonMode == OUTLINE)
		::glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
	::glClearColor(GetRValue(m_colBkGnd)/255.0f, GetGValue(m_colBkGnd)/255.0f, GetBValue(m_colBkGnd)/255.0f, 1.0);

	::glLineWidth(2.0); // required
	::glPointSize(2.0);
	END_GL
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区欧美一区| 亚洲国产成人tv| 亚洲国产成人va在线观看天堂| 99精品久久只有精品| 中文字幕成人av| 成人的网站免费观看| 欧美国产在线观看| 亚洲国产精品人人做人人爽| 91成人国产精品| 亚洲色图第一区| 99久久精品99国产精品| 国产精品第五页| 色综合一区二区三区| 亚洲精品国产一区二区精华液 | 美日韩一区二区| 欧美一级欧美一级在线播放| 蜜桃一区二区三区在线观看| 日韩精品一区国产麻豆| 国产69精品久久久久777| 国产欧美一区二区三区鸳鸯浴 | 国产情人综合久久777777| 国产成人av资源| 国产女主播视频一区二区| 91色九色蝌蚪| 日本中文字幕一区二区视频| 精品成人a区在线观看| 国产自产高清不卡| 自拍偷拍欧美激情| 日韩欧美色综合网站| 国产精品18久久久| 亚洲免费av高清| 日韩一区二区三区免费看| 狠狠色综合日日| 一区二区中文字幕在线| 欧美中文字幕亚洲一区二区va在线 | 日本少妇一区二区| 欧美一级生活片| 久久综合色之久久综合| 久久成人av少妇免费| 国产一区二区三区在线观看免费视频| 久久成人免费电影| 在线成人午夜影院| 久久久亚洲午夜电影| 一卡二卡三卡日韩欧美| 国产精品996| 欧美日韩一区三区四区| 国产色产综合色产在线视频| 国产麻豆精品theporn| 中文字幕精品在线不卡| 欧美无人高清视频在线观看| 久久国产精品99精品国产| 国产精品国产三级国产有无不卡 | 在线视频一区二区免费| 国产98色在线|日韩| 亚洲成av人综合在线观看| 国产精品无人区| 26uuuu精品一区二区| 3751色影院一区二区三区| 99在线视频精品| 福利一区福利二区| 国产呦萝稀缺另类资源| 日日夜夜免费精品视频| 亚洲国产日产av| 亚洲美女少妇撒尿| 亚洲四区在线观看| 国产精品动漫网站| 日韩码欧中文字| 中文字幕在线不卡一区二区三区| 久久久久久久久蜜桃| 中文字幕亚洲不卡| 成人欧美一区二区三区黑人麻豆| 久久嫩草精品久久久久| 精品福利一二区| 久久亚洲精品国产精品紫薇| 精品处破学生在线二十三| 精品少妇一区二区三区日产乱码| 欧美一二三四区在线| 日韩视频免费直播| 日韩精品在线网站| 久久久国产精品不卡| 久久久久久久电影| 国产偷国产偷精品高清尤物| 久久久久国产精品厨房| 欧美国产日韩亚洲一区| 中文字幕精品三区| 亚洲日本va午夜在线影院| 亚洲精品免费在线观看| 一区二区在线看| 亚洲妇女屁股眼交7| 美女精品自拍一二三四| 国产精品一级片在线观看| 福利一区二区在线观看| 色av成人天堂桃色av| 欧美日韩久久久久久| 日韩精品一区在线观看| 国产欧美日韩综合| 亚洲精品乱码久久久久| 丝袜脚交一区二区| 国产一区二区三区四区五区入口| 粉嫩绯色av一区二区在线观看| 91在线视频免费91| 欧美精品高清视频| 久久久久97国产精华液好用吗| 亚洲国产精品传媒在线观看| 又紧又大又爽精品一区二区| 日本不卡123| 国产成人一区在线| 欧美视频一区二区在线观看| 日韩精品一区二区三区四区| 欧美国产一区视频在线观看| 亚洲一区二区不卡免费| 国产综合色产在线精品| 日本韩国一区二区| 精品免费视频一区二区| 亚洲精品免费在线观看| 韩国一区二区在线观看| 91浏览器入口在线观看| 日韩免费一区二区三区在线播放| 国产精品欧美经典| 日本va欧美va瓶| 93久久精品日日躁夜夜躁欧美| 欧美一区二区啪啪| 中文字幕制服丝袜成人av| 欧美aⅴ一区二区三区视频| jizzjizzjizz欧美| 日韩美女在线视频| 亚洲一区二区三区视频在线| 国内精品写真在线观看| 欧美日韩一级大片网址| 亚洲国产高清在线| 美腿丝袜在线亚洲一区| 在线亚洲精品福利网址导航| 国产午夜精品一区二区| 日本视频一区二区| 在线观看视频一区二区欧美日韩| 久久久午夜电影| 日韩成人免费在线| aaa欧美大片| 欧美激情中文不卡| 国产一区二区中文字幕| 欧美福利电影网| 亚洲自拍都市欧美小说| av午夜精品一区二区三区| 精品粉嫩超白一线天av| 免费观看30秒视频久久| 欧美午夜精品一区二区蜜桃| 久88久久88久久久| 久久网这里都是精品| 国产精品色婷婷久久58| 丝袜美腿亚洲综合| 色噜噜夜夜夜综合网| 日本一区二区三级电影在线观看| 日韩高清一区二区| 欧洲另类一二三四区| 亚洲欧洲国产日本综合| 国产成人免费视| 欧美精品一区二区三区一线天视频| 成人国产亚洲欧美成人综合网| 2024国产精品| 久久国内精品自在自线400部| 欧美高清精品3d| 日韩国产在线观看| 欧美日精品一区视频| 亚洲资源在线观看| 欧美区一区二区三区| 丝袜亚洲另类丝袜在线| 欧美日韩免费电影| 婷婷久久综合九色综合伊人色| 欧美午夜精品一区二区三区| 亚洲成人av中文| 欧美精品三级在线观看| 日本亚洲欧美天堂免费| 欧美刺激午夜性久久久久久久| 麻豆91在线播放| 亚洲精品一区二区三区福利| 国产精品一区二区三区99| 国产偷国产偷精品高清尤物 | 久久综合久色欧美综合狠狠| 麻豆久久久久久久| 久久精品日产第一区二区三区高清版 | 亚洲色图一区二区| 色狠狠一区二区| 水野朝阳av一区二区三区| 欧美精品1区2区3区| 日本少妇一区二区| 久久久久久久性| 色综合天天综合狠狠| 亚洲成在人线在线播放| 日韩欧美在线网站| 国产电影精品久久禁18| 亚洲欧洲综合另类在线| 欧美绝品在线观看成人午夜影视| 日韩av在线播放中文字幕| 日韩免费福利电影在线观看| 丰满少妇在线播放bd日韩电影| 日韩伦理av电影| 欧美一区二区成人| 福利一区福利二区| 五月天丁香久久| 国产欧美中文在线|