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

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

?? graphicview.cpp

?? 計算機圖形學課程設計源碼 這是大二的時候學計算機圖形學時做的課程設計
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// graphicView.cpp : implementation of the CGraphicView class
//

#include "stdafx.h"
#include "graphic.h"
#include "math.h"
#include "graphicDoc.h"
#include "graphicView.h"
#include<iostream.h>
#include "cjp.h"
#include "fill.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

int cntL=0,cntS=0,cntB=0,cntQ=0,cnt;	//+++
bool bn; double sishu1,sishu2,cosA,sinA;

/////////////////////////////////////////////////////////////////////////////
// CGraphicView

IMPLEMENT_DYNCREATE(CGraphicView, CView)

BEGIN_MESSAGE_MAP(CGraphicView, CView)
	//{{AFX_MSG_MAP(CGraphicView)
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_WM_CANCELMODE()
	ON_COMMAND(ID_MENU_AREA, OnMenuArea)
	ON_COMMAND(ID_MENU_BEZIER, OnMenuBezier)
	ON_COMMAND(ID_MENU_SIRCLE, OnMenuSircle)
	ON_COMMAND(ID_MENU_FREEHAND, OnMenuFreehand)
	ON_COMMAND(ID_MENU_LINE, OnMenuLine)
	ON_COMMAND(ID_BUTTON_Bezier, OnBUTTONBezier)
	ON_COMMAND(ID_BUTTON_Clear, OnBUTTONClear)
	ON_COMMAND(ID_BUTTON_Line, OnBUTTONLine)
	ON_COMMAND(ID_BUTTON_Sircle, OnBUTTONSircle)
	ON_COMMAND(ID_BUTTON_Sphere, OnBUTTONSphere)
	ON_WM_RBUTTONUP()
	ON_WM_RBUTTONDOWN()
	ON_COMMAND(ID_BUTTON_SEEABLE, OnButtonSeeable)
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_BUTTON_SUNLIGHT, OnButtonSunlight)
	ON_COMMAND(ID_BUTTON_RIGHT, OnButtonRight)
	ON_COMMAND(ID_BUTTON_UP, OnButtonUp)
	ON_COMMAND(ID_FILE_FILL, OnFileFill)
	//}}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()

//////////////////////////////////////////////////////////////////
//自己加入的函數
void computecoefficients(int n,int *c)
{int k,i;
	for(k=0;k<=n;k++)
	{	c[k]=1;
		for(i=n;i>=k+1;i--) c[k]*=i;
		for(i=n-k;i>=2;i--) c[k]/=i;
	}//for
}//computecoefficients(int n,int *c)
void computepoint(float u,CPoint *pt,int ncontrols,CPoint *controls,int *c)
{int k,n=ncontrols-1;
	float blend;
	pt->x=(long)0.00;pt->y=(long)0.00;
	for(k=0;k<ncontrols;k++)
	{ blend=float(c[k]*pow(u,k)*pow(1-u,n-k));
	  pt->x+=long(controls[k].x*blend);
	  pt->y+=long(controls[k].y*blend);
	}//for
}//computepoint()
void bezier(CPoint *controls,int ncontrols,int m,CPoint *curve)
{	int *c=(int*)malloc(ncontrols*sizeof(int));
	int i;
	computecoefficients(ncontrols-1,c);
	for(i=0;i<=m;i++)
	computepoint(i/(float)m,&curve[i],ncontrols,controls,c);
	free(c);
}//bezier()

template <class TInpt> void input(int cnt,TInpt *pts){
}//input()
void CGraphicView::circleMidPoint(int xCenter,int yCenter,int radius){
	int x=0;
	int y=radius;
	int p=1-radius;

	circlePlotPoints(xCenter,yCenter,x,y);
	while(x<y)
	{	x++;
		if(p<0)p+=2*x+1;
		else
			{ 	y--;	p+=2*(x-y)+1;	}//else
		circlePlotPoints(xCenter,yCenter,x,y);
		}//while
	}//
/////////////////////////////////////////////////////////////////////////////
// CGraphicView construction/destruction

