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

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

?? modelview.cpp

?? 一個模式識別的小程序
?? CPP
字號:
// modelView.cpp : implementation of the CModelView class
//

#include "stdafx.h"
#include "model.h"

#include "modelDoc.h"
#include "modelView.h"

#define WSIZE 2000

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

/////////////////////////////////////////////////////////////////////////////
// CModelView

IMPLEMENT_DYNCREATE(CModelView, CView)

BEGIN_MESSAGE_MAP(CModelView, CView)
	//{{AFX_MSG_MAP(CModelView)
	ON_WM_LBUTTONDOWN()
	ON_WM_RBUTTONDOWN()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CModelView construction/destruction

CModelView::CModelView()
{
	// TODO: add construction code here

}

CModelView::~CModelView()
{
}

BOOL CModelView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CModelView drawing

void CModelView::OnDraw(CDC* pDC)
{
	CModelDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
//	int i;
	
	if (!pDoc)
		return;

	draw2(pDoc);
//	for(i=0;i<pDoc->mid.GetSize();i++)
//		drawpoint1(pDoc->mid.GetAt(i));
	draw1(pDC,pDoc);
}

/////////////////////////////////////////////////////////////////////////////
// CModelView printing

BOOL CModelView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CModelView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CModelView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CModelView diagnostics

#ifdef _DEBUG
void CModelView::AssertValid() const
{
	CView::AssertValid();
}

void CModelView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CModelView message handlers

void CModelView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	
}

void CModelView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CModelDoc* pDoc = GetDocument();	
	pDoc->lpoints.Add(point);
	drawpoint1(point);
	
	CView::OnLButtonDown(nFlags, point);
}

void CModelView::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CModelDoc* pDoc = GetDocument();	
	pDoc->rpoints.Add(point);
	drawpoint2(point);
	
	CView::OnRButtonDown(nFlags, point);
}

void CModelView::drawpoint1(CPoint point)
{
	CDC *dc=GetDC();
	CPen newpen(PS_SOLID,1,RGB(0,0,255)), * oldpen;
	oldpen=dc->SelectObject(&newpen);
	dc->MoveTo(point.x-2,point.y-2);
	dc->LineTo(point.x+3,point.y+3);
	dc->MoveTo(point.x-2,point.y+2);
	dc->LineTo(point.x+3,point.y-3);
	dc->SelectObject(oldpen);
	ReleaseDC(dc);

}

void CModelView::drawpoint2(CPoint point)
{	
	CDC *dc=GetDC();
	CPen newpen(PS_SOLID,1,RGB(255,0,0)), * oldpen;
	oldpen=dc->SelectObject(&newpen);
	dc->MoveTo(point.x-2,point.y-2);
	dc->LineTo(point.x+3,point.y+3);
	dc->MoveTo(point.x-2,point.y+2);
	dc->LineTo(point.x+3,point.y-3);
	dc->SelectObject(oldpen);
	ReleaseDC(dc);
}

