计算机图形学实验报告Word文件下载.docx

上传人:b****6 文档编号:19540797 上传时间:2023-01-07 格式:DOCX 页数:15 大小:302.66KB
下载 相关 举报
计算机图形学实验报告Word文件下载.docx_第1页
第1页 / 共15页
计算机图形学实验报告Word文件下载.docx_第2页
第2页 / 共15页
计算机图形学实验报告Word文件下载.docx_第3页
第3页 / 共15页
计算机图形学实验报告Word文件下载.docx_第4页
第4页 / 共15页
计算机图形学实验报告Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机图形学实验报告Word文件下载.docx

《计算机图形学实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机图形学实验报告Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

计算机图形学实验报告Word文件下载.docx

直线、曲线、矩形

其中“曲线”项有级联菜单,包括:

圆、椭圆。

3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

5、实验结果:

六、实验主要代码

1、画直线:

CClientDC*m_pDC;

再在OnDraw函数里给变量初始化

m_pDC=newCClientDC(this);

在OnDraw函数中添加:

m_pDC=newCClientDC(this);

m_pDC->

MoveTo(10,10);

LineTo(100,100);

SetPixel(100,200,RGB(0,0,0));

TextOut(100,100);

2、画圆:

voidCMyCG:

:

LineDDA2(intxa,intya,intxb,intyb,CDC*pDC)

{

intdx=xb-xa;

intdy=yb-ya;

intSteps,k;

floatxIncrement,yIncrement;

floatx=xa,y=ya;

if(abs(dx)>

abs(dy))

Steps=abs(dx);

else

Steps=abs(dy);

xIncrement=dx/(float)Steps;

yIncrement=dy/(float)Steps;

pDC->

SetPixel(ROUND(x),ROUND(y),RGB(0,0,0));

for(k=0;

k<

Steps;

k++)

{

x+=xIncrement;

y+=yIncrement;

sleep(10);

pDC->

}

3、画矩形

voidCRectangleDlg:

OnLButtonDown(UINTnFlags,CPointpoint)

lButtonDownNotUp=TRUE;

RECTrect;

m_showRectangle.GetClientRect(&

rect);

if((point.x<

rect.right)&

&

(point.x>

rect.left)&

(point.y<

rect.bottom)&

(point.y>

rect.top))

regionLeftTopTemp=point;

}

CDialog:

OnLButtonDown(nFlags,point);

OnMouseMove(UINTnFlags,CPointpoint)

rect);

