1 / 10
文档名称:

计算机图形学实验报告实验2.doc

格式:doc   大小:132KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学实验报告实验2.doc

上传人:63229029 2017/11/10 文件大小:132 KB

下载得到文件列表

计算机图形学实验报告实验2.doc

文档介绍

文档介绍:贵州大学实验报告
学院:计算机科学与信息专业:计科班级:101
姓名
吕杨
学号
1008060040
同组成员
实验时间
2013-4-7
指导教师
吴云
成绩
实验项目名称
圆的生成算法
实验目的
1、通过实验,进一步理解和掌握中点算法、Bresenham算法和二阶差分算法;
2、掌握以上算法生成圆的基本过程;
3、通过编程,学****VC及Matlab环境下完成用中点算法、Bresenham算法和二阶差分算法
实现圆的绘制。
实验内容
1、用中点算法、Bresenham算法和二阶差分算法实现圆的绘制。
2、写出实验报告
实验环境
WIN XP、VC++
实验环境
操作系统:Windows XP SP3
编程环境:Microsoft Visual C++
计算机配置:P4 ,1G DDR2 160G硬盘 X1300PRO图形卡
实验
主要代码及运行结果步骤
圆的生成算法
Bresenham 算法
原理:
利用圆的对称性,只须画出1/8圆, 就可画出整个圆。P为当前点亮象素,那么,下一个点亮的象素可能是P1(Xp+1,Yp)或P2(Xp +1,Yp +1)。d的初值:d0= F(1, R-)= – R。若d<0, 则P1 为下一个象素,那么再下一个象素的判别式为:d1 = F(xp + 2, yp - )=d + 2xp +3,即d 的增量为 2xp +3.。若d>=0, 则P2 为下一个象素,那么再下一个象素的判别式为:d1 = F(xp + 2, yp - )= d + (2xp + 3)+(-2 yp + 2)即d 的增量为 2 (xp - yp) +5.
:
void CTestView::Mbline()//Bresenham函数
{
CClientDC dc(this);
COLORREF rgb=RGB(0,0,255);//定义直线颜色为蓝色
double x,y,d,k;
x=x0;y=y0;k=(y1-y0)/(x1-x0);d=-k;
for(x=x0;x<=x1;x++)
{
(ROUND(x),ROUND(y),rgb);
if(d<0)
{
y++;
d+=1-k;
}
else
d-=k;
}
}
结果:


:
构造函数:F(X,Y)=X2 + Y2 - R2,则
F(X,Y)= 0:(X,Y)在圆周上;
F(X,Y)< 0:(X,Y)在圆内;
F(X,Y)> 0:(X,Y)在圆外。
假设P是当前已确定的光栅点。构造判别式:
dM= F(M)= F(xp+1,yp-)=(xp+1)2+( yp-05)2-R2
(1)如果dM<0,表示下一中点M在圆内,选择T点,且:
dMT= F(MT)= F(xp+2,yp-)=(xp+2)2+( yp-)2-R2
∆dMT= dMT - dM=2xp+3
(2)如果dM>0,表示下一中点M在圆外,选择B点,且:
dMB= F(xMB,