void CModelView::draw1(CDC *pDC, CModelDoc *pDoc) //點數多易出錯
{
	CPoint start,end;
	int j,tag;

	//第一條線
	if(pDoc->aa.GetSize())
	{
		start.x = pDoc->mid.GetAt(0).x - 2000;
		end.x = pDoc->mid.GetAt(0).x + 2000;
		start.y = (int)(pDoc->mid.GetAt(0).y - pDoc->aa.GetAt(0)*2000);
		end.y = (int)(pDoc->mid.GetAt(0).y + pDoc->aa.GetAt(0)*2000);

		pDC->MoveTo(start);
		pDC->LineTo(end);
		Sleep(1000);
	}

	for(int i=1;i<pDoc->aa.GetSize();i++)
	{
		if(pDoc->mid.GetAt(i).x !=0 && pDoc->mid.GetAt(i).y !=0)
		{
			FindFather(pDoc->BT,i,j,tag);
///////////////////////////////////////////////////////////////////////////////////////////
			if(pDoc->aa.GetAt(j) == INT_MAX)		//x = b1
			{
				if(pDoc->aa.GetAt(j) == pDoc->aa.GetAt(i))
				{
					start.x = (int)pDoc->bb.GetAt(i);
					end.x = (int)pDoc->bb.GetAt(i);
					start.y = 2000;
					end.y = -2000;
				}
				else if(tag == 1)
				{
					start.x = (int)pDoc->bb.GetAt(j);		//start.x = b1
					end.x = pDoc->mid.GetAt(i).x + 2000;
					start.y = (int)(start.x * pDoc->aa.GetAt(i) + pDoc->bb.GetAt(i));	//y=a2*x+b2 
					end.y = (int)(end.x * pDoc->aa.GetAt(i) + pDoc->bb.GetAt(i));
				}
				else
				{
					start.x = (int)pDoc->bb.GetAt(j);
					end.x = pDoc->mid.GetAt(i).x - 2000;
					start.y = (int)(start.x * pDoc->aa.GetAt(i) + pDoc->bb.GetAt(i));
					end.y = (int)(end.x * pDoc->aa.GetAt(i) + pDoc->bb.GetAt(i));
				}

				pDC->MoveTo(start);
				pDC->LineTo(end);
				Sleep(1000);
			}
///////////////////////////////////////////////////////////////////////////////////////////////
			else if(pDoc->aa.GetAt(j) == 0)		//y = b1
			{
				if(pDoc->aa.GetAt(j) == pDoc->aa.GetAt(i))
				{
					start.y = (int)pDoc->bb.GetAt(i);
					end.y = (int)pDoc->bb.GetAt(i);
					start.x = 2000;
					end.x = -2000;
				}
				else if(tag == 1)
				{
					start.y = (int)pDoc->bb.GetAt(j);		//start.y = b1
					end.y = pDoc->mid.GetAt(i).y + 2000;
					if(pDoc->aa.GetAt(i)!=INT_MAX)
					{
						start.x = (int)((start.y - pDoc->bb.GetAt(i)) / pDoc->aa.GetAt(i));	//x=(y-b2)/a2
						end.x = (int)((end.y - pDoc->bb.GetAt(i)) / pDoc->aa.GetAt(i));
					}
					else
					{
						start.x = (int)pDoc->bb.GetAt(i);
						end.x = (int)pDoc->bb.GetAt(i);
					}
				}
				else
				{
					start.y = (int)pDoc->bb.GetAt(j);		//start.y = b1
					end.y = pDoc->mid.GetAt(i).y - 2000;
					if(pDoc->aa.GetAt(i)!=INT_MAX)
					{
						start.x = (int)((start.y - pDoc->bb.GetAt(i)) / pDoc->aa.GetAt(i));	//x=(y-b2)/a2
						end.x = (int)((end.y - pDoc->bb.GetAt(i)) / pDoc->aa.GetAt(i));
					}
					else
					{
						start.x = (int)pDoc->bb.GetAt(i);
						end.x = (int)pDoc->bb.GetAt(i);
					}
				}

				pDC->MoveTo(start);
				pDC->LineTo(end);
				Sleep(1000);
			}
///////////////////////////////////////////////////////////////////////////////////////////////
			else				
			{
				if(pDoc->aa.GetAt(j) == pDoc->aa.GetAt(i))
				{
					start.x = pDoc->mid.GetAt(i).x - 2000;
					end.x = pDoc->mid.GetAt(i).x + 2000;
					start.y = (int)(pDoc->mid.GetAt(i).y - pDoc->aa.GetAt(i)*2000);
					end.y = (int)(pDoc->mid.GetAt(i).y + pDoc->aa.GetAt(i)*2000);
				}
				else if(tag == 1)	//x2*a1+b1<y2
				{
					if(pDoc->aa.GetAt(i) == 0)
					{
						start.y = (int)pDoc->bb.GetAt(i);
						start.x = (int)((start.y - pDoc->bb.GetAt(j)) / pDoc->aa.GetAt(j));	//x=(y-b1)/a1
						end.y = start.y;
						end.x = start.x + 2000;
					}
					else if(pDoc->aa.GetAt(i) == INT_MAX)
					{
						start.x = (int)pDoc->bb.GetAt(i);
						start.y = (int)(start.x * pDoc->aa.GetAt(j) + pDoc->bb.GetAt(j));
						end.x = start.x;
						end.y = start.y + 2000;
					}
					else	//最普通的情形 
					{
						start.x = (int)((pDoc->bb.GetAt(i) - pDoc->bb.GetAt(j))/(pDoc->aa.GetAt(j) - pDoc->aa.GetAt(i)));	
						//start.x=(b2-b1)/(a1-a2)
						start.y = (int)(start.x * pDoc->aa.GetAt(j) + pDoc->bb.GetAt(j));	//y=a1*x+b1
						end.y = pDoc->mid.GetAt(i).y + 2000;
						end.x = (int)((end.y - pDoc->bb.GetAt(i)) / pDoc->aa.GetAt(i));	//x=(y-b2)/a2
					}
	
				}
				else
				{

					if(pDoc->aa.GetAt(i) == 0)
					{
						start.y = (int)pDoc->bb.GetAt(i);
						start.x = (int)((start.y - pDoc->bb.GetAt(j)) / pDoc->aa.GetAt(j));	//x=(y-b1)/a1
						end.y = start.y;
						end.x = start.x - 2000;
					}
					else if(pDoc->aa.GetAt(i) == INT_MAX)
					{
						start.x = (int)pDoc->bb.GetAt(i);
						start.y = (int)(start.x * pDoc->aa.GetAt(j) + pDoc->bb.GetAt(j));
						end.x = start.x;
						end.y = start.y - 2000;
					}
					else	//最普通的情形 
					{
						start.x = (int)((pDoc->bb.GetAt(i) - pDoc->bb.GetAt(j))/(pDoc->aa.GetAt(j) - pDoc->aa.GetAt(i)));	
						//start.x=(b2-b1)/(a1-a2)
						start.y = (int)(start.x * pDoc->aa.GetAt(j) + pDoc->bb.GetAt(j));	//y=a1*x+b1
						end.y = pDoc->mid.GetAt(i).y - 2000;
						end.x = (int)((end.y - pDoc->bb.GetAt(i)) / pDoc->aa.GetAt(i));	//x=(y-b2)/a2
					}
				
				}

				pDC->MoveTo(start);
				pDC->LineTo(end);
				Sleep(1000);
			}
//////////////////////////////////////////////////////////////////////////////////////////////
		}	//end for
	}	//end if
}

void CModelView::draw2(CModelDoc *pDoc)
{
	for(int i=0;i<pDoc->lpoints.GetSize();i++)
		drawpoint1(pDoc->lpoints[i]);
	for(i=0;i<pDoc->rpoints.GetSize();i++)
		drawpoint2(pDoc->rpoints[i]);
}



void CModelView::FindFather(BiTree T,int x,int &j,int &tag)
{
	if(!T)
		return;

	else
	{
		if(T->lchild) 
		{
			if(T->lchild->data == x)	{j = T->data;tag = 1;return;}
			else FindFather(T->lchild,x,j,tag);
		}
		if(T->rchild)
		{
			if(T->rchild->data == x)	{j = T->data;tag = 0;return;}
			else FindFather(T->rchild,x,j,tag);
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自拍在线| 日韩精品一卡二卡三卡四卡无卡| 日韩一区二区在线观看视频| 欧美最新大片在线看| 色综合色狠狠天天综合色| 99视频一区二区三区| 9人人澡人人爽人人精品| 国产成人8x视频一区二区| 成人avav在线| 欧美午夜不卡视频| 欧美精品三级日韩久久| 日韩一区二区精品葵司在线| 精品美女在线观看| 精品播放一区二区| 欧美激情资源网| 亚洲精品欧美综合四区| 一区二区三区日韩精品视频| 五月综合激情日本mⅴ| 蜜桃久久av一区| 国产精品综合一区二区三区| 91在线精品一区二区三区| 欧美体内she精高潮| 91精品在线免费| 久久久久久久久久久久久久久99| 国产精品丝袜在线| 亚洲尤物在线视频观看| 精品一区二区综合| 成av人片一区二区| 欧美年轻男男videosbes| 久久亚洲私人国产精品va媚药| 欧美高清在线一区二区| 亚洲成人三级小说| 国产乱码精品一区二区三区五月婷| 成人亚洲一区二区一| 欧美日韩亚洲丝袜制服| 国产欧美日韩三区| 亚洲小说欧美激情另类| 国产精品1024| 欧美精品黑人性xxxx| 久久婷婷国产综合精品青草| 亚洲男人的天堂一区二区| 麻豆精品视频在线观看免费| 丰满岳乱妇一区二区三区| 欧美片在线播放| 中文字幕亚洲一区二区va在线| 亚洲福利一区二区三区| 国产福利一区在线观看| 欧美精品丝袜中出| 国产精品久久久久久久久免费桃花 | 国产婷婷色一区二区三区在线| 亚洲免费伊人电影| 国产精品羞羞答答xxdd| 制服丝袜亚洲精品中文字幕| 中文字幕制服丝袜一区二区三区| 蜜桃av噜噜一区| 精品视频一区二区三区免费| 欧美国产精品v| 激情综合五月天| 日韩亚洲欧美一区| 午夜在线成人av| 欧美亚洲一区三区| 欧美极品少妇xxxxⅹ高跟鞋| 国内精品写真在线观看| 欧美片网站yy| 日韩精品电影在线| 欧美老女人在线| 亚洲一区二区三区中文字幕| 91丨九色丨蝌蚪丨老版| 国产精品视频一二三区| 国产精品自拍在线| 精品成人一区二区三区| 麻豆成人久久精品二区三区红| 欧美色老头old∨ideo| 亚洲美女在线国产| 色成人在线视频| 亚洲精品久久久久久国产精华液| 成人国产一区二区三区精品| 国产精品欧美一区喷水| 成人sese在线| 亚洲美女视频一区| 欧美曰成人黄网| 午夜一区二区三区视频| 欧美高清视频在线高清观看mv色露露十八| 一区二区三区视频在线观看| 欧洲亚洲国产日韩| 亚州成人在线电影| 日韩亚洲国产中文字幕欧美| 韩国一区二区三区| 久久久久久久综合色一本| 国产成人免费视频网站| 亚洲欧洲精品一区二区精品久久久| 99免费精品视频| 亚洲一区二区三区四区在线观看 | 日本一区二区三区国色天香| 成人av第一页| 午夜精品福利一区二区蜜股av| 欧美日韩国产片| 狠狠色狠狠色综合| 国产精品的网站| 欧美日韩国产一二三| 美女视频一区二区| 国产亚洲成年网址在线观看| 色综合久久中文字幕综合网| 亚洲国产精品久久艾草纯爱| 日韩欧美一级二级| 成人性色生活片免费看爆迷你毛片| 国产精品久久久久久久久久久免费看| 91国内精品野花午夜精品| 久久99久久精品欧美| 亚洲欧美日本在线| 欧美大片国产精品| gogo大胆日本视频一区| 午夜一区二区三区在线观看| 欧美国产综合一区二区| 欧美日韩中文字幕一区| 福利一区在线观看| 午夜久久电影网| 国产精品白丝在线| 日韩三级.com| 色悠久久久久综合欧美99| 久88久久88久久久| 亚洲一区二区三区小说| 欧美—级在线免费片| 日韩午夜av一区| 色av成人天堂桃色av| 国产精品香蕉一区二区三区| 毛片不卡一区二区| 自拍偷拍亚洲欧美日韩| 久久久噜噜噜久噜久久综合| 欧美嫩在线观看| 在线观看免费亚洲| 成人av网站在线观看免费| 国内精品视频666| 亚洲超碰精品一区二区| 亚洲欧美国产毛片在线| 国产农村妇女精品| 精品福利av导航| 91精品国产欧美日韩| 欧美亚洲精品一区| www.亚洲国产| 国产91高潮流白浆在线麻豆 | 欧美电影免费提供在线观看| 欧美在线观看你懂的| 色综合一个色综合| 成人黄色在线网站| 成人免费看的视频| 粉嫩av一区二区三区粉嫩| 国产精品一区二区久久精品爱涩 | 色综合婷婷久久| 成人av在线观| 粉嫩av一区二区三区在线播放| 国产精品亚洲第一| 国产精品夜夜爽| 国产91精品一区二区麻豆亚洲| 国产一区999| 国产高清在线精品| 国产91高潮流白浆在线麻豆 | 色吧成人激情小说| 色中色一区二区| 欧美videos大乳护士334| 欧美大片拔萝卜| 久久先锋影音av| 国产亚洲欧洲一区高清在线观看| 精品国产污污免费网站入口| 久久久国产综合精品女国产盗摄| 久久久天堂av| 自拍偷拍亚洲综合| 亚洲国产日韩a在线播放性色| 天堂va蜜桃一区二区三区漫画版 | 国产精品亚洲а∨天堂免在线| 国产电影一区在线| av电影一区二区| 欧美三级电影精品| 精品国产污网站| 中文字幕一区二区三| 伊人开心综合网| 日韩黄色免费电影| 国产乱码字幕精品高清av| 91视频观看免费| 欧美群妇大交群中文字幕| 久久综合视频网| 亚洲美女屁股眼交| 蜜臀av国产精品久久久久| 成人国产精品免费观看动漫| 欧美日韩一级片网站| 久久夜色精品国产欧美乱极品| 亚洲色欲色欲www在线观看| 香蕉av福利精品导航| 国产成人综合在线播放| 欧美亚洲综合久久| 国产免费观看久久| 日韩精品一卡二卡三卡四卡无卡| 国产在线观看一区二区| 色噜噜狠狠成人网p站| 日韩欧美国产一区在线观看| 自拍偷拍亚洲综合| 久久aⅴ国产欧美74aaa| 色婷婷av一区| 国产午夜精品久久久久久久| 天天操天天综合网|