计算机图形学大作业Word文件下载.docx
《计算机图形学大作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机图形学大作业Word文件下载.docx(24页珍藏版)》请在冰点文库上搜索。
![计算机图形学大作业Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/07264d62-c720-4155-925b-3a13e275fa52/07264d62-c720-4155-925b-3a13e275fa521.gif)
(以下题目文档要求:
①基本论述②算法③程序源代码④界面图)
一、根据Bresenham直线绘制算法,实现直线的绘制。
1.基本论述
2.算法
Bresenham(intx0,inty0,intx1,inty1)
{
intdx,dy,e,i,x,y;
dx=x1-x0;
dy=y1-y0;
e=2*dy-dx;
x=x0;
y=y0;
for(i=0;
i<
=dx;
i++)
{
CDC*pDC=this->
GetDC();
pDC->
SetPixel(x,y,RGB(0,0,0));
if(e>
=0)
{
y++;
e=e-2*dx;
}
else
x++;
e=e+2*dy;
}
}
3.程序源代码
//LINE2View.cpp:
implementationoftheCLINE2Viewclass
//
#include"
math.h"
#include"
stdafx.h"
LINE2.h"
LINE2Doc.h"
LINE2View.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CLINE2View
IMPLEMENT_DYNCREATE(CLINE2View,CView)
BEGIN_MESSAGE_MAP(CLINE2View,CView)
//{{AFX_MSG_MAP(CLINE2View)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:
OnFilePrintPreview)
END_MESSAGE_MAP()
//CLINE2Viewconstruction/destruction
CLINE2View:
CLINE2View()
//TODO:
addconstructioncodehere
~CLINE2View()
BOOLCLINE2View:
PreCreateWindow(CREATESTRUCT&
cs)
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCView:
PreCreateWindow(cs);
//CLINE2Viewdrawing
voidCLINE2View:
OnDraw(CDC*pDC)
{Bresenham(100,100,800,180);
CLINE2Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
adddrawcodefornativedatahere
//CLINE2Viewprinting
OnPreparePrinting(CPrintInfo*pInfo)
//defaultpreparation
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addextrainitializationbeforeprinting
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addcleanupafterprinting
//CLINE2Viewdiagnostics
AssertValid()const
CView:
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
CLINE2Doc*CLINE2View:
GetDocument()//non-debugversionisinline
ASSERT(m_pDocument->
IsKindOf(RUNTIME_CLASS(CLINE2Doc)));
return(CLINE2Doc*)m_pDocument;
#endif//_DEBUG
//CLINE2Viewmessagehandlers
Bresenham(intx0,inty0,intx1,inty1){
e=e-2*dx;
4.程序运行截图
二、用C语言编写:
画y=sin(x)的图形(要求画出[-2π,2π]的图形及笛卡尔坐标)
drawSin(intx,inty,intA)
CDC*pDC=this->
inti=0;
pDC->
MoveTo(x-300,y);
LineTo(x+300,y);
LineTo(x+290,y-10);
MoveTo(x+300,y);
LineTo(x+290,y+10);
MoveTo(x,y+200);
LineTo(x,y-200);
LineTo(x-10,y-190);
MoveTo(x,y-200);
LineTo(x+10,y-190);
MoveTo(-100000,0);
for(i=-314/2;
i<
(314/2);
i++)
{
SetPixel(x+i,(int)A*sin((double)i/25)+y,RGB(0,0,0));
LineTo(x+i,(int)A*sin((double)i/25)+y);
}
//sin2View.cpp:
implementationoftheCSin2Viewclass
sin2.h"
sin2Doc.h"
sin2View.h"
//CSin2View
IMPLEMENT_DYNCREATE(CSin2View,CView)
BEGIN_MESSAGE_MAP(CSin2View,CView)
//{{AFX_MSG_MAP(CSin2View)
//CSin2Viewconstruction/destruction
CSin2View:
CSin2View()
~CSin2View()
BOOLCSin2View:
//CSin2Viewdrawing
voidCSin2View:
{drawSin(300,200,100);
CSin2Doc*pDoc=GetDocument();
//CSin2Viewprinting
//CSin2Viewdiagnostics
CSin2Doc*CSin2View:
IsKindOf(RUNTIME_CLASS(CSin2Doc)));
return(CSin2Doc*)m_pDocument;
//CSin2Viewmessagehandlers
三、用C语言编写一个小圆沿着大圆运动的程序。
for(i=0;
=1800;
{pDC->
Ellipse(220,340,420,140);
Ellipse(320+100*cos(x)+20,240+100*sin(x)+20,320+100*cos(x)-20,240+100*sin(x)-20);
x=x+3.1415926/180;
Sleep(200);
3.程序源代码
//circlesView.cpp:
implementationoftheCCirclesViewclass
circles.h"
circlesDoc.h"
circlesView.h"
//CCirclesView
IMPLEMENT_DYNCREATE(CCirclesView,CView)
BEGIN_MESSAGE_MAP(CCirclesView,CView)
//{{AFX_MSG_MAP(CCirclesView)
//CCirclesViewconstruction/destruction
CCirclesView:
CCirclesView()
~CCirclesView()
BOOLCCirclesView:
//CCirclesViewdrawing
voidCCirclesView:
{
inti;
floatx;
x=0;
this->
{pDC->
CCirclesDoc*pDoc=GetDocument();
//CCirclesViewprinting
//CCirclesViewdiagnostics
CCirclesDoc*CCirclesView:
IsKindOf(RU