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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 3dcontourview.cpp

?? 克里金、反距離插值算法_柵格圖等值線填充等
?? CPP
字號(hào):
// 3DContourView.cpp : implementation file

#include "stdafx.h"
#include "WaferPainter.h"
#include "3DContourView.h"
#include <algorithm>
#include "Dib.h"
#include "InverseDist.h"
#include "Kriging.h"
#include "MainFrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// C3DContourView

IMPLEMENT_DYNCREATE(C3DContourView, CGLSurfaceView)

C3DContourView::C3DContourView() : m_dThickMin(0), m_dThickMax(0)
{
}

C3DContourView::~C3DContourView()
{
}


BEGIN_MESSAGE_MAP(C3DContourView, CGLSurfaceView)
	//{{AFX_MSG_MAP(C3DContourView)
	ON_COMMAND(ID_SHOWLEGEND, OnShowlegend)
	ON_UPDATE_COMMAND_UI(ID_SHOWLEGEND, OnUpdateShowlegend)
	ON_COMMAND(ID_CULLFACE, OnCullface)
	ON_UPDATE_COMMAND_UI(ID_CULLFACE, OnUpdateCullface)
	ON_COMMAND(ID_SMOOTH, OnSmooth)
	ON_UPDATE_COMMAND_UI(ID_SMOOTH, OnUpdateSmooth)
	ON_COMMAND(ID_FLAT, OnFlat)
	ON_UPDATE_COMMAND_UI(ID_FLAT, OnUpdateFlat)
	ON_COMMAND(ID_BGCOLOR, OnBgcolor)
	ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
	ON_COMMAND(ID_FILE_SAVE, OnFileSave)
	ON_COMMAND(ID_SHOWWALL, OnShowwall)
	ON_UPDATE_COMMAND_UI(ID_SHOWWALL, OnUpdateShowwall)
	ON_COMMAND(ID_SHOWBOUNDARY, OnShowboundary)
	ON_UPDATE_COMMAND_UI(ID_SHOWBOUNDARY, OnUpdateShowboundary)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// C3DContourView drawing

void C3DContourView::OnDraw(CDC* pDC)
{
	C3DContourDoc* pDoc = GetDocument();
	// TODO: add draw code here
	CGLSurfaceView::OnDraw(pDC);
}

/////////////////////////////////////////////////////////////////////////////
// C3DContourView diagnostics

#ifdef _DEBUG
void C3DContourView::AssertValid() const
{
	CGLSurfaceView::AssertValid();
}

void C3DContourView::Dump(CDumpContext& dc) const
{
	CGLSurfaceView::Dump(dc);
}

