计算机图形学实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机图形学》实验报告姓名:郭子玉

学号:2012211632

班级:计算机12-2班

实验地点:逸夫楼507

实验时间:15.04.10 15.04.17

实验一

1 实验目的和要求

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

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

2 实验环境和工具

开发环境:Visual C++ 6.0

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

3 实验结果

3.1 程序流程图

(1)DDA 算法

是 否 否

是 是

开始

计算k ,b K<=1 x=x+1;y=y+k;

绘点 x<=X1

y<=Y1

绘点

y=y+1;x=x+1/k;

结束

(2)Mid_Bresenham 算法

是 否

是 是

是 否 是 否

开始

计算dx,dy dx>dy D=dx-2*dy

绘点 D<0

y=y+1;D = D +

2*dx -

2*dy; x=x+1;

D = D - 2*dy; x=x+1;

x

D=dy-2*dx

y

绘点

D<0

D = D - 2*dx; y=y+1;

x=x+1;D = D + 2*dy -

2*dx; y=y+1;

结束

3.2程序代码

//-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y);

(1)DDA算法

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

{

//----------请实现DDA算法------------//

float k, b;

float d;

k = float(Y1 - Y0)/float(X1 - X0);

b = float(X1*Y0 - X0*Y1)/float(X1 - X0);

if(fabs(k)<= 1)

{

if(X0 > X1)

{

int temp = X0;

X0 = X1;

X1 = temp;

}

int x;

float y;

x = (int)X0;

y = (float)Y0;

while(x <= X1)

{

DrawPixel(x, round(y));

x ++;

y = y + k;

}

}

else

{

if(Y0 > Y1)

{

int temp = Y0;

Y0 = Y1;

Y1 = temp;

}

float x;

int y;

x = (float)X0;

y = (int)Y0;

while(y <= Y1)

{

DrawPixel(round(x), y);

y ++;

x = x + 1/k;

}

}

return;

}

(2)Mid_Bresenham算法

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

{

//-------请实现Mid_Bresenham算法-------//

int D;

int dx, dy;

int x, y;

dx = X1 - X0;

dy = Y1 - Y0;

x = X0;

y = Y0;

if(dx > dy)

{

while(x <= X1)

{

DrawPixel(x, y);

if(D < 0)

{

y = y +1;

D = D + 2*dx - 2*dy;

}

else

{

D = D - 2*dy;

}

x++;

}

}

else

{

D = dy - 2*dx;

while(y <= Y1)

{

DrawPixel(x, y);

if(D < 0)

{

D = D + 2*dy - 2*dx;

}

else

{

D = D - 2*dx;

}

y++;

}

}

return;

}

3.3运行结果

(1)DDA算法

相关文档
最新文档