CGraphicView::CGraphicView()
{	 
  	 m_pDC		=NULL;
	 m_lineStyle=SOLID;
	 m_lineMask =0xffff;
	 m_lineWidth=1;
	 m_penID	=0 ;
	 m_penStyle =0 ;
	 m_maskwidth=16;
	 m_penWidth = 1 ;
	 m_bLine	=false;
	 m_bBezier	=false;
	 m_bSircle	=false;
	 m_bArea	=false;
	 m_bFreehand=false;
	 m_bSphere	=false;
	 m_bSeeable =false;
	 m_bSunlight=false;
	 m_bUp		=false;
	 m_bDown	=false;
	 m_bAnydrect=false;
	 m_bFill	=false;

	 TemPoint=NULL;
	 pEnd	 =NULL;
	 m_StartPoint.x	=0;		
	 m_StartPoint.y	=0;
	 m_LastEndPoint.x=0;	
	 m_LastEndPoint.y=0;
	 m_ForeColor=RGB(0,0,0);
	 m_BackColor=RGB(3,6,9);


}

CGraphicView::~CGraphicView()
{	
	 while(TemPoint){
		dcpt *p=TemPoint;
		TemPoint=TemPoint->next;
		delete p;
	 }//while()
	 pEnd=NULL;
/**/
}

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

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CGraphicView drawing

void CGraphicView::OnDraw(CDC* pDC)
{
	CGraphicDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(!m_pDC) m_pDC=new CClientDC(this);
	m_ForeColor=RGB(255,0,0);

}

/////////////////////////////////////////////////////////////////////////////
// CGraphicView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CGraphicView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CGraphicView message handlers

void CGraphicView::lineany(int xa,int ya,int xb,int yb)
{
//	int i;
	int x,y,xEnd,yEnd;
	if(xa==xb){
	if(ya==yb)setPixel(xa,ya);
	else	 if (ya<yb){yEnd=yb;y=ya;}
		else{yEnd=ya;y=yb;}
	while(y<=yEnd)setPixline(xa,y++,0);
	return ;
	}//if1
if(ya==yb){
	if(xa<=xb){xEnd=xb;x=xa;}
	else{xEnd=xa;x=xb;}
	while(x<=xEnd)setPixline(x++,ya,1);
	return ;
}//if2
	float dx,dy;
	dx=(float)abs(xa-xb);
	dy=(float)abs(ya-yb);
	int k;
	if(ya>yb&&xa>xb||ya<yb&&xa<xb)k=1;
	else k=0;   //tell m>0 or m<0
	float p=2*dy-dx;
	float twoDy=2*dy,twoDyDx=2*(dy-dx);
	if(dx>=dy){
		if(xa>xb){x=xb;y=yb;xEnd=xa;}//if3..
		else{x=xa;y=ya;xEnd=xb;}//else3..
		setPixline(x,y,1);
    if(k)//if4...
	 while(x<xEnd){
		x++;
		if(p<0)p+=twoDy;
		else{y++;p+=twoDyDx;}
		setPixline(x,y,1);
		}//while

    else {
       //	p=-2*dy+dx;
	//twoDyDx=2*(-dy+dx);
 //	dy=-dy;
	while(x<xEnd){x++;
		if(p>=0)p-=twoDy;
		else {y--;p-=twoDyDx;}
		setPixline(x,y,0);
		}//while..
	}//else4...
	}//if3
else {
    p=2*dx-dy;
    twoDy=2*dx;
    twoDyDx=2*(dx-dy);
    if(ya>yb){y=yb;x=xb;yEnd=ya;}//if3..
    else{y=ya;x=xa;yEnd=yb;}//else3..
    if(k)//if5...
	while(y<yEnd){y++;
		if(p<0)p+=twoDy;
		else{x++;p+=twoDyDx;}
		setPixline(x,y,0);

	}//while..
     else{
	p=-2*dx+dy;
	twoDy=2*dx;
	twoDyDx=2*(dx-dy);
	while(y<yEnd){y++;
		if(p>=0)p-=twoDy;
		else {x--;p-=twoDyDx;}
		setPixline(x,y,0);
		}//while..
     }//else5...
  }//else3
/**/
return ;
}//::lineany()
void CGraphicView::setPixel(int x, int y)
{
	if(m_lineStyle==SOLID)m_pDC->SetPixel(x,y,m_ForeColor);
//	else
//		if(m_lineMask&(1<<(m_maskwidth-1)-m_k%m_maskwidth)) 
//			 m_pDC->SetPixel(x,y,m_ForeColor);
//		else m_pDC->SetPixel(x,y,m_BackColor);
}//::setPixel()

void CGraphicView::setPixline(int x, int y, int m)
{
	
	if(m==1){m=y; while(y<m+m_lineWidth) setPixel(x,y++) ; }
		else
		{m=x;while(x<m+m_lineWidth) setPixel(x++,y) ;}
		m_k++;
}//::setPixline()


