900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 计算机图形学画圆vc代码 计算机图形学实验--完整版-带结果--vc++实现.doc

计算机图形学画圆vc代码 计算机图形学实验--完整版-带结果--vc++实现.doc

时间:2021-02-20 10:27:40

相关推荐

计算机图形学画圆vc代码 计算机图形学实验--完整版-带结果--vc++实现.doc

计算机图形学实验--完整版-带结果--vc实现

计算机图形学实验报告

信息学院计算机专业 1060183 周建明

综括:

利用计算机编程语言绘制图形,主要实现以下内容:

(1)、中点算法生成任意斜率直线,并设置线型线宽。

(2)、中点算法生成圆

(3)、中点算法生成椭圆

(4)、扫描算法实现任意多边形填充

(5)、Cohen_Sutherland裁剪

(6)、自由曲线与曲面的绘制

(7)、二维图形变换

(8)、三视图变换

实验一、直线的生成

一、实验内容

根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。

二、算法原理介绍

双击直线生成.dsw打开给定的程序,或者先启动VC++,文件(file)→打开工作空间(open workspace)。打开 直线生成view.cpp,按注释改写下列函数:

void CMyView::OnDdaline() (此为DDA生成直线)

void CMyView::OnBresenhamline()(此为Bresenham画直线)

void CMYView::OnMidPointLine()(此为中点画线法)

三、程序源代码

DDA生成直线画法程序:

float x,y,dx,dy,k;

dx=(float)(xb-xa);

dy=(float)(yb-ya);

k=dy/dx;

x=xa;

y=ya;

if(abs(k)<1)

{

for (x=xa;x<=xb;x++)

{

pdc->SetPixel(x, int(y+0.5),COLOR);

y=y+k;

}

}

if(abs(k)>=1)

{

for(y=ya;y<=yb;y++)

{

pdc->SetPixel(int(x+0.5),y,COLOR);

x=x+1/k;

}

}

//DDA画直线结束

}

Bresenham画直线源程序:

float b,d,xi,yi;

int i;

float k;

k=(yb-ya)/(xb-xa);

b=(ya*xb-yb*xa)/(xb-xa);

if(k>0&&k<=1)

for(i=0;i

{ d=ya+0.5-k*(xa+1)-b;

if(d>=0)

{ xi=xa+1;

yi=ya;

xa++;

ya=ya+0.5;

}

if(d<0)

{ xi=xa+1;

yi=ya+1;

xa++;

ya=ya+1.5;

}

pdc->SetPixel(xi,yi,COLOR);

}

//BresenHam画直线结束

}

中点画线法源程序:

float b,d,xi,yi;

int i;

float k;

k=(yb-ya)/(xb-xa);

b=(ya*xb-yb*xa)/(xb-xa);

if(k>0&&k<=1)

for(i=0;i

{ d=ya+0.5-k*(xa+1)-b;

if(d>=0)

{ xi=xa+1;

yi=ya;

xa++;

ya=ya+0.5;

}

if(d<0)

{ xi=xa+1;

yi=ya+1;

xa++;

ya=ya+1.5;

}

pdc->SetPixel(xi,yi,COLOR);

}

//BresenHam画直线结束

}

四、实验结果

1、DDA生成直线

2、Bresenham画直线

3、中点画线法

实验二、bresenham画圆

一、实验内容

根据提供的程序框架,修改部分代码,用Bresenham画法画一段圆弧或者画圆。

二、算法原理介绍

双击experiment.dsw打开,或者先启动VC++,文件(file)→打开工作空间(open workspace)。打开 直线生成view.cpp,按注释改写下列函数:

void CMyView::OnBresenhamCircle()

三、程序源代码

bresenham画圆源程序

void Bresenhan_circle()

;int x,y=180,color=1,xcenter,ycenter;x=0;

int d=3-2*180;

while(x

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。