计算机图形学实验一Word文档下载推荐.docx

上传人:b****1 文档编号:5257731 上传时间:2023-05-04 格式:DOCX 页数:16 大小:246.17KB
下载 相关 举报
计算机图形学实验一Word文档下载推荐.docx_第1页
第1页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第2页
第2页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第3页
第3页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第4页
第4页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第5页
第5页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第6页
第6页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第7页
第7页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第8页
第8页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第9页
第9页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第10页
第10页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第11页
第11页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第12页
第12页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第13页
第13页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第14页
第14页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第15页
第15页 / 共16页
计算机图形学实验一Word文档下载推荐.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机图形学实验一Word文档下载推荐.docx

《计算机图形学实验一Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验一Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。

计算机图形学实验一Word文档下载推荐.docx

CurrentDraw=DRAW_MIDELLIPSE。

//VC画线、VC画圆、VC画椭圆命令处理函数

OnDrawVcline(>

CurrentDraw=DRAW_VCLINE。

DrawType=0。

OnDrawVccircle(>

CurrentDraw=DRAW_VCCIRCLE。

DrawType=0。

OnDrawVcellipse(>

CurrentDraw=DRAW_VCELLIPSE。

//shape.h

//以下为第二章所用的类定义

classCLine:

publicCShape

protected:

intm_drawtype。

//

POINTm_pStart,m_pEnd。

CLine(>

{}

DECLARE_SERIAL(CLine>

public:

CLine(POINTpStart,POINTpEnd,intWidth,intStyle,COLORREFColor,intm_drawtype>

//intm_drawtypeb5E2RGbCAP

voidDrawing(CDC*pDC>

voidVCLine(CDC*pDC>

voidSerialize(CArchive&

ar>

}。

classCCircle:

POINTm_pFP,m_pSP。

COLORREFm_FColor。

intm_FFlag,m_HFlag,m_HPattern。

CCircle(>

DECLARE_SERIAL(CCircle>

CCircle(POINTpFP,POINTpSP,intWidth,intStyle,COLORREFColor,p1EanqFDPw

intm_FFlag,COLORREFFColor,intHFlag,intHPattern,intm_drawtype>

//DXDiTa9E3d

voidVCCircle(CDC*pDC>

classCEllipse:

intm_drawtype。

CEllipse(>

DECLARE_SERIAL(CEllipse>

CEllipse(POINTpFP,POINTpSP,intWidth,intStyle,COLORREFColor,RTCrpUDGiT

5PCzVD7HxA

voidVCEllipse(CDC*pDC>

//实现文件shape.cpp

//CShape

IMPLEMENT_SERIAL(CShape,CObject,1>

voidCShape:

Serialize(CArchive&

if(ar.IsStoring(>

>

ar<

<

m_pColor<

m_pWidth<

m_pStyle。

else

ar>

m_pColor>

m_pWidth>

//CLine

IMPLEMENT_SERIAL(CLine,CShape,1>

CLine:

CLine(POINTpStart,POINTpEnd,intWidth,intStyle,COLORREFColor,intdrawtype>

jLBHrnAILg

m_pStart=pStart。

m_pEnd=pEnd。

m_pWidth=Width。

m_pStyle=Style。

m_pColor=Color。

m_drawtype=drawtype。

voidCLine:

Drawing(CDC*pDC>

switch(m_drawtype>

{

case0:

VCLine(pDC>

break。

case1:

DDALine(m_pStart.x,m_pStart.y,m_pEnd.x,m_pEnd.y,m_pColor,m_pWidth,pDC>

xHAQX74J0X

case2:

MidpointLine(m_pStart.x,m_pStart.y,m_pEnd.x,m_pEnd.y,m_pColor,m_pWidth,pDC>

LDAYtRyKfE

case3:

BresenhamLine(m_pStart.x,m_pStart.y,m_pEnd.x,m_pEnd.y,m_pColor,m_pWidth,pDC>

Zzz6ZB2Ltk

}

//下面是VC的画线函数

VCLine(CDC*pDC>

CPenNewPen,*pOldPen。

NewPen.CreatePen(m_pStyle,m_pWidth,m_pColor>

pOldPen=pDC->

SelectObject(&

NewPen>

pDC->

MoveTo(m_pStart>

LineTo(m_pEnd>

SelectObject(pOldPen>

m_pStart.x<

m_pStart.y

m_pEnd.x<

m_pEnd.y<

m_drawtype。

else

m_pStart.x>

m_pEnd.x>

m_pEnd.y>

CShape:

Serialize(ar>

//CCircle

IMPLEMENT_SERIAL(CCircle,CShape,1>

CCircle:

CCircle(POINTpFP,POINTpSP,intWidth,intStyle,COLORREFColor,dvzfvkwMI1

intFFlag,COLORREFFColor,intHFlag,intHPattern,intdrawtype>

rqyn14ZNXI

m_pFP=pFP。

m_pSP=pSP。

m_FFlag=FFlag。

m_FColor=FColor。

m_HFlag=HFlag。

m_HPattern=HPattern。

voidCCircle:

intxc,yc,r。

VCCircle(pDC>

xc=m_pFP.x。

yc=m_pFP.y。

r=sqrt((m_pFP.x-m_pSP.x>

*(m_pFP.x-m_pSP.x>

+(m_pFP.y-m_pSP.y>

*(m_pFP.y-m_pSP.y>

EmxvxOtOco

MidCircle(xc,yc,r,m_pColor,m_pWidth,pDC>

SixE2yXPq5

BresenhamCircle(xc,yc,r,m_pColor,m_pWidth,pDC>

//下面是VC画圆函数

VCCircle(CDC*pDC>

SelectStockObject(NULL_BRUSH>

CBrushNewBrush,*pOldBrush。

if(m_FFlag>

if(m_HFlag==0>

NewBrush.CreateSolidBrush(m_FColor>

NewBrush.CreateHatchBrush(m_HPattern,m_FColor>

pOldBrush=pDC->

NewBrush>

Ellipse(m_pFP.x,m_pFP.y,m_pSP.x,m_pSP.y>

SelectObject(pOldBrush>

ar<

m_pFP.x<

m_pFP.y<

m_pSP.x<

m_pSP.y

m_FFlag<

m_FColor<

m_HFlag<

m_HPattern<

6ewMyirQFL

m_pFP.x>

m_pFP.y>

m_pSP.x>

>

m_FFlag>

m_FColor>

m_HFlag>

m_HPattern>

kavU42VRUs

//CEllipse

IMPLEMENT_SERIAL(CEllipse,CShape,1>

CEllipse:

CEllipse(POINTpFP,POINTpSP,intWidth,intStyle,COLORREFColor,y6v3ALoS89

M2ub6vSTnP

m_drawtype=drawtype。

voidCEllipse:

intxc,yc,a,b。

VCEllipse(pDC>

break。

xc=(m_pFP.x+m_pSP.x>

/2。

yc=(m_pFP.y+m_pSP.y>

a=abs(m_pFP.x-m_pSP.x>

b=abs(m_pFP.y-m_pSP.y>

MidEllipse(xc,yc,a,b,m_pColor,m_pWidth,pDC>

break。

//下面是VC的画椭圆函数

VCEllipse(CDC*pDC>

0YujCfmUCw

eUts8ZQVRd

CShape:

//BasicGraph.cpp

//下面是Bresenham的画线函数,请参照上面DDA和中点画线法,把它补充完整。

voidBresenhamLine(intx1,inty1,intx2,inty2,COLORREFcolor,intwidth,CDC*pDC>

sQsAEJkW5T

intx,y,dx,dy,dk,i,s1,s2,temp,swap。

//请在此处补充代码

dx=abs(x2-x1>

dy=abs(y2-y1>

x=x1。

y=y1。

s1=Sign(x2-x1>

s2=Sign(y2-y1>

if(dy>

dx>

{temp=dx。

dx=dy。

dy=temp。

swap=1。

elseswap=0。

dk=2*dy-dx。

for(i=1。

i<

=dx。

i++>

LineWidthProcess(x,y,abs(x2-x1>

abs(y2-y1>

color,width,pDC>

GMsIasNXkA

if(swap==1>

y=y+s2。

elsex=x+s1。

dk=dk+2*dy。

if(dk>

=0>

{

if(swap==1>

x=x+s1。

elsey=y+s2。

dk-=2*dx。

}

intSign(intx>

if(x<

0>

return-1。

elseif(x==0>

return0。

elsereturn1。

//下面是Bresenham画圆函数,请参照上面中点画圆函数,把它补充完整。

voidBresenhamCircle(intxc,intyc,intr,COLORREFcolor,intwidth,CDC*pDC>

TIrRGchYzg

intx,y,d。

x=0。

y=r。

//请在此处补充代码

d=3-2*r。

while(x<

y>

WholeCircle(xc,yc,x,y,color,width,pDC>

if(d<

d=d+4*x+6。

d=d+4*(x-y>

+10。

y--。

x++。

if(x==y>

//下面是中点画椭圆函数,请把它补充完整

voidMidEllipse(intxc,intyc,inta,intb,COLORREFcolor,intwidth,CDC*pDC>

7EqZcWLZNX

intaa=a*a,bb=b*b。

inttwoaa=2*aa,twobb=2*bb。

intx=0,y=b。

intdx=0,dy=twoaa*y。

intd=(int>

(bb+aa*(-b+0.25>

+0.5>

WholeEllipse(xc,yc,x,y,color,width,pDC>

////请在此处补充代码

while(dx<

dy>

{x++。

dx+=twobb。

if(d<

0>

d+=bb+dx。

else{y--。

dy-=twoaa。

d+=bb+dx-dy。

WholeEllipse(xc,yc,x,y,color,width,pDC>

d=(int>

(bb*(x+0.5>

*(x+0.5>

+aa*(y-1>

*(y-1>

-aa*bb+0.5>

lzq7IGf02E

while(y>

0>

{y--。

if(d>

d+=aa-dy。

else{x++。

dx+=twobb。

d+=aa-dy+dx。

三、实验结果

四、实验总结

在本次实验中,我通过对课堂上所学知识的应用,学到了很多实践中的知识。

并且加深了我对课本知识的理解和认识,在实验过程中,更容易记忆和深入理解多种算法实现基本图形zvpgeqJ1hk

申明:

所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2