void CGraphicView::lineany(CPoint p1, CPoint p2)
{
	lineany(p1.x,p1.y,p2.x,p2.y);
}
/**/

void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point) 
{	
	if(m_bSircle&&(GetCapture()==this)){
		ReleaseCapture();
		circleMidPoint(m_StartPoint,point);
		COLORREF color=m_ForeColor;
		m_ForeColor=RGB(250,250,250);
		lineany(m_StartPoint.x,m_StartPoint.y,point.x,point.y);
		m_ForeColor=color;

	}//if sircle

	if(m_bLine&&(GetCapture()==this)){
		ReleaseCapture();
		lineany(m_StartPoint.x,m_StartPoint.y,point.x,point.y);	
	}//if line
	if(m_bFreehand&&(GetCapture()==this)){
		ReleaseCapture();
	}//if freehand
	if(m_bBezier&&(GetCapture()==this)){
		ReleaseCapture();
		if(cnt<=3) setPixel(m_StartPoint.x,m_StartPoint.y);
		if(!TemPoint){ TemPoint=new dcpt;//[m_StartPoint,NULL];
			TemPoint->next=NULL;
			TemPoint->point=m_StartPoint;
			pEnd=TemPoint;
			cnt++;
		}//if
		else 
			if(cnt<=3)
			{pEnd->next=new dcpt;
				pEnd->next->next=NULL;
				pEnd->next->point=m_StartPoint;
				pEnd=pEnd->next;
				cnt++;
			}//else
	}//if bezier
	if((m_bArea||m_bFill)&&(GetCapture()==this)){
		ReleaseCapture();
		setPixel(m_StartPoint.x,m_StartPoint.y);
		if(!TemPoint){ TemPoint=new dcpt;//[m_StartPoint,NULL];
			TemPoint->next=NULL;
			TemPoint->point=m_StartPoint;
			pEnd=TemPoint;}
		else 
		{pEnd->next=new dcpt;
		pEnd->next->next=NULL;
		pEnd->next->point=m_StartPoint;
		lineany(pEnd->point.x,pEnd->point.y,pEnd->next->point.x,pEnd->next->point.y);
		 pEnd=pEnd->next;}//else
	}//if area


	/**/
	CView::OnLButtonUp(nFlags, point);
}