C3DContourDoc* C3DContourView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(C3DContourDoc)));
	return (C3DContourDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// C3DContourView message handlers

void C3DContourView::OnInitialUpdate() 
{	
	// TODO: Add your specialized code here and/or call the base class
	CWaitCursor wait;
	CWaferPainterApp* pApp = static_cast<CWaferPainterApp*>(::AfxGetApp());
	int nDia = pApp->m_nDiameter;
	int nDiameter = 200;
	if(nDia == 1)
		nDiameter = 300;
	int nInterpolater = pApp->m_nInterpolater;

	C3DContourDoc* pDoc = GetDocument();
	vector<Point3D>& input = const_cast<vector<Point3D>&>(pDoc->m_ir.Get3DPoints());

	Interpolater* pInterpolater = NULL;
	if(nInterpolater == 0)
		pInterpolater = new InverseDist(200, 4);
	else if(nInterpolater == 1)
		pInterpolater = new Kriging(input.begin(), input.end(), 4);

	vector<double> vecZs;

	for(int j=0; j<=nDiameter; j++) {
		for(int i=0; i<=nDiameter; i++) {
			double z = pInterpolater->GetInterpolatedZ(j - nDiameter/2, i - 0.5 * nDiameter, input.begin(), input.end());
			vecZs.push_back(z);
		}
	}

	delete pInterpolater;

	vector<double>::iterator iter2;
	iter2 = max_element(vecZs.begin(), vecZs.end());
	m_dThickMax = *iter2;
	iter2 = min_element(vecZs.begin(), vecZs.end());
	m_dThickMin = *iter2;

	// These 3 lines are for determining thickness range. Typical thickness range 4000~7000 is too big
	// compared to x, y range of 200 so I had to reduce it. 
	double MinMaxDiff = m_dThickMax - m_dThickMin;
	double widthRatio = nDiameter;
	double ratio = MinMaxDiff/widthRatio * 4;

	int dataSize = (nDiameter + 1) * (nDiameter + 1);
	C3DData* pdata = C3DData::GetInstance();
	pdata->SetSize(dataSize);

	int ii = 0;
	for(j=0; j<=nDiameter; j++) {
		for(int i=0; i<=nDiameter; i++) {
			pdata->SetAt(ii, i, j, (vecZs[ii]-m_dThickMin)/ratio);
			++ii;
		}
	}

	GetGrapher().Add3DData(pdata);
	GetGrapher().SetAxisRange(nDiameter + 1, (m_dThickMax-m_dThickMin)/ratio, nDiameter);
	GetGrapher().SetMinValue(0);
	GetGrapher().SetTitles(_T(""), _T("Y"), _T("Thickness(mm)"), _T("X"));
	GetGrapher().SetCullFace(false);

	CGLSurfaceView::OnInitialUpdate();
}

void C3DContourView::OnShowlegend() 
{
	// TODO: Add your command handler code here
	GetGrapher().SetLegend(!GetGrapher().IsLegend());
	Invalidate();
}

void C3DContourView::OnUpdateShowlegend(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(GetGrapher().IsLegend());
}

void C3DContourView::OnShowwall() 
{
	// TODO: Add your command handler code here
	GetGrapher().SetWall(!GetGrapher().IsWall());
	Invalidate();
}

void C3DContourView::OnUpdateShowwall(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(GetGrapher().IsWall());
}

void C3DContourView::OnShowboundary() 
{
	// TODO: Add your command handler code here
	GetGrapher().SetBoundary(!GetGrapher().IsBoundary());
	Invalidate();
}

void C3DContourView::OnUpdateShowboundary(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(GetGrapher().IsBoundary());
}

void C3DContourView::OnCullface() 
{
	// TODO: Add your command handler code here
	GetGrapher().SetCullFace(!GetGrapher().IsCullFace());
	Invalidate();
}

void C3DContourView::OnUpdateCullface(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(GetGrapher().IsCullFace());
}

void C3DContourView::OnSmooth() 
{
	// TODO: Add your command handler code here
	GetGrapher().SetShadeModel(C3DGrapher::SMOOTH);
	Invalidate();
}

void C3DContourView::OnUpdateSmooth(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(GetGrapher().GetShadeModel() == C3DGrapher::SMOOTH);
}

void C3DContourView::OnFlat() 
{
	// TODO: Add your command handler code here
	GetGrapher().SetShadeModel(C3DGrapher::FLAT);
	Invalidate();
}

void C3DContourView::OnUpdateFlat(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(GetGrapher().GetShadeModel() == C3DGrapher::FLAT);
}

void C3DContourView::OnBgcolor() 
{
	// TODO: Add your command handler code here
	CColorDialog dlg;
	if(dlg.DoModal() == IDOK) {
		GetGrapher().SetBkGndColor(dlg.GetColor());
		Invalidate();
	}
}

void C3DContourView::OnEditCopy() 
{
	// TODO: Add your command handler code here
	CWaitCursor wait;

	CClientDC scrDC(this);
	CDC memDC;           // screen DC and memory DC
	CBitmap bitmap;
	CBitmap* pOldBitmap;  // handles to deice-dependent bitmaps

	CRect rect;
	GetClientRect(&rect);

	memDC.CreateCompatibleDC(&scrDC);
	/* create a bitmap compatible with the screen DC */
	bitmap.CreateCompatibleBitmap(&scrDC, rect.Width(), rect.Height());

	pOldBitmap = memDC.SelectObject(&bitmap);// select new bitmap into memory DC

	memDC.BitBlt(0, 0, rect.Width(), rect.Height(), &scrDC, 0, 0, SRCCOPY);
	HBITMAP hBitmap = (HBITMAP)bitmap.Detach();

	memDC.SelectObject(pOldBitmap);

	// Place the copy on the clipboard.
	::OpenClipboard(m_hWnd);
    ::EmptyClipboard();
    ::SetClipboardData(CF_BITMAP, hBitmap);
    ::CloseClipboard();

	// clean up 
	memDC.DeleteDC();
}

void C3DContourView::OnFileSave() 
{
	// TODO: Add your command handler code here
	CWaitCursor wait;

	CClientDC scrDC(this);
	CDC memDC;           // screen DC and memory DC
	CBitmap bitmap;
	CBitmap* pOldBitmap;  // handles to deice-dependent bitmaps

	CRect rect;
	GetClientRect(&rect);

	memDC.CreateCompatibleDC(&scrDC);
	bitmap.CreateCompatibleBitmap(&scrDC, rect.Width(), rect.Height());

	pOldBitmap = memDC.SelectObject(&bitmap);// select new bitmap into memory DC

	memDC.BitBlt(0, 0, rect.Width(), rect.Height(), &scrDC, 0, 0, SRCCOPY);

	TCHAR szFilters[] = _T ("bmp files (*.bmp)|*.bmp|All files (*.*)|*.*||");
	CFileDialog dlg(FALSE, _T ("bmp"), _T ("*.bmp"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
		szFilters);
	
	CString filename;
	if(dlg.DoModal() == IDOK)
		filename = dlg.GetPathName();
	else
		return;

	CDib dib;
	try {
		dib.Create(&bitmap);
		dib.Save(filename);
	} catch(CImageException& e) {
		::AfxMessageBox(e.what());
	}

	memDC.SelectObject(pOldBitmap);
	memDC.DeleteDC();

	C3DContourDoc* pDoc = GetDocument();
	pDoc->SetTitle(dlg.GetFileName());
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品视频www在线观看| 国产精品全国免费观看高清 | 亚洲视频一二三区| 丁香亚洲综合激情啪啪综合| 国产精品久久久久7777按摩| 色综合天天天天做夜夜夜夜做| 亚洲精品一二三| 91精品国产综合久久福利| 久久国产精品第一页| 欧美激情一区二区三区四区| 91浏览器在线视频| 日韩精品电影一区亚洲| 2021久久国产精品不只是精品| 丁香婷婷综合激情五月色| 亚洲精品中文字幕在线观看| 欧美日本免费一区二区三区| 国产专区综合网| 亚洲欧洲日韩女同| 欧美高清激情brazzers| 国产精品 欧美精品| 亚洲理论在线观看| 蜜芽一区二区三区| 久久久国产午夜精品| 一本色道久久综合精品竹菊| 手机精品视频在线观看| 久久精品人人爽人人爽| 日本韩国一区二区三区| 麻豆一区二区三| 中文字幕亚洲一区二区va在线| 欧美日韩一区二区三区高清 | 成人性色生活片| 夜夜精品浪潮av一区二区三区| 日韩午夜激情电影| 91在线观看美女| 美女视频一区在线观看| 亚洲视频免费在线| 日韩亚洲国产中文字幕欧美| www.亚洲免费av| 日韩精品一区第一页| 国产精品国产三级国产普通话蜜臀| 欧美午夜精品久久久| 国产成人综合亚洲网站| 偷窥国产亚洲免费视频| 欧美激情一区二区三区| 555www色欧美视频| av电影在线不卡| 韩国精品主播一区二区在线观看| 亚洲精品老司机| 日本一区二区在线不卡| 欧美一级黄色录像| 91麻豆6部合集magnet| 国产一区二区三区观看| 亚洲成人免费观看| 国产精品人成在线观看免费| 日韩欧美精品三级| 欧美日韩在线不卡| 波多野结衣的一区二区三区| 麻豆成人av在线| 亚洲成va人在线观看| 国产精品女主播av| 精品久久久久久无| 7777精品伊人久久久大香线蕉的| 成人av在线资源网站| 国内精品伊人久久久久av一坑| 欧美日韩一区二区欧美激情| www.日韩在线| 国产成人自拍网| 久久99日本精品| 亚洲成av人片一区二区| 亚洲人成7777| 国产精品你懂的在线| 欧美电影免费观看高清完整版在线观看 | 日韩精品一卡二卡三卡四卡无卡| 亚洲欧美欧美一区二区三区| 国产女主播视频一区二区| 日韩三级中文字幕| 欧美高清激情brazzers| 在线亚洲免费视频| 一本色道久久综合狠狠躁的推荐 | 欧美sm极限捆绑bd| 在线不卡a资源高清| 色94色欧美sute亚洲线路一久| 国产91色综合久久免费分享| 精品亚洲porn| 日本不卡不码高清免费观看 | 亚洲图片欧美综合| 亚洲视频一二三区| 精品入口麻豆88视频| 亚洲国产欧美日韩另类综合| 国产高清精品久久久久| 欧美一卡二卡在线观看| 亚洲国产毛片aaaaa无费看| 不卡av免费在线观看| 久久亚洲精精品中文字幕早川悠里| 亚洲成人免费看| 欧美午夜免费电影| 一区二区免费在线播放| 色婷婷久久久亚洲一区二区三区| 亚洲精品一二三| 中文字幕va一区二区三区| 26uuu国产电影一区二区| 日韩欧美国产麻豆| 精品国产一区二区精华| 精品成人在线观看| 亚洲精品一线二线三线无人区| 日韩免费视频一区| 欧美精品一区二区在线播放| 精品盗摄一区二区三区| 久久久精品综合| 中文字幕av一区二区三区免费看| 国产喂奶挤奶一区二区三区| 国产亚洲综合性久久久影院| 欧美激情中文字幕| 一区二区中文视频| 亚洲精品成人悠悠色影视| 99综合电影在线视频| 99久久久精品| 91福利在线播放| 欧美日韩久久久一区| 在线成人小视频| 精品少妇一区二区三区在线播放| 精品久久久久一区| 国产欧美日韩另类一区| **欧美大码日韩| 亚洲成a人片综合在线| 蜜臀av在线播放一区二区三区| 黑人巨大精品欧美一区| 成人视屏免费看| 91官网在线观看| 欧美丰满高潮xxxx喷水动漫| 日韩女优电影在线观看| 国产偷国产偷亚洲高清人白洁| 国产精品福利一区| 亚洲一区二三区| 蜜臀av性久久久久蜜臀av麻豆| 国产一区二区三区四| 99国产精品国产精品毛片| 欧美视频一区二区在线观看| 欧美一级欧美一级在线播放| 精品福利一二区| 亚洲人成影院在线观看| 日韩高清欧美激情| 国产剧情在线观看一区二区| 99久久久精品| 在线不卡免费av| 国产精品色一区二区三区| 欧美图片一区二区三区| 欧美在线高清视频| 成人小视频在线| 久久99精品久久久| 天天av天天翘天天综合网色鬼国产| 国产欧美一区二区三区在线老狼| 欧美午夜精品一区二区蜜桃| 丁香婷婷综合网| 国产精品原创巨作av| 青娱乐精品视频在线| 亚洲网友自拍偷拍| 日韩电影免费一区| 欧美日韩在线三级| 精品国产91久久久久久久妲己| 日韩一区日韩二区| 理论电影国产精品| 成人晚上爱看视频| 欧美一区二区三区在线视频| 国产精品久久三区| 蜜臀精品一区二区三区在线观看 | 日韩欧美国产综合一区 | 色悠久久久久综合欧美99| 欧美一区午夜视频在线观看 | 日韩黄色一级片| 从欧美一区二区三区| 欧美日韩一区在线观看| 国产欧美一二三区| 日本vs亚洲vs韩国一区三区 | av在线播放一区二区三区| 欧美精品自拍偷拍| 亚洲视频一区在线观看| 国产一区二区伦理| 欧美蜜桃一区二区三区| 国产精品福利一区二区三区| 久久精品免费观看| 欧洲激情一区二区| 中文字幕va一区二区三区| 美腿丝袜亚洲一区| 欧美在线观看禁18| 国产精品热久久久久夜色精品三区| 青青草国产精品97视觉盛宴| 91小视频免费观看| 国产亚洲一区二区三区在线观看| 日本成人在线不卡视频| 91麻豆6部合集magnet| 国产人久久人人人人爽| 日韩在线观看一区二区| 色哟哟国产精品免费观看| 国产日韩亚洲欧美综合| 老司机免费视频一区二区三区| 欧美色窝79yyyycom| 中文字幕日韩一区| 国产成人av一区二区| 日韩免费观看高清完整版|