好文档 - 专业文书写作范文服务资料分享网站

(完整word版)计算机图形学实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

计算机图形学 实验报告

姓 名:学 号:班 级:实验地点:实验时间:

谢云飞 20112497

计算机科学与技术11-2班 逸夫楼507 2014.03

实验1 直线的生成

1 实验目的和要求

理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力;

编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。

2 实验环境和工具

开发环境:Visual C++ 6.0

实验平台:Experiment_Frame_One(自制平台)。

本实验提供名为 Experiment_Frame_One的平台,该平台提供基本绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham算法,并进行分析。

? 平台界面:如错误!未找到引用源。所示

? 设 置:通过view->setting菜单进入,如错误!未找到引

用源。所示

? 输 入:通过view->input…菜单进入.如错误!未找到引用

源。所示 ? 实现算法:

? DDA算法:void CExperiment_Frame_OneView::DDA(int X0,

int Y0, int X1, int Y1)

Mid_Bresenham

void

CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1)

3 实验结果

3.1 程序流程图

1)DDA算法流程图: 开始

定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增

量xIncre,y增量yIncre

输入两点坐标x1,y1,x0,y0

dx=x1-x0,dy=y1-y0;

_________↓_________ ↓ ↓

若|dx|>|dy| 反之

epsl=|dx| epsl=|dy|

↓________...________↓

xIncre=dx/epsl; yIncre=dy/epsl

填充(强制整形)(x+0.5,y+0.5);

↓ ←←← ←

横坐标x+xIncre; 纵坐标y+yIncre;

↓ ↑

若k<=epsl →→→ k++ ↓ 结束

2)Mid_Bresenham算法流程图 开始

定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y

输入x0,y0,x1,y1

______↓______ ↓ ↓ 若x0>x1 反之 x=x1;x1=x0;x0=x; x=x0;

Y=y1;y1=y0;y0=y; y=y0; ↓______..______↓

坐标差dx=x1-x0;dy=y1-y0;

判断值d=dx-2*dy;

UpIncre=2*dx-2*dy;DownIncre=-2*dy;

填充点(x,y),且x=x+1;

______↓______ ← ← ← ↓ ↓ ↑

若d<0 反之

y=y+1,且d=d+UpIncre d=d+DownIncre

↓______.______↓ ↑↑

若x<=x1 → → → ↑

↓ 结束

3.2 程序代码

void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) {

//----------请实现DDA算法------------// float x,y,xIncre,yIncre; dx=X1-X0; x=X0; y=Y0;

if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy);

xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; }

DrawPixel((int)(x+0.5),(int)(y+0.5)); x+=xIncre; y+=yIncre;

dy=Y1-X0;

int dx,dy,epsl,k;

for(k=0;k<=epsl;k++){

}

void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1) { }

if(X0>X1){ }

x=X0;y=Y0;

dx=X1-X0;dy=Y1-Y0; d=dx-2*dy;

UpIncre=2*dx-2*dy; DownIncre=-2*dy; while(x

else d+=DownIncre; }

DrawPixel(x,y); x++; if(d<0){ y++; d+=UpIncre; x=X1;X1=X0;X0=x; y=Y1;Y1=Y0;Y0=y;

//-------请实现Mid_Bresenham算法-------// int dx,dy,d,UpIncre,DownIncre,x,y,xend;

3.3 运行结果

(完整word版)计算机图形学实验报告

计算机图形学实验报告姓名:学号:班级:实验地点:实验时间:谢云飞20112497计算机科学与技术11-2班逸夫楼507
推荐度:
点击下载文档文档为doc格式
0tr3e2vw1x7yogl1itk20zdc523y3q00i5g
领取福利

微信扫码领取福利

微信扫码分享