计算机图形学期末编程大作业

合集下载

武汉理工大学《计算机图形学》大作业

武汉理工大学《计算机图形学》大作业

《计算机图形学基础》大作业课程名称计算机图形学基础开课学院计算机科学与技术学院指导教师姓名佘名高学生姓名杨峻学生专业班级软件工程11022013-2014 学年第一学期一、命题计划题目:C语言图形编程(以下题目文档要求:①基本论述②算法③程序源代码④界面图)二、内容与要求(1)撰写内容1.根据Bresenham直线绘制算法,实现直线的绘制。

2.用C语言编写:画y=sin(x)的图形(要求画出[-2π,2π]的图形及笛卡尔坐标)3.用C语言编写一个小圆沿着大圆运动的程序。

4.对图1中的零件图形,如何根据它所标注的尺寸,按照适当的顺序有步聚地画出该图形。

提示:首先要分析此零件图形的几何关系,了解构成这个图形各线段的性质,才能顺利地绘出此图形。

线段(直线或圆弧)在零件图形中分为三类,即已知线段、中间线段和连接线段。

以圆弧为例,按几何原理,已知圆心的两个位置尺寸与半径尺寸便可画出圆。

因此图形中,已知这三个尺寸的圆弧称为已知圆弧,画图时应该最先画出。

凡已知其中二个尺寸的圆弧称为中间圆弧。

凡只已知一个尺寸(一般是圆弧半径)的圆弧称为连接圆弧。

中间圆弧和连接圆弧都缺省圆心的位置尺寸,它的几何位置是根据相切的条件来确定的。

因此画圆弧的顺序为:先画已知圆弧,再画中间圆弧,最后画连接圆弧。

本零件图形是对称图形,三个小圆均匀分布在圆周中心线上,φ10,φ25,φ50和R10都是已知圆弧,R8为连接圆弧,φ50是已知圆弧的端点和R10已知圆弧的端点与连接圆弧的端点相切,从而构成整个图形。

(2)撰写要求1.基本论述2.算法3.程序源代码4.程序运行截图5.小结3.程序源代码#include<stdio.h>#include<graphics.h>void bresenhamline (int x0,int y0,int x1, int y1,int color) {int x, y, dx, dy,i;float k, e;dx = x1-x0; dy = y1- y0; k=0.7*dy/dx;e=-0.5; x=x0; y=y0;for (i=0; i<=dx; i++){ putpixel (x, y, color);x=x+1; e=e+k;if (e>= 0) { y++, e=e-1;}}}void main(){int gd = DETECT;int gm;initgraph(&gd,&gm,"");bresenhamline(130,100,200,350,YELLOW);getchar();}4.程序运行截图3.程序源代码#include "stdio.h"#include "graphics.h"#include "math.h"#include "conio.h"void drawSin(int x,int y,int A){int i = 0;line(x-300,y,x+300,y);line(x+290,y-10,x+300,y);line(x+290,y+10,x+300,y);line(x,y-200,x,y+200);line(x-10,y-190,x,y-200);line(x+10,y-190,x,y-200);for (i = -314/2 ;i<(314/2) ;i++){putpixel(x+i,(int)A * sin((double)i/25)+y,WHITE); }}void main(){int gd = DETECT;int gm;initgraph(&gd,&gm,"");drawSin(300,200,100);getch();closegraph();}4.程序运行截图3.程序源代码#include <stdio.h>#include<graphics.h>#include <math.h>void main(){int gd = DETECT;int gm;int i;float x;x=0;initgraph(&gd, &gm, "");cleardevice();for (i=0;i<=3600;i++){circle(320,240,110);circle(320+100*cos(x),240+100*sin(x),40); x=x+0.0175;Sleep(1000);cleardevice();}getchar();closegraph(); }4.程序运行截图4.程序截图:。

(完整版)计算机图形学期末考试

(完整版)计算机图形学期末考试

(完整版)计算机图形学期末考试计算机图形学期末模拟题⼀、选择题1、在下列叙述语句中,错误的论述为( C )A) 在图形⽂件系统中,点、线、圆等图形元素通常都⽤其⼏何特征参数来描述;B)在图形系统中,图形处理运算的精度不取决于显⽰器的分辨率;C) 在光栅扫描图形显⽰器中,所有图形都按⽮量直接描绘显⽰,不存在任何处理;D) 在彩⾊图形显⽰器中,使⽤RGB颜⾊模型。