void CGraphicView::OnMouseMove(UINT nFlags, CPoint point) 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美二区三区| 粉嫩av亚洲一区二区图片| 国产精品亚洲成人| 在线观看日韩高清av| 欧美激情一区二区| 青青国产91久久久久久| 91在线丨porny丨国产| 久久婷婷色综合| 日韩精品成人一区二区在线| 在线观看欧美日本| 中文字幕亚洲不卡| 豆国产96在线|亚洲| 26uuu色噜噜精品一区二区| 亚洲一区二区三区美女| www.日本不卡| 国产精品三级av在线播放| 久久国产麻豆精品| 日韩一级片网站| 性做久久久久久免费观看欧美| 色综合色狠狠天天综合色| 国产精品欧美久久久久一区二区| 国产原创一区二区三区| 精品国产1区二区| 久久精品99国产精品日本| 欧美精选午夜久久久乱码6080| 一区二区视频在线看| av一区二区三区| 日韩伦理电影网| 色综合久久久久久久久| 伊人开心综合网| 一本色道a无线码一区v| 亚洲精品成人少妇| 91久久线看在观草草青青| 一区二区三区在线看| 欧美亚洲免费在线一区| 亚洲与欧洲av电影| 一本到三区不卡视频| 亚洲电影第三页| 91精品国产色综合久久不卡电影 | 国产精品免费看片| 成人午夜在线免费| 亚洲欧洲www| 欧美午夜寂寞影院| 日韩国产欧美一区二区三区| 精品少妇一区二区三区免费观看| 久久草av在线| 国产精品久久久久久久久果冻传媒| 国产成人自拍网| 一区二区在线电影| 欧美精品黑人性xxxx| 韩国女主播成人在线| 国产精品乱码久久久久久| 91麻豆文化传媒在线观看| 一区二区国产视频| 精品国产亚洲一区二区三区在线观看| 国产一区二区三区观看| 一区免费观看视频| 欧美午夜电影一区| 国产一区在线视频| 亚洲人午夜精品天堂一二香蕉| 欧美日韩一卡二卡三卡| 久久99精品久久久久久久久久久久| 国产精品无码永久免费888| 在线视频欧美精品| 久久99国产精品免费网站| 国产精品婷婷午夜在线观看| 欧美色电影在线| 国产高清久久久久| 日韩中文字幕亚洲一区二区va在线 | 午夜a成v人精品| 久久久久久久免费视频了| 91色视频在线| 狠狠色丁香婷婷综合| 亚洲精品久久嫩草网站秘色| 欧美大片日本大片免费观看| 91免费视频大全| 国产一区三区三区| 亚洲国产欧美在线| 欧美国产1区2区| 5858s免费视频成人| 成人av小说网| 精品影院一区二区久久久| 亚洲精品国产一区二区精华液| 精品国产3级a| 3atv在线一区二区三区| 一本大道av一区二区在线播放| 国产乱码精品一区二区三区五月婷| 亚洲黄色免费网站| 国产亚洲综合av| 日韩三区在线观看| 欧美色视频在线| 91免费视频大全| aaa欧美色吧激情视频| 激情欧美一区二区| 免费在线观看精品| 亚洲一区二区免费视频| 亚洲人成网站影音先锋播放| 国产亚洲视频系列| 欧美xfplay| 日韩欧美一级在线播放| 精品视频1区2区| 日本久久一区二区三区| 成人ar影院免费观看视频| 国产精品一卡二卡在线观看| 极品美女销魂一区二区三区免费| 日韩精品一级中文字幕精品视频免费观看 | 亚洲国产精品视频| 亚洲在线视频网站| 亚洲欧美视频在线观看视频| 亚洲视频 欧洲视频| 国产精品视频线看| 国产精品美女久久久久aⅴ| 中文一区一区三区高中清不卡| 国产视频一区不卡| 国产女人水真多18毛片18精品视频| 久久在线观看免费| 久久伊99综合婷婷久久伊| 久久人人97超碰com| 国产日产欧美一区| 国产精品乱人伦一区二区| 中文字幕一区不卡| 亚洲欧美日韩国产一区二区三区| 成人免费在线观看入口| 亚洲免费观看高清完整版在线观看熊 | 精品日韩99亚洲| 26uuuu精品一区二区| 国产清纯在线一区二区www| 国产精品视频观看| 亚洲欧美激情一区二区| 亚洲韩国精品一区| 日韩国产精品91| 九色综合狠狠综合久久| 国产乱子伦视频一区二区三区| 99久久国产综合精品麻豆 | 99视频一区二区| 色婷婷av久久久久久久| 在线不卡a资源高清| 欧美不卡视频一区| 国产精品天天摸av网| 一区二区免费在线播放| 日本不卡视频一二三区| 国产东北露脸精品视频| 色av成人天堂桃色av| 日韩女优视频免费观看| 中文字幕一区二区三区不卡在线| 一区二区三区.www| 免费在线观看视频一区| www.亚洲国产| 欧美一区二区三区小说| 国产精品久久久久久久久免费樱桃| 一区二区三区色| 国产一区视频网站| 欧美三级中文字幕在线观看| 久久久亚洲精品石原莉奈| 亚洲人成小说网站色在线| 麻豆中文一区二区| 色婷婷亚洲精品| 欧美激情综合在线| 三级欧美韩日大片在线看| 成人av综合在线| 欧美草草影院在线视频| 亚洲国产成人porn| 成人午夜av在线| 精品国产区一区| 亚洲国产中文字幕在线视频综合| 国产福利不卡视频| 日韩一区二区免费视频| 亚洲线精品一区二区三区| 大桥未久av一区二区三区中文| 91麻豆精品国产91久久久资源速度| 国产精品乱人伦| 国产精品自在在线| 日韩一区二区三区视频在线观看| 一二三四社区欧美黄| 99久久99久久免费精品蜜臀| 精品久久久久久无| 亚洲成av人片在线| 91久久线看在观草草青青| 国产精品的网站| 国产乱码精品一区二区三区av| 日韩一区二区三区四区五区六区 | 国产乱国产乱300精品| 欧美另类高清zo欧美| 一区二区三区国产精品| 97久久超碰精品国产| 欧美韩日一区二区三区| 国产在线一区二区综合免费视频| 欧美精品777| 香蕉av福利精品导航| 欧美三日本三级三级在线播放| 亚洲裸体在线观看| 色天天综合久久久久综合片| 亚洲精品国产无天堂网2021 | 成人毛片老司机大片| 精品三级在线观看| 极品瑜伽女神91| 精品嫩草影院久久| 精品亚洲国产成人av制服丝袜| 欧美大胆人体bbbb| 黑人精品欧美一区二区蜜桃|