77范文网 - 专业文章范例文档资料分享平台

计算机图形学实验三:圆的生成算法的实现(2)

来源:网络收集 时间:2020-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验三:圆的生成算法的实现

班级 08信计 2 学号 20080502086 姓名 分数

一、实验目的和要求

1.理解圆生成的基本原理,掌握几种常见的圆生成算法。 2.利用Visual C++ 实现圆生成的中点画圆的算法。 3.利用Visual C++ 实现圆的Bresenham算法。 4.简单了解其他算法。

二、实验内容:

1.利用中点画图算法,在屏幕上生成任意一段圆弧。 2.利用图的对称性,将(1)题生成的圆弧扩展为一个整圆。 3.利用bresebham算法设计出一段圆弧。

三、实验步骤:

1.预习教材关于圆的生成原理。

2.仿照教材关于圆生成的中点画圆算法和bresenham算法,使用C++实现该算法。 3.调试、编译、运行程序。

利用bresenham算法生成圆的代码:

#include #include #include

void BresenhemCircle(int centerx, int centery, int radius, int color, int type);

void main() {

int drive=DETECT,mode; int i,j;

initgraph(&drive,&mode,\

BresenhemCircle(300,200,100,150,0); getch(); closegraph(); }

void BresenhemCircle(int centerx, int centery, int radius, int color, int type) {

1

int x =type = 0;/*初始横坐标为原点*/ int y = radius; /*初始纵坐标远离原点*/ int delta = 2*(1-radius); int direction; while (y >= 0) {

getch();

if (!type)/*执行*/ {

/*在上半圆画两点*/

putpixel(centerx+x, centery+y, color); putpixel(centerx-x, centery+y, color); /*在下半圆画两点*/

putpixel(centerx-x, centery-y, color); putpixel(centerx+x, centery-y, color); getch(); } else {

line(centerx+x, centery+y, centerx+x, centery-y); line(centerx-x, centery+y, centerx-x, centery-y); getch(); }

if (delta < 0) {

if ((2*(delta+y)-1) < 0) direction = 1; else

direction = 2; }

else if(delta > 0) {

if ((2*(delta-x)-1) > 0) direction = 3;

2

else

direction = 2; } else

direction=2;

switch(direction) {

case 1: x++;

delta += (2*x+1); break; case 2: x++; y--;

delta += 2*(x-y+1); break; case 3: y--;

delta += (-2*y+1); break; } } }

四、实验结果分析:

Bresenham画圆算法是最有效的算法之一,通过画出八分之一的圆周,对称得到整个圆周,第一想先的图形,让X轴量平均增加,通过选择理想的Y轴坐标,确定得到整个图形,算法的实现简单,且时间复杂度较低。

3

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机图形学实验三:圆的生成算法的实现(2)在线全文阅读。

计算机图形学实验三:圆的生成算法的实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1001701.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: