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

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

?? surfer.cpp

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

#include "stdafx.h"
#include "Surfer.h"
using namespace std;

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

#define		BOUNDARY_LIST	1
#define		AXIS_LIST		2
#define		DATA_LIST		3
#define		WALL_LIST		4
#define		IMAGE_LIST		5

GLuint		g_nImageID;

static COLORREF Colors[11] = { RGB(127, 127, 127), RGB(0, 0, 127), RGB(0, 0, 255), RGB(0, 127, 127), RGB(0, 255, 0), 
						RGB(127, 127, 0), RGB(255, 255, 0), RGB(0, 255, 255), RGB(255, 0, 255), RGB(255, 127, 0), 
						RGB(255, 0, 0) };

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

CSurfer::CSurfer()
{
	m_crBoundary = RGB(255, 0, 255);
	m_bBoundary = true;
	m_bWall = true;
	m_pImage = NULL;
	m_bSupportImage = false;
	m_bShowImage = false;
	m_bShowLegend = true;
}

CSurfer::~CSurfer()
{

}

void CSurfer::Init(HWND hWnd) throw()
{
	C3DGrapher::Init(hWnd);

	BuildBoundaryList();
	BuildAxisList();
	BuildDataList();
	BuildWallList();

	SetBkGndColor(RGB(0, 0, 72));
}

void CSurfer::Destroy() throw()
{
	BEGIN_GL
	::glDeleteLists(BOUNDARY_LIST, WALL_LIST);
	if(m_bSupportImage)
		::glDeleteLists(IMAGE_LIST, 1);
	END_GL

	C3DGrapher::Destroy();
}

void CSurfer::Render() throw()
{
	BEGIN_GL
	// Clear First
	::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	// Start rendering
	::glPushMatrix();
	::glTranslated(0, 0, -m_dZrange*2);
	::glTranslated(0, 0, m_dZtran);
	::glRotatef(m_dXrot, 1.0, 0.0, 0.0);
	::glRotatef(m_dYrot, 0.0, 1.0, 0.0);
	::glRotatef(m_dZrot, 0.0, 0.0, 1.0);
	if(m_bBoundary)
		::glCallList(BOUNDARY_LIST);
	::glCallList(AXIS_LIST);
	::glCallList(DATA_LIST);
	if(m_bWall)
		::glCallList(WALL_LIST);
	if(m_bSupportImage && m_bShowImage)
		::glCallList(IMAGE_LIST);
	if(m_bShowLegend)
		ShowLegend();
 	::glPopMatrix();
	// Flush & Swap
	::glFlush();
	::SwapBuffers(m_hDC);
	END_GL
}

void CSurfer::BuildBoundaryList() const throw()
{
	BEGIN_GL
	double x = m_dXrange/2;
	double y = m_dYrange/2;
	double z = m_dZrange/2;

	::glNewList(BOUNDARY_LIST, GL_COMPILE);
	::glColor3ub(GetRValue(m_crBoundary), GetGValue(m_crBoundary), GetBValue(m_crBoundary));

	::glBegin(GL_LINE_LOOP);
	
	::glVertex3d(-x,-y,-z);
	::glVertex3d(x-1,-y,-z);
	::glVertex3d(x-1,y-1,-z);
	::glVertex3d(-x,y-1,-z);
	::glEnd();

	::glBegin(GL_LINE_LOOP);
	::glVertex3d(-x,-y,z-1);
	::glVertex3d(x-1,-y,z-1);
	::glVertex3d(x-1,y-1,z-1);
	::glVertex3d(-x,y-1,z-1);
	::glEnd();

	::glBegin(GL_LINES);
	::glVertex3d(-x,-y,-z);
	::glVertex3d(-x,-y,z-1);

	::glVertex3d(x-1,-y,-z);
	::glVertex3d(x-1,-y,z-1);

	::glVertex3d(x-1,y-1,-z);
	::glVertex3d(x-1,y-1,z-1);

	::glVertex3d(-x,y-1,-z);
	::glVertex3d(-x,y-1,z-1);

	::glEnd();
	::glEndList();
	END_GL
}

void CSurfer::BuildAxisList() const throw()
{
	double x = m_dXrange/2;
	double y = m_dYrange/2;
	double z = m_dZrange/2;

	BEGIN_GL

	::glNewList(AXIS_LIST, GL_COMPILE);
	// x axis(x-coord)
	::glBegin(GL_LINES);
	::glColor3ub(255, 255, 255);
	::glVertex3d(-x, -y, -z);
	::glVertex3d(x, -y, -z);
	::glEnd();
	PrintString(m_strXtitle, x+10, -y-10, -z);

	// y axis(thickness)
	::glBegin(GL_LINES);
	::glColor3ub(255, 255, 255);
	::glVertex3d(-x, -y, -z);
	::glVertex3d(-x, y, -z);
	::glEnd();
	PrintString(m_strYtitle, -x, y+10, -z);

	// z axis(y-coord)
	::glBegin(GL_LINES);
	::glColor3ub(255, 255, 255);
	::glVertex3d(-x, -y, -z);
	::glVertex3d(-x, -y, z);
	::glEnd();
	PrintString(m_strZtitle, -x-20, -y-10, z+10);

	::glEndList();
	END_GL
}

void CSurfer::BuildDataList() const throw()
{
	BEGIN_GL
	C3DData* pdata;
	double xPos, yPos, thickness;
	double x, y, z;
	
	// We'll have only one C3DData*
	pdata = m_listData.front();

	::glNewList(DATA_LIST, GL_COMPILE);
	double i;
	for(double j=0; j<m_dZrange-1; j+=1) {
		::glBegin(GL_TRIANGLE_STRIP);
		i = 0;
		xPos = i;
		yPos = j;
		thickness = pdata->GetZdata((int)(i + m_dXrange*j));
		x = -m_dXrange/2+xPos;
		y = -m_dYrange/2+thickness;
		z = -m_dZrange/2+yPos;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
		for(i=0; i<m_dXrange; i+=1) {
			xPos = i;
			yPos = j+1;
			thickness = pdata->GetZdata((int)(i + m_dXrange*(j+1)));
			x = -m_dXrange/2+xPos;
			y = -m_dYrange/2+thickness;
			z = -m_dZrange/2+yPos;
			SetDataColor(thickness);
			::glVertex3f(x, y, z);

			xPos = i+1;
			yPos = j;
			thickness = pdata->GetZdata((int)(i + 1 + m_dXrange*j));
			x = -m_dXrange/2+xPos;
			y = -m_dYrange/2+thickness;
			z = -m_dZrange/2+yPos;
			SetDataColor(thickness);
			::glVertex3f(x, y, z);
		}
		::glEnd();
	}
	::glEndList();
	END_GL
}

void CSurfer::BuildWallList() const throw()
{
	BEGIN_GL
	C3DData* pdata;
	double xPos, yPos, thickness;
	double x, y, z;
	pdata = m_listData.front();

	::glNewList(WALL_LIST, GL_COMPILE);
	// x-t plane where y=0
	::glFrontFace(GL_CCW);
	::glBegin(GL_QUAD_STRIP);
	xPos = 0;
	yPos = 0;
	thickness = 0;
	x = -m_dXrange/2+xPos;
	y = -m_dYrange/2+thickness;
	z = -m_dZrange/2+yPos;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	SetDataColor(thickness);
	thickness = pdata->GetZdata(0);
	y = -m_dYrange/2+thickness;
	::glVertex3f(x, y, z);
	for(int i=1; i<m_dXrange; i++) {
		xPos = (double)i;
		thickness = 0;
		x = -m_dXrange/2+xPos;
		y = -m_dYrange/2+thickness;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
		thickness = pdata->GetZdata(i);
		y = -m_dYrange/2+thickness;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
	}
	::glEnd();
	// x-t plane where y=height
	::glFrontFace(GL_CW);
	::glBegin(GL_QUAD_STRIP);
	xPos = 0;
	yPos = m_dZrange -1;
	thickness = 0;
	x = -m_dXrange/2+xPos;
	y = -m_dYrange/2+thickness;
	z = -m_dZrange/2+yPos;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	thickness = pdata->GetZdata((int)(m_dXrange*(m_dZrange-1)));
	y = -m_dYrange/2+thickness;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	for(i=1; i<m_dXrange; i++) {
		xPos = (double)i;
		thickness = 0;
		x = -m_dXrange/2+xPos;
		y = -m_dYrange/2+thickness;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
		thickness = pdata->GetZdata((int)(m_dXrange*(m_dZrange-1) + i));
		y = -m_dYrange/2+thickness;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
	}
	::glEnd();
	// y-t plane where x=0
	::glFrontFace(GL_CW);
	::glBegin(GL_QUAD_STRIP);
	xPos = 0;
	yPos = 0;
	thickness = 0;
	x = -m_dXrange/2+xPos;
	y = -m_dYrange/2+thickness;
	z = -m_dZrange/2+yPos;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	thickness = pdata->GetZdata(0);
	y = -m_dYrange/2+thickness;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	for(i=1; i<m_dZrange; i++) {
		yPos = (double)i;
		thickness = 0;
		y = -m_dYrange/2+thickness;
		z = -m_dZrange/2+yPos;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
		thickness = pdata->GetZdata((int)(i*m_dXrange));
		y = -m_dYrange/2+thickness;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
	}
	::glEnd();
	// y-t plane where x=width
	::glFrontFace(GL_CCW);
	::glBegin(GL_QUAD_STRIP);
	xPos = m_dXrange-1;
	yPos = 0;
	thickness = 0;
	x = -m_dXrange/2+xPos;
	y = -m_dYrange/2+thickness;
	z = -m_dZrange/2+yPos;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	thickness = pdata->GetZdata(0);
	y = -m_dYrange/2+thickness;
	SetDataColor(thickness);
	::glVertex3f(x, y, z);
	for(i=1; i<m_dZrange; i++) {
		yPos = (double)i;
		thickness = 0;
		y = -m_dYrange/2+thickness;
		z = -m_dZrange/2+yPos;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
		thickness = pdata->GetZdata((int)(i*m_dXrange + m_dXrange - 1));
		y = -m_dYrange/2+thickness;
		SetDataColor(thickness);
		::glVertex3f(x, y, z);
	}
	::glEnd();
	::glEndList();
	END_GL
}

void CSurfer::ShowLegend() const throw() 
{
	double x = m_dXrange/2;
	double y = m_dYrange/2;
	double z = m_dZrange/2;

	CRect rt;
	::GetClientRect(m_hWnd, &rt);

	BEGIN_GL

	::glPopMatrix();
	::glPushMatrix();
	::glTranslated(0.0, 0.0, -4);

	::glColor3f(1.0, 1.0, 1.0);
	::gluOrtho2D(0.0f, rt.right, 0, rt.bottom);
	::glBegin(GL_LINE_LOOP);
	::glVertex2f(rt.right+rt.right/4.0f, y+rt.bottom+60);
	::glVertex2f(rt.right+rt.right/4.0f, y+rt.bottom-300);
	::glVertex2f(rt.right+rt.right/2.0f, y+rt.bottom-300);
	::glVertex2f(rt.right+rt.right/2.0f, y+rt.bottom+60);
	::glEnd();

	int size = sizeof(Colors)/sizeof(Colors[0]);
	int yoffset = 0;
	string str;
	for(int i=0; i<size; i++) {
		::glColor3ub(GetRValue(Colors[i]), GetGValue(Colors[i]), GetBValue(Colors[i]));
		::glBegin(GL_QUADS);
		::glVertex2f(rt.right+20.0f+rt.right/4, y+rt.bottom-280+yoffset);
		::glVertex2f(rt.right+20.0f+rt.right/3, y+rt.bottom-280+yoffset);
		::glVertex2f(rt.right+20.0f+rt.right/3, y+rt.bottom-260+yoffset);
		::glVertex2f(rt.right+20.0f+rt.right/4, y+rt.bottom-260+yoffset);
		::glEnd();
		char buf[128];
		::sprintf(buf, _T("%d%%"), i*10);
		str = buf;
		PrintString(str, rt.right+30.0f+rt.right/3, y+rt.bottom-280+yoffset, 0);
		yoffset += 30;
	}

	END_GL
}

void CSurfer::SetDataColor(double thickness) const throw()
{
	if(m_dYrange == m_dThicknessMin) {
		BEGIN_GL
		::glColor3ub(255, 0, 0);
		END_GL
	}
	double ratio = (thickness-m_dThicknessMin) / (m_dYrange-m_dThicknessMin);
	int size = sizeof(Colors)/sizeof(Colors[0]);
	int nRatio = ratio * (size - 1);

	COLORREF col = Colors[nRatio];
	BEGIN_GL
	::glColor3ub(GetRValue(col), GetGValue(col), GetBValue(col));
	END_GL
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品亚洲日本在线桃色 | 欧美精品欧美精品系列| 国产suv精品一区二区6| 国产99久久久国产精品潘金网站| 精品亚洲国产成人av制服丝袜 | 国产精品免费丝袜| 欧美激情一区不卡| 国产精品免费av| 亚洲欧美激情插| 亚洲欧美激情插| 天使萌一区二区三区免费观看| 亚洲超碰97人人做人人爱| 天天综合天天综合色| 午夜久久久久久久久久一区二区| 亚洲一区二区av电影| 亚洲资源中文字幕| 日韩经典一区二区| 九九在线精品视频| 国产成人av一区| av亚洲精华国产精华| 97se亚洲国产综合在线| 色美美综合视频| 91精品国产综合久久久蜜臀粉嫩 | 一二三四社区欧美黄| 天堂成人免费av电影一区| 激情综合色综合久久综合| 国产激情一区二区三区| 91首页免费视频| 日韩欧美中文字幕精品| 国产亚洲一区字幕| 亚洲欧美经典视频| 久久国产精品无码网站| 成人av免费网站| 91麻豆精品国产综合久久久久久| 26uuu久久综合| 亚洲色图欧美激情| 艳妇臀荡乳欲伦亚洲一区| 日本不卡的三区四区五区| 成人教育av在线| 67194成人在线观看| 自拍av一区二区三区| 美女精品一区二区| 91视频www| 久久久久国产精品麻豆| 日本麻豆一区二区三区视频| 99在线精品一区二区三区| 日韩欧美国产三级| 亚洲一区视频在线| 成人免费视频caoporn| 欧美日韩国产bt| 亚洲色图欧美偷拍| 国产美女主播视频一区| 精品视频色一区| 2023国产精品视频| 日韩精品福利网| 在线观看视频一区二区欧美日韩| 久久日一线二线三线suv| 午夜精品久久久久久久久久久| 99re热这里只有精品免费视频| 日韩视频一区在线观看| 午夜视频在线观看一区| 99久久精品免费看| 久久亚洲精品国产精品紫薇| 亚洲成av人片一区二区| 色婷婷精品大在线视频| 日本一区二区高清| 国产精品一区二区在线观看网站 | 中文字幕 久热精品 视频在线| 亚洲第一搞黄网站| 欧美图片一区二区三区| 一色屋精品亚洲香蕉网站| 激情综合五月天| 日韩精品一区二区三区老鸭窝| 亚洲一级二级在线| 91成人国产精品| 亚洲图片另类小说| 色悠悠久久综合| 一区二区三区四区在线播放| 色素色在线综合| 亚洲黄一区二区三区| 91免费精品国自产拍在线不卡 | 日韩高清不卡一区二区| 91精品在线观看入口| 免费成人在线播放| 久久精品一区二区| 国产98色在线|日韩| 中文成人av在线| 97精品国产露脸对白| 中文字幕视频一区| 欧美性猛交xxxxxxxx| 五月婷婷激情综合| 久久影音资源网| 成人精品视频一区二区三区| 亚洲毛片av在线| 91精品国产综合久久久蜜臀图片| 美腿丝袜亚洲色图| 国产欧美日韩一区二区三区在线观看 | 色嗨嗨av一区二区三区| 亚洲线精品一区二区三区 | 精品一区二区三区在线观看| 精品88久久久久88久久久| 国产成人免费视频| 亚洲一区二区偷拍精品| 精品国产免费人成电影在线观看四季| 国产美女精品人人做人人爽| 国产精品美女久久久久久久久久久| 色婷婷综合久久久中文一区二区 | 午夜精品视频一区| 亚洲精品一区二区三区福利| av福利精品导航| 午夜激情久久久| 精品日韩一区二区| 91精彩视频在线观看| 亚洲国产精品人人做人人爽| 欧美一区二区久久| 色综合久久中文字幕综合网| 偷拍自拍另类欧美| 国产欧美日韩久久| 欧美日韩dvd在线观看| 国产精品亚洲第一区在线暖暖韩国| 一区二区三区蜜桃| 国产午夜亚洲精品午夜鲁丝片| 欧美午夜电影网| av一二三不卡影片| 极品尤物av久久免费看| 亚洲图片自拍偷拍| 国产精品视频一二三| 欧美一级免费大片| 欧洲一区在线观看| www.久久精品| 国产剧情一区二区三区| 婷婷中文字幕综合| 亚洲免费av观看| 中文字幕第一区第二区| 日韩欧美国产成人一区二区| 日本精品一级二级| 91啪在线观看| 成人a区在线观看| 国产91精品免费| 国产不卡视频在线播放| 韩国欧美国产1区| 性欧美大战久久久久久久久| 欧美精品一区二区三区高清aⅴ | 欧美在线短视频| 成年人国产精品| 高清成人免费视频| 久久国产综合精品| 一区二区久久久久久| 亚洲人一二三区| 亚洲人成在线播放网站岛国| 中文字幕av一区 二区| 欧美极品xxx| 中文字幕五月欧美| 亚洲欧美另类久久久精品2019| 国产精品区一区二区三区 | 国产精品一二三四| 国内精品伊人久久久久av影院 | 国产成人高清在线| 国产99久久久精品| 91视频你懂的| 欧美人伦禁忌dvd放荡欲情| 欧美日韩国产天堂| 欧美成人欧美edvon| 国产日韩av一区二区| 国产精品入口麻豆九色| 亚洲乱码国产乱码精品精小说| 亚洲免费三区一区二区| 午夜精品福利一区二区三区av| 日本欧美一区二区三区| 国产在线麻豆精品观看| 不卡的av网站| 欧美日韩国产电影| 精品国产露脸精彩对白| 亚洲国产成人自拍| 亚洲一区二区高清| 国产综合久久久久影院| 91在线视频播放| 欧美一区二区美女| 久久久久九九视频| 亚洲一区中文日韩| 国产一区欧美二区| 欧美性受极品xxxx喷水| 欧美精品一区二区三区很污很色的| 欧美国产精品一区二区三区| 夜色激情一区二区| 国产精品18久久久久久久网站| 成人动漫精品一区二区| 欧美日本在线看| 亚洲国产精品ⅴa在线观看| 亚洲一区欧美一区| 国产精品自拍网站| 欧美日韩精品系列| 久久精品亚洲精品国产欧美kt∨| 中文字幕一区av| 精品一区二区三区久久久| 色偷偷久久人人79超碰人人澡| 欧美本精品男人aⅴ天堂| 亚洲欧洲av色图| 国产露脸91国语对白| 欧美丝袜丝交足nylons图片|