2、光线跟踪算法中包括了哪些光照效果?( C )A) 仅有光反射;B) 仅有光透射;C) 有光反射和光透射;D) 都没有3、透视投影中主灭点最多可以有⼏个?( D )A) 0 B) 1 C) 2 D) 34、在明暗光滑处理算法中,下列论述哪个是错误的?( D )A) Gouraud明暗模型计算中,多边形与扫描平⾯相交区段上每⼀采样点的光亮度值是由扫描平⾯与多边形边界交点的光亮度插值得到的;B) Phong明暗处理模型中,采⽤了双线性插值和构造法向量函数的⽅法模拟⾼光;C) Gouraud明暗模型和Phong明暗处理模型主要是为了处理由多个平⾯⽚近似表⽰曲⾯物体的绘制问题;D) Phong明暗模型处理的物体表⾯光亮度呈现不连续跃变;5、B样条曲线中,按照节点⽮量T的不同可以将B样条分为均匀B样条,开放均匀B样条和⾮均匀B样条,以下选项中属于开放均匀B样条节点⽮量的是(C )。

A、T=(0,1,2,3,4,5,6)B、T=(0,0,1,1,2,2,3,3)C、T=(0,0,0,1,2,3,4,5,5,5)D、T=(0,0.1,0.2,0.2,0.5,1)6、曲线的分类有( A )A、规则曲线⾃由曲线随机曲线B、规则曲线变换曲线⾃由曲线C、变换曲线随机曲线⾃由曲线D 随机曲线变换曲线规则曲线7、曲线曲⾯拟合的⽅法有( B )A、插值做差拟合B、插值逼近拟合C、插值闭合拟合D 插值变换拟合8、光线跟踪算法中包括了哪些光照效果?( C )A) 仅有光反射;B) 仅有光透射;C) 有光反射和光透射;D) 都没有⼆、填空题1、计算机制作动画从狭义上是指根据要求⽣成⼀系列连续变动的画⾯,它的步骤由(造型)、(运动控制)和(绘制)组成。

计算机图形学期末考试试题及答案

计算机图形学期末考试试题及答案

计算机图形学期末考试试题及答案一、选择题(每题2分,共20分)1. 计算机图形学是研究计算机生成和处理图形信息的学科,以下哪项不是计算机图形学的研究内容?A. 图形表示和存储B. 图形输入和输出C. 图形变换D. 数据库管理答案:D2. 以下哪种图形设备不是常见的图形输入设备?A. 鼠标B. 扫描仪C. 数字化仪D. 打印机答案:D3. 在计算机图形学中,以下哪种算法用于消除隐藏面?A. 罗伯特算法B. 画家算法C. 深度排序算法D. 光照模型答案:C4. 在计算机图形学中,以下哪个概念表示颜色空间的一个点?A. RGBB. HSLC. HSVD. 所有以上选项答案:D5. 在三维图形变换中,以下哪种变换不能保持图形的形状和大小不变?A. 平移B. 旋转C. 缩放D. 错切答案:D6. 在计算机图形学中,以下哪种方法用于实现抗锯齿效果?A. 插值B. 卷积C. 重采样D. 双线性插值答案:C7. 在计算机图形学中,以下哪种技术用于模拟光线传播和反射?A. 光照模型B. 光线追踪C. 阴影算法D. 纹理映射答案:B8. 在计算机图形学中,以下哪种图形表示方法基于图像?A. 向量图形B. 位图图形C. 分形图形D. 隐函数图形答案:B9. 在计算机图形学中,以下哪种技术用于生成动态图形?A. 动态扫描B. 动态纹理映射C. 动态建模D. 动态渲染答案:D10. 在计算机图形学中,以下哪种技术用于实现虚拟现实?A. 三维建模B. 虚拟现实引擎C. 头戴式显示器D. 所有以上选项答案:D二、填空题(每题2分,共20分)1. 计算机图形学的基本研究内容包括:图形表示和存储、图形输入和输出、图形变换、图形显示和图形交互。

2. 常见的图形输入设备有:鼠标、扫描仪、数字化仪、触摸屏等。

3. 常见的图形输出设备有:显示器、打印机、绘图仪等。

4. 在计算机图形学中,RGB表示红绿蓝三原色,用于描述颜色的空间。

5. 在三维图形变换中,常见的变换包括:平移、旋转、缩放、错切等。

《计算机图形学》期末试卷及部分答案

《计算机图形学》期末试卷及部分答案

1《计算机图形学》期末试卷一、填空:1、计算机图形学的概念:用计算机建立、存储、处理某个对象的模型,并根据模型产生该对象图形输出的有关理论、方法与技术,称为计算机图形学。

2、刷新的概念:荧光的亮度随着时间按指数衰减,整个画面必须在每一秒内重复显示许多次,人们才能看到一个稳定而不闪烁的图形,这叫屏幕的刷新。

3、RGB三基色原理三基颜色组合关系:三基色*不同亮度控制23*21=16位色 24位真彩色:23*284、显示器的显示分辨率:1024*768表示:一行800个像素,一列600个像素5、使用Bresenham算法画圆,已知X i+1=X i+1;求下一个光栅的位置。

if P i<0 则Y i+1=Y i;否则Y i+1=Y i-1;6、投影变换的五要素:投影对象、投影面、投影线、投影方向、视点。

7、三视图投影包括:正投影、水平投影、侧投影。

二、问答题:1、CRT显示器由哪几部分组成?各部分功能是什么?CRT由五部分组成:电子枪、聚焦系统、加速系统、磁偏转系统和荧光屏。

电子枪:发射电子流并控制其强弱;聚焦系统:将电子流聚焦成很窄的电子;加速系统:使电子束加速到应有的速度;磁偏转系统:将电子束引向荧光屏特定的位置;荧光屏:荧光粉发出可见光。

2、简述直线的dda算法的基本原理,并用dda算法画出(0,0)到(5,2)的直线。

(15分)(1)规律:(2)i n t(y+0.5),i n t(x+0.5)1|d|1/k|d||d||d|k|d|1,|d||d||d|yxyxyxyx==<==>,时,当时,当⎪⎩⎪⎨⎧±=±=<=⎩⎨⎧±=±=>++++11,1,1111iiiiyxiiiiyxyykxxddkyyxxdd图(略)3、简述内定义区域种子填充算法的步骤,(5分)确定种子、种子压栈、弹出种子并着新色、以该种子进行相邻像素四连通或八连通搜索。

交通大学成人本科计算机图形学期末大作业

交通大学成人本科计算机图形学期末大作业

交通大学成人本科计算机图形学期末大作业 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】《计算机图形学》期末大作业学号:姓名:李燕军学习中心:校本部注:将本作业的word文件、最后一题作品的.fla文件和.swf文件一起压缩成一个文件提交一、术语解释(15题×2分= 30分,1-10题英文缩略词要求写出的中文和英文全称,以课程教材范围内为准;11-15题写出概念解释)1、UI:用户界面2、IBR:基于图像的绘制3、VR:Virtual Reality 虚拟现实4、LOD:5、GKS:6、PHIGS:程序员层次交互式7、RSD:光栅扫描显示器8、CAM:Computer Aided Manufacture 计算机辅助制造9、OpenGL:是独立于视窗操作系统或其它操作系统的,亦是网络透明的。

帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

10、UCS:user coordinate system用户坐标系描述物体几何模型的坐标系。

有时也称为局域坐标系(local coordinate system LCS)。

用户坐标系也是实数域坐标系。

11、灭点:与平行投影相比透视投影的特点是所有投影线都从空间一点(称为视点或投影中心)投射,离视点近的物体投影大,离视点远的物体投影小,小到极点消失,称为灭点。

12、裁剪:在二维观察中,需要在观察坐标系下根据窗口大小对世界坐标系中的二维图形进行裁剪(clipping),只将位于窗口内的图形变换到视区输出。

13、投影:答:投影就是从投影中心发出射线经过三维物体上的每一点后与投影面相交所形成的交点集合。

14、消隐:真实感图形绘制过程中,由于投影变换失去了深度信息,往往导致图形的二义性。

要消除这类二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称之为消除隐藏线和隐藏面,或简称为消隐,经过消隐得到的投影图称为物体的真实图形15、走样:二、简答题(2题×5分=10分)1、简要说明计算机图形学、图像处理、模式识别三者之间的区别和联系。

图形学大作业

图形学大作业
(4)飘动的云彩中可以通过单击鼠标右键,可以控制云彩的位置,当鼠标位置单击到天空以下时,会进行越界判断,云彩不会划到草坪上。
2.3
这个程序使用VC6.0为编译工具,使用C++语言,运用计算机图形学技术,使窗口能够动态的接收用户的输入信息,包括鼠标和键盘的事件响应,使用户能够画出自己想要的二维图形,具体实现是一个一个窗体进行实现的
a.欢迎框,显示日历与作者基本信息。
b.进入主界面
c.光盘参数化程序
(1)默认关盘
(2)参数设置(带参数判断与记忆功能)
d.多边形参数化程序
(1)默认多边形
(2)参数设置(带参数判断与记忆功能)
e.金刚石参数化程序
(1)默认金刚石
(2)参数设置(带参数判断与记忆功能)
f.精美图案
(1)会动的云彩
特殊功能说明:通过单击鼠标右键,可以控制云彩的位置,当鼠标位置单击到天空以下时,会进行越界判断,云彩不会划到草坪上。
程序流程图
3
3.3
在开发的过程中,我们是由浅到深的进行开发,我们先争取实现基本功能,之后再进一步实现扩展功能。
具体来说,我们首先编写我们已经掌握到了的知识,例如窗体的创建,窗体的基本功能,对话框的创建,然后再添加一些通过查阅资料得到的知识要点,例如对称图形的绘制,键盘和鼠标的事件触发问题,点和线的图形分别绘制。之后再添加核心的功能。最后再增加扩展功能。在整体调试时,出现了很多问题,甚至使程序不能运行的问题,所以这也是我们遇到的最大障碍。
通过此次大作业的编写,我要达到进一步熟悉c++编程进一步从实践中了解计算机图形学,并在以后的学习中得到总结。
1.2
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。

计算机图形学大作业文档

计算机图形学大作业文档

计算机图形学课程结课大作业学号5011110122学生姓名阿依萨丽姑丽·麦麦提专业计算机科学与技术班级计算机15-1班塔里木大学教务处制《计算机图形学》课程结课作业提示:1、请将答案写在此文档的相应位置,图形需在VC++ 6.0下客户区屏幕中心绘制,大小可以根据个人需求定制;2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到ftp://210.26.176.123“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2014年12月19日下午18:00—20:00交到逸夫楼109。

一、选题(此题5分)请根据你抽中的题号,正确理解其所对应的简笔画。

请写出你选中的题号,将图粘贴到下方,并为其取一个合适的名字。

我选的题号是:20号图,名字为:房子。

二、组成(此题10分)请分析你所选择的题目,由哪些简单图形组成,并写出其所对应的函数或原理。

请在下方表格中简要写明函数的原型或原理的名字即可。

如果表格行数不够,请自行添加。

三、参数说明(此题15分)请写出相关函数的参数,并分析出每个参数的含义,要求此题务必写清每个函数的作用和使用方法。

画图的时候我使用了绘制直线段函数MoveTo()和LineTo()。

直线段的绘制过程中有一个称为“当前位置”的特殊位置。

每次绘制直线段都是以当前位置为起点,直线段绘制结束后,直线段的终点又成为当前位置。

由于当前位置在不断更新,所以使用LineTo()函数可以绘制连续直线。

(1)设置起点位置函数cpoint MoveTo(int x,int y);cpoint MoveTo(POINT point);参数:新位置的点坐标x和y;point是POINT结构或CPoint。

本函数只将画笔的当前位置移动到坐标x和y处,不画线。

(2)绘制直线段函数BOOL LineTo(int x,int y);BOOL LineTo(POINT point);参数:直线段终点坐标x和y;point是POINT结构或CPoint对象。

计算机图形学期末编程大作业

计算机图形学期末编程大作业
if(dlgBresenhamline.DoModal()==IDOK)
{Xs=dlgBresenhamline.m_Xs;
Ys=dlgBresenhamline.m_Ys;
Xe=dlgBresenhamline.m_Xe;
Ye=dlgBresenhamline.m_Ye;}
//使传入的端点坐标X值相等
2)Bresenham画圆算法
Bresenham画法与中点画法一样,也考虑从(0,R)到(R/ ,R/ )的八分之一圆周。取(0,R)为起点,按顺时针方向生成圆。从这段圆弧的任意一点出发,按顺时针方向生成圆时,为了最佳逼近该圆,下一像素的取法只有三种可能的选择:正右方像素,右下方像素和正下方像素。这三个像素中,与理想圆弧最近者为所求像素。
}
}
//斜率绝对值大于1
else
{//情况三:Y递增
if(Ys<=Ye)
{p=(dx<<1)-dy;
while(y<=Ye)
{dc.SetPixel(x,y,m_clr);
if(p<0)
{y++;p=p+(dx<<1);}
else
{x++;y++;p=p+((dx-dy)<<1);}
}
}
//情况四:Y递减
b.直线的绘制
图1-3直线参数对话框
鼠标左键点选菜单栏中的 菜单,会弹出下拉菜单,其中提供2种直线绘制的经典算法,包括DDA算法和Bresenham算法。我们可随意选择一种,例如Bresenham算法。
说表左键单击选定后,便会弹出参数输入对话框,如图3。
注意:由于在计算机的图形显示时,屏幕坐标默认以屏幕左上角点为(0,0)点,X轴方向水平指向右侧,Y轴方向竖直指向下侧。与我们实际中熟悉的坐标系不同,输入点坐标时要注意。例如直线的起止点坐标分别为(0,0)、(100,100),绘制结果如图5。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(X0+R>700||Y0+R>428||X0-R<0||Y0-R<0)
MessageBox("图像超出范围,请在全屏下运行,否则将显示不完全!");
if(X0+R>1024||Y0+R>644||X0-R<0||Y0-Rห้องสมุดไป่ตู้0)
MessageBox("图像超出范围,将显示不完全!");
x=0;y=R; p=3-(R<<1);
{
dc.SetPixel((int)(x+0.5),(int)(y+0.5),m_clr);
x+=dx;
y+=dy;
}
}
/****************算法结束*********************/
/**********Bresenham直线算法**************/
void CAView::OnBresenhamLine()
/**************Bresenham画法*************/
void CAView::OnBresenhamCircle()
{// TODO: Add your command handler code here
int X0=1;
int Y0=1;
int R=1;
int x,y,p;
if(Xe>1024||Ye>644)
MessageBox("图像超出范围,将显示不完全!");
//斜率绝对值小于等于1
if(m)
{//情况一:Y递增
if(Ys<=Ye)
{p=(dy<<1)-dx;
while(x<=Xe)
{dc.SetPixel(x,y,m_clr);
if(p<0)
{x++;p=p+(dy<<1);}
完成下列程序的设计、调试与及设计说明书:
一、实现直线、圆的生成
要求:(1)算法不限;(2)直线的端点、圆的圆心、半径由用户实时输入;(3)用所实现的直线、圆的生成程序实现一个任意图形的绘制。
二、实现区域填充(多边形区域)或影线填充
要求:(1)区域自行指定,至少应有一个内环(2)算法:计算机相关专业的要求实现图案填充,机械相关专业的要求实现影线填充。
else
{x++;y++;p=p+((dy-dx)<<1);}}
}
//情况二:Y递减
else
{ p=dx-(dy<<1);
while(x<=Xe)
{dc.SetPixel(x,y,m_clr);
if(p<0)
{x++;p=p-(dy<<1);}
else
{x++;y--;p=p-((dy=dx)<<1);}}
要求:
1、语言不限,可以是所熟悉的如何一种语言。
2、须提交的内容包括:源程序(电子版)、可执行程序,设计说明书(电子版及打印版)。
3、程序须经教师运行测试通过。
4、设计说明书B5页面打印,内容包括:算法与数据结构,程序流程说明及变量,程序运行情况分析及结果截图,程序使用说明。
题目一:实现直线、圆的生成
else
{p=(dx<<1)+dy;
while(y>=Ye)
{dc.SetPixel(x,y,m_clr);
if(p<0)
{y--;p=p+(dx<<1);}
else
{x++;y--;p=p+((dx+dy)<<1);}}
}
}
}
/*************算法结束*****************/
CClientDC dc(this);
CDlg_SetCircle dlgMidPointcircle;
if(dlgMidPointcircle.DoModal()==IDOK)
{X0=dlgMidPointcircle.m_X0;
Y0=dlgMidPointcircle.m_Y0;
R=dlgMidPointcircle.m_R ;}
if(Xs==Xe)
{if(Ys<Ye)
{for ( int i=Ys; i<=Ye; i++)
dc.SetPixel(Xs,i,m_clr);}
else
{for ( int i=Ye; i<=Ys; i++)
{dc.SetPixel(Xs,i,m_clr);}}
return;
}
BOOL m=(fabs(Ye-Ys)<=fabs(Xe-Xs));
}
}
//斜率绝对值大于1
else
{//情况三:Y递增
if(Ys<=Ye)
{p=(dx<<1)-dy;
while(y<=Ye)
{dc.SetPixel(x,y,m_clr);
if(p<0)
{y++;p=p+(dx<<1);}
else
{x++;y++;p=p+((dx-dy)<<1);}
}
}
//情况四:Y递减
if(dlgDDAline.DoModal()==IDOK)
{Xs=dlgDDAline.m_Xs;
Ys=dlgDDAline.m_Ys;
Xe=dlgDDAline.m_Xe;
Ye=dlgDDAline.m_Ye;}
if(Xe>700||Ye>428)
MessageBox("图像超出范围,请在全屏下运行,否则将显示不完全!");
题目二:实现区域填充(多边形区域)或影线填充
要求:(1)区域自行指定,至少应有一个内环(2)算法:计算机相关专业的要求实现图案填充,机械相关专业的要求实现影线填充。
if(Xe>1024||Ye>644)
MessageBox("图像超出范围,将显示不完全!");
dx = Xe - Xs;dy = Ye - Ys; e = (fabs(dx)>fabs(dy)) ? fabs(dx):fabs(dy);dx /= e;dy /= e;x = Xs;y = Ys;
for(int i=1; i<=e; i++)
b. Bresenham算法
1965年,Bresenham提出了一种更好的直线生成算法,称为Bresenham算法。此算法的一个主要思想是借助于一个决策变量dk,来确定下一个该点亮的像素点。对于直线斜率k在0~1之间的情况,从给定线段的左端点(x1,y1)开始,逐步处理每个后续列(x位置),并在扫描线y值最接近线段的像素上绘出一点。
//如果Xs大于Xe的值,交换坐标值
if(Xs>Xe)
{p=Xs;Xs=Xe;Xe=p;
p=Ys;Ys=Ye;Ye=p;}
x=Xs; y=Ys;
dx = Xe - Xs;
dy = Ye - Ys;
if(Xe>700||Ye>428)
MessageBox("图像超出范围,请在全屏下运行,否则将显示不完全!");
for(;x<=y;x++)
{dc.SetPixel( x+X0, y+Y0, m_clr);
dc.SetPixel(-x+X0, y+Y0, m_clr);
dc.SetPixel( x+X0,-y+Y0, m_clr);
dc.SetPixel(-x+X0,-y+Y0, m_clr);
dc.SetPixel( y+X0, x+Y0, m_clr);
{// TODO: Add your command handler code here
CClientDC dc(this);
CDlg_LinePoint dlgBresenhamline;
int Xs=1;int Ys=1;int Xe=1;int Ye=1;int x,y,p;int dx,dy;
图1-5绘制结果
如果输入的坐标值超出了设定的范围,将弹出提示对话框,如下图所示:
c.圆的绘制
鼠标左键点选菜单栏中的 菜单,会弹出下拉菜单,Bresenham算法。
则弹出对话框如图5。
图1-5圆参数输入界面
根据对话框的要求,填入元的基本参数值:圆心坐标值和半径值。
注意:界面上对输入的数值的要求。程序的默认窗体中,图形显示空间为宽度大小为700个像素值,高为428个像素值。全屏条件下,图形显示空间为宽度大小为1024个像素值,高为644个像素值。
2)Bresenham画圆算法
Bresenham画法与中点画法一样,也考虑从(0,R)到(R/ ,R/ )的八分之一圆周。取(0,R)为起点,按顺时针方向生成圆。从这段圆弧的任意一点出发,按顺时针方向生成圆时,为了最佳逼近该圆,下一像素的取法只有三种可能的选择:正右方像素,右下方像素和正下方像素。这三个像素中,与理想圆弧最近者为所求像素。
b.直线的绘制
图1-3直线参数对话框
鼠标左键点选菜单栏中的 菜单,会弹出下拉菜单,其中提供2种直线绘制的经典算法,包括DDA算法和Bresenham算法。我们可随意选择一种,例如Bresenham算法。
说表左键单击选定后,便会弹出参数输入对话框,如图3。
相关文档
最新文档