在VC++60中实现直线的扫描转换算法.docx

上传人:b****5 文档编号:8343591 上传时间:2023-01-30 格式:DOCX 页数:11 大小:393.08KB
下载 相关 举报
在VC++60中实现直线的扫描转换算法.docx_第1页
第1页 / 共11页
在VC++60中实现直线的扫描转换算法.docx_第2页
第2页 / 共11页
在VC++60中实现直线的扫描转换算法.docx_第3页
第3页 / 共11页
在VC++60中实现直线的扫描转换算法.docx_第4页
第4页 / 共11页
在VC++60中实现直线的扫描转换算法.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

在VC++60中实现直线的扫描转换算法.docx

《在VC++60中实现直线的扫描转换算法.docx》由会员分享,可在线阅读,更多相关《在VC++60中实现直线的扫描转换算法.docx(11页珍藏版)》请在冰豆网上搜索。

在VC++60中实现直线的扫描转换算法.docx

在VC++60中实现直线的扫描转换算法

师学院数学与计算机科学学院

《计算机图形学》实验报告

实验序号:

2实验项目名称:

直线的扫描转换

学号

2014210677

某某

王艳艳

专业、班级

14计本一班

实验地点

文科楼206

指导教师

罗晓丽

时间

2017.3.17

、实验目的:

学会使用MFC,能够运用直线的三种扫描算法即数值微分算法(DDA算法)、中点画线算法和Bresenham画线算法绘制直线,并熟悉掌握制作过程。

二、实验环境:

Windows7

VC++6.0

三、实验容:

打开vc6.0,点击新建—>工程—>MFCAppWizard[exe],创建项目名称(随便写),确定位置,然后点击确定。

选择创建的应用类型—>单文档—>完成。

点击确定。

DDA算法:

添加成员函数:

1.展开Wangyanyanclasses—>右击WangyanyanView—>选择AddMemberFuntion(添加成员函数)—>函数类型定义为void,函数描述为:

DDAline—>点击确定

2.展开Wangyanyanclasses—>CWangyanyanView—>在DDAline()函数里添加形参intx0,inty0,intx1,inty1,intcolor,CClientDC&dc

3.双击CWangyanyanView,在public中添加代码:

voidCWangyanyanjView:

:

DDAline(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc);

记住最后加分号

4.展开CWangyanyan—>双击OnDraw—>添加代码:

CClientDCdc(this);

DDAline(8,12,20,20,RGB(255,145,200),dc);

5.双击DDAline,在函数体编写如下代码:

voidCDWangyanyanView:

:

DDAline(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc)

{

CPennewpen(PS_SOLID,1,color);

dc.SelectObject(&newpen);

intx,dx,dy,y,k;

dx=x1-x0;

dy=y1-y0;

k=dy/dx;

y=y0;

for(x=x0;x<=x1;x++)

{

dc.SetPixel(x,int(y+0.5),color);

y=y+k;

}

}

调试程序:

运行结果:

中点画线算法:

添加成员函数

1.展开Wangyanyanclasses—>右击CWangyanyanView—>选择AddMemberFuntion(添加成员函数)—>函数类型定义为void,函数描述为:

MidpointLine—>点击确定

2.展开classes—>CWangyanyanview,在MidpointLine函数里添加形参intx0,inty0,intx1,inty1,intcolor,CClientDC&dc

3.双击CWangyanyanView,在public中添加代码:

voidCWangyanyanView:

:

MidpointLine(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc);最后加分号

4.展开CWangyanyanView—>双击OnDraw—>添加代码:

MidpointLine(20,15,200,485,RGB(80,120,255),dc);

5.双击MidpointLine,在函数体编写如下代码:

CPennewpen(PS_SOLID,1,color);

dc.SelectObject(&newpen);

inta,b,delta1,delta2,d,x,y;

a=y0-y1;

b=x1-x0;

d=2*a+b;

delta1=2*a;

delta2=2*(a+b);

x=x0;

y=y0;

dc.SetPixel(x,y,color);

while(x

{

if(d<0)

{

x++;

y++;

d+=delta2;

}

else

{

x++;

d+=delta2;

}

dc.SetPixel(x,y,color);

}

调试程序:

运行结果:

Bresenham算法:

添加成员函数

1.展开Wangyanyanclasses—>右击CWangyanyanView—>选择AddMemberFuntion,函数类型定义为void,函数描述为:

Bresenham_Line—>点击确定

2.点击classes—>CWangyanyanview,在Bresenham_Line函数里添加形参intx0,inty0,intx1,inty1,intcolor,CClientDC&dc

3.双击CWangyanyanView,在public中添加代码:

voidCWangyanyanView:

:

Bresenham_Line(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc),最后加分号

4.展开CPwjView—>双击OnDraw—>添加代码:

Bresenham_Line(65,12,400,450,RGB(20,180,250),dc);

5.双击Bresenham_Line,在函数体编写如下代码:

intx,y,dx,dy,e,i;

dx=x1-x0;

dy=y1-y0;

e=-dx;

x=x0;

y=y0;

for(i=0;i<=dx;i++)

{

dc.SetPixel(x,y,color);

x=x+1;

e=e+2*dy;

if(e>=0)

{

y=y+1;

e=e-2*dx;

}

}

调试程序:

运行结果:

教师评语

签名:

日期:

年月日

成绩

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

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

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

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