if((<

)&

(>

(<

))

if((lButtonDownNotUp==TRUE)

regionRightBottomTemp=point;

CDC*pDC=m_showRectangle.GetWindowDC();

pDC->

Rectangle(CRect(regionLeftTopTemp,regionRightBottomTemp));

OnMouseMove(nFlags,point);

OnLButtonUp(UINTnFlags,CPointpoint)

lButtonDownNotUp=FALSE;

OnLButtonUp(nFlags,point);

实验二基本图形生成算法

一、实验类型:

二、实验目的

1、掌握DDA、Bresenham直线生成算法;

2、掌握Bresenham或中点圆生成算法;

3、掌握Bresenham或中点椭圆生成算法;

三、实验内容

1、实现DDA、Bresenham直线生成算法;

2、实现Bresenham画圆法或中点画圆法;

3、实现Bresenham或中点法椭圆生成算法;

4、利用1、2、3实现的直线、圆、椭圆图形生成函数进行图形绘制;

四、实验要求与指导

1、按照实验指导书节创建一个基于MFC的SingleDocument应用程序。

建立名为“图形绘制”的菜单,该菜单的子菜单项可根据下图进行设定,用户通过点击不同的子菜单项,可以选择不同的算法进行绘图。

2、建立一个专门用于进行图形绘制的类,比如下图所示的CMyGL类。

如无特殊说明,今后都以该类作为演示。

3、所有图形的绘制算法都必须封装在CMyGL类中,如下图。

4、在View类中实例化一个CMyGL类的对象,比如m_gl,进行绘图操作。

如下图所示:

5、用户通过点击“图形绘制”中不同的菜单项,在指定位置进行绘图。

5、实验结果:

voidCDraw:

DDALine(CDC*pDC,intx1,inty1,intx2,inty2,COLORREFcolor)

doubledx,dy,e,x,y;

dx=x2-x1;

dy=y2-y1;

e=(fabs(dx)>

fabs(dy))?

fabs(dx):

fabs(dy);

dx/=e;

dy/=e;

x=x1;

y=y1;

for(inti=1;

i<

=e;

i++)

SetPixel((int)(x+,(int)(y+,color);

x+=dx;

y+=dy;

SetPixel(ROUND(x),ROUND(y),RGB(255,0,0));

3、画椭圆

BresenhamEllipse(CDC*pDC,intx0,inty0,inta,intb,COLORREFcolor)

intx,y,p;

intaa=a*a,bb=b*b;

x=0;

y=b;

p=2*bb+aa*(1-2*b);

while(bb*x<

=aa*y)

SetPixel(x+x0,y+y0,color);

SetPixel(-x+x0,y+y0,color);

SetPixel(x+x0,-y+y0,color);

SetPixel(-x+x0,-y+y0,color);

if(p>

=0)

{

p+=4*aa*(1-y)+bb*(4*x+6);

y--;

}

else

p+=bb*(4*x+6);

x++;

x=a;

y=0;

p=2*aa+bb*(1-2*a);

while(bb*x>

aa*y)

{

p+=4*bb*(1-x)+aa*(4*y+6);

x--;

p+=aa*(4*y+6);

y++;

实验三、OpenGL图形程序设计基础

一.实验目的

1)了解OpenGL图形库的功能和结构;

2)学习使用VisualC++开发基于控制台的图形程序;

3)学习使用VisualC++开发基于单文档(GUI界面)的图形程序。

4)学习使用OpenGL生成基本图形;

5)学习使用OpenGL实现图形变换;

二.实验内容

1)使用VisualC++建立一个Win32ConsoleApplication(控制台应用程序),定义若干点坐标,绘制点、线段、不闭合折线、闭合折线、多边形、三角形、四边形、三角扇、三角条带、四边形条带。

尝试不同尺寸的点、不同线宽的线、设置颜色等操作。

2)使用MFCAppWizard建立一个SDI程序,根据参考资料2和3中的步骤设置OpenGL图形绘制环境。

增加绘制4种基本图形(选择其中之一)。

3.实验过程:

1)建立一个控制台应用程序,在RenderScene()函数中调用不同的系统函数分别绘制不同属性的点、线、折线、多边形、扇形等;

2)建立一个SDI程序,按照所给资料设置OpenGL图形绘制环境,并照敲老师所给实列,观看结果,查看关键代码区;

3)仿照所给列子,改写代码,绘制彩色的正方体;

三.实验结果

基本图形显示正确

基本图形截图:

三棱柱截图:

实验四、二维图形变换程序设计

一.实验目的:

1)掌握图形变换实现原理,基本几何变换,复合变换等;

2)学习使用VisualC++开发菜单,对话框等交互界面的设计;

3)学习使用MFC单文档程序,实现二维图形的基本几何变换。

二.实验内容:

使用VisualC++建立一个单文档程序,采用实验二中定义的基本图形类。

在程序中增加图形变换菜单(各基本变换对应菜单项),各图形变换的参数通过对话框提供(设计提供变换参数的对话框,如平移,旋转,比例等),实现二维图形的变换。

(提示:

在各个图形类中增加相应的成员函数实现平移;

菜单选择变换弹出对应变换的参数对话框,对话框中提供参数后取出参数传递给图形对象,通过调用图形变换成员函数实现图形对象的变换)。

要求实现直线段、圆、多边形等基本图形的几何变换。

三.实验过程:

(1).根据实验要求,新建菜单,增加二维图形变换子菜单,然后在菜单上添加平移,比例,对称,旋转以及错切选项。

(2).对菜单中的每一项方法构造响应函数,并给几个需要弹出对话框的选项添加对话框响应函数。

(3).在弹出的对话框输入参数,获取输入的参数,调用相应的变换函数,实现图形的变换。

四.实验结果:

结果正确。

平移xy(100,0)

五、实验主要代码

classCTransform//二维几何变换

public:

CTransform();

virtual~CTransform();

voidSetMat(CP2*,int);

voidIdentity();

voidTranslate(double,double);

//平移变换矩阵

voidScale(double,double);

//比例变换矩阵

voidScale(double,double,CP2);

//相对于任意点的比例变换矩阵

voidRotate(double);

//旋转变换矩阵

voidRotate(double,CP2);

//相对于任意点的旋转变换矩阵

voidReflectOrg();

//原点反射变换矩阵

voidReflectX();

//X轴反射变换矩阵

voidReflectY();

//Y轴反射变换矩阵

voidShear(double,double);

//错切变换矩阵

voidMultiMatrix();

//矩阵相乘

doubleT[3][3];

CP2*POld;

intnum;

};

voidCTransform:

Translate(doubletx,doublety)//平移变换矩阵

Identity();

T[2][0]=tx;

T[2][1]=ty;

MultiMatrix();

Scale(doublesx,doublesy)//比例变换矩阵

T[0][0]=sx;

T[1][1]=sy;

Scale(doublesx,doublesy,CP2p)//相对于任意点的整体比例变换矩阵

Translate,;

Scale(sx,sy);

Rotate(doublebeta)//旋转变换矩阵

doublerad=beta*PI/180;

T[0][0]=cos(rad);

T[0][1]=sin(rad);

T[1][0]=-sin(rad);

T[1][1]=cos(rad);

实验五、二维交互式图形程序设计

一、实验目的:

1)综合使用VC++编写Win32应用的方法(单文档、多文档、对话框);

2)掌握交互式绘图程序设计及MFC相关类的使用;

3)掌握使用MFC的编写简单动画程序。

二、实验任务:

1)使用MFCAppWizard建立一个SDI程序。

综合前几次二维绘图

实验的结果,实现基本功能:

建立绘制点、直线段、圆、椭圆、圆弧、多段线(折线)、多边形、贝塞尔(Bezier)曲线的相关类(对于封闭图形,应能多种方式填充)、字符串。

使用实验二中自定义的CClientDC的派生类,实现交互式(鼠标)绘制以上图形。

实现颜色、线型、字体等的交互式选择,实现除曲线、圆弧外其他图形的鼠标拾取(框选、点选)。

实现新建文件、保存文件,打开文件(打开保存的自定义图形文件,并绘制图形)。

软件界面设计(工具栏、菜单、光标等)。

可选扩展功能:

(1)实现平移、旋转、缩放、对称、错切等图形几何变换

(2)图形的显示控制包括缩放(按比例、选取框)、平移(上、小、左、右)。

(3)实现图层功能(可见性、颜色、锁定等)、图块功能(及选中多个图形形成一组,图块的生成、引用、编辑)。

(4)图形的显示控制包括实时缩放、实时平移和定点平移等。

(5)图形的编辑控制包括撤销、重复、剪切、复制、粘贴、删除、清除。

2)本任务是在以上程序的基础上,增加动画功能(可单独增加相应菜单):

交互式绘制三个圆作为太阳、地球、月球(要求填充,注意位置。

数据放入文档类,即文档类有变量太阳、地球、月球等),实现二维动画:

月球绕地球转、地球自转(地球采用图案填充)、地球绕太阳公转(按时间比例,可设置参数:

时间、颜色、调整大小)。

三、实验过程:

1)建立绘制点、直线段、圆、椭圆、圆弧、多段线(折线)、多边形、贝塞尔(Bezier)曲线的相关类

2)在菜单栏上增加相应的菜单,用来选择不同的功能

3)对增加的菜单栏设置ID,并且在View类中添加相应的事件响应函数,在各自的响应函数中实现各自的功能

四、实验结果:

基本功能:

扩展功能(做一个简单的太阳系):

在附加功能中,点击“开始”图形开始变换,点击“停止”图形静止。

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

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1