计算机图形学实验作业

上传人:F****n 文档编号:99699250 上传时间:2019-09-20 格式:DOCX 页数:13 大小:799.22KB
返回 下载 相关 举报
计算机图形学实验作业_第1页
第1页 / 共13页
计算机图形学实验作业_第2页
第2页 / 共13页
计算机图形学实验作业_第3页
第3页 / 共13页
计算机图形学实验作业_第4页
第4页 / 共13页
计算机图形学实验作业_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《计算机图形学实验作业》由会员分享,可在线阅读,更多相关《计算机图形学实验作业(13页珍藏版)》请在金锄头文库上搜索。

1、计算机图形学实验报告实验名称 C程序绘图基础 评分 实验日期 2013 年 11月 4日 指导教师 姓名 专业班 11地信 学号 一、实验目的1、 掌握用Turbo C绘图时的步骤。2、 掌握C语言中的基本绘图函数及其用法。3、 掌握简单动画的实现方法。二、实验要求1、编写金刚石图案的程序;2、编写肾形图案相关程序;3、编写一个正方形程序(每一个比前一个稍小),并在其中画出不同的正方形;4、编写自人在公路上行走的程序;5、编写正多边形绘图程序;三、用C语言编写绘画程序的主要步骤及绘图函数(一) 用C语言绘制图形的步骤:1、为了调用C语言提供的图形库函数,在程序的开头写上文件的包含命令;# in

2、clude 2、图形系统初始化及关闭图形方式初始化是通过调用 initgraph( )函数来完成 ,它的调用格式为:initgraph (* gdriver,* gmode,* path);该函数的功能是通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将显示器设置到指定图形方式下。参数gdriver, gmode, path的含义参见教材的有关章节。在运行图形程序结束后,又要回到文本方式,以进行其它工作,这时应关闭图形方式。其格式为:closegraph( )。3、图形显示器的工作方式1) 文本模式与字符坐标系在未通过图形初始化之前的屏幕上,只能显示字符的方式称为文本模式。C语言能在指定位

3、置显示字符,该坐标系以屏幕的左上角为坐标原点,水平向为x轴,自左向右;垂直方向为y轴,自上向下,坐标原点为(1,1)。能显示的行数、列数及颜色与显示方式有关。Turbo C支持6种不同的文本显示方式。2) 图形模式与点坐标系在屏幕上能显示图形的方式称为图形方式。屏幕是由像素点组成的,通过initgraph函数的gmode参数来指定屏幕的分辨率,分辨率决定了像素点的多少。在图形方式下,屏幕上每个像素的显示位置用点坐标系来描述。在该坐标系中,屏幕的左上角为坐标原点O(0,0),水平向为x轴,自左向右;垂直方向为y轴,自上向下。如图1-1所示。O(0,0)maxxmaxy分辨率不同,水平方向和垂直方

4、向上的点数也不一样,即其maxx、maxy的数值不同。在Turbo C中,坐标数据有两种形式给出:一种是绝对坐标;另一种是相对坐标。绝对坐标的参考点是坐标的原点O(0,0),x 和y的值只能取规定范围内的正整数,其坐标值在整个屏幕范围内确定。相对坐标是相对于“当前点”的坐标,所以其参考点不是坐标系的原点,而是当前点。要相对坐标中,x和y的取值是相对于当前点在X方向和Y方向上的增量,这个增量可以是正的,也可以是负的,所以x和y的值可以是正整数,也可以是负整数。此外,把在一个窗口范围内确定的坐标也称为相对坐标。(二) C语言中的基本绘图函数及其用法:1、绘图函数在用绘图函数作图时,有的绘图函数坐标

5、是相对于坐标原点,用绝对坐标。有的绘图函数用相对坐标,这时要随时注意图形的“当前点位置”,它是绘图的起始位置。也就是说,图形总是从当前点开始画图。画完一个图形后,有的当前点不变,仍在原来的位置;而有时会移到新的位置。1) 直线类绘图函数用直线类函数绘制直线图形,可以用两种坐标:一种是绝对坐标;另一种是相对坐标。几个常用的函数: 点的绝对定位函数 moveto(x,y) 点的相对定位函数 moverel(deltayx,deltay)它们不绘制图形,只改变当前点的位置,接着用绘图函数绘图。 指定两个绝对点绘直线函数: line(x1,y1,x2,y2) 该函数不改变当前点的位置。 从当前点到指定

6、的绝对点绘直线函数: lineto(x,y) 该函数画线的同时,将当前点的位置移到(x,y)。 从当前点到指定的相对点绘直线函数: linerel(dx,dy) 该函数画线的同时,将当前点的位置移到(x+dx,y+dy)。设当前坐标为(x,y)则linerel(dx,dy)与lineto(x+dx,y+dy)等价。 读取当前点的位置x,y函数分别为: getx(void),gety(void) 读取x,y轴的最大值函数分别为:getmaxx(void),getmaxy(void)2) 多边形类绘图函数 画矩形函数 rectangle(x1,y1,x2,y2); 画多边形函数:drawpoly(

7、n ,* polypoints)其中参数,n为多边形数;* polypoints 指向一个整形数组,共有2n 个整数组成,每对整数给出了一个多边形顶点(x,y)坐标。2、图形属性的设置图形属性的设置包括绘制该图形所用的颜色和线型。颜色又分为背景色和前景色:背景色指的是屏幕的颜色,即绘图时的底色;前景是指绘图时图形线条所用的颜色。背景色和前景色的设置,只对设置后所绘制的颜色和线型有作用,对已经绘制的图形无作用。1) 设置前景色设置前景颜色所用的函数 setcolor。其调用格式为:setcolor(color);其中color为一个整型数值,代表所取的颜色。2) 设置背景色设置背景颜色所用的函数

8、 sebktcolor。其调用格式为:setbkcolor(color);其中color为一个整型数值,代表所取的颜色。3)设置线型设置当前绘图所用的线型和线宽,用函数 setlinestyle。线型和线宽的设置仅限于对直线类图形有效。其调用格式为:setlinestyle(sty,pat,b);sty:整型值,用来定义所画直线的类型;pat用户定义线型使用; b整型值,用来定义定义所画直线的线宽。在屏幕上绘制出各种简单的几何图形,要求设置不同的线形和颜色。3、 填充填空是指用指定的模式和颜色来填空一个指定的封闭区域。1) 设置当前的填充模式和颜色设置填充模式和颜色,用函数setfillsty

9、le,其调用格式为:setfillstyle(pattern,color);2) 实施填充对于指定的一块有界的封闭区域进行填充操作,用函数floodfill,其调用格式为:floodfill(x,y,bcolor);参数(x,y)指位于填充区域内任意一点的坐标,该点作为填充的起始点,参数bcolor作为填充区域的边界颜色。如果起始点在封闭区域内,则区域内部被填充;如果起始点在封闭区域外,则区域外部被填充。同学们可以自行验证。3) 其它填充函数以下几个填充函数,均须事先由setfillstyle 函数指定当前的填充模式和颜色。 绘制并填充实椭圆函数: fillellipse(x,y,rx,ry)

10、; 绘制并填充实椭圆扇区函数: sector(x,y,angs,ange,rx,ry) 绘制并填充多边形函数:fillpoly(nps ,*pxy)4、 屏幕管理Turbo C2.0 提供了11个函数,用于对屏幕和视区进行管理。1)设置视图区在图形方式下,可用函数setviewport在屏幕上定义一个视图区。视图区相当于一个用于绘图的窗口。视图区的位置和大小用屏幕的绝对坐标定义,并且可把视图区设置为裁剪和不裁剪两种状态。函数setviewport的调用格式为:setviewport(x1,y1,x2,y2,c);参数x1,y1:为视图区矩形的左上角顶点坐标;x2,y2:为视图区矩形的右下角顶点

11、坐标。c为裁剪状态参数。c=1,超出视图区的图形部分被自动裁剪掉;c=0时,对超出部分不作裁剪处理。应注意:视图区建立以后,所有的图形输出坐标都是相对于当前视图区的,即视图区左上角点为坐标(0,0)点,而与视图区和图形在屏幕上的位置无关。在默认情况下,整个屏幕为一个视图区。2)清除视图区清除视图区用函数 clearviewport。它的作用是清除掉当前视图区,将当前点的位置设置于屏幕左上角(0,0)点。调用格式为:clearviewport();3)清屏清屏的函数为 cleardevice ();四、程序调试中的问题在Options中directories分别把改到TC安装路径下:到经过修改合

12、适。基本都是路径有错误,修改之后就合适。五、程序运行结果或数据1、金刚石图案2、肾形图案3、正方形图案5、 人在公路上行走5、正多边形图案六、实验收获及体会1)可以充分运用Turbo C2.0,我们对Turbo C的环境更加熟悉,也对计算机图形学里涉及的函数有一个更深的理解。2)在Turbo C2.0中编写,要求的程序,并且调试错误;3)将Turbo C2.0中出现的错误,改正过来,从中了解并且知道Turbo C2.0中相关程序。4)在Turbo C2.0出现的问题一一纠正,了解并且绘制出自己想要的图案,按要求绘制相关图案;5)将Turbo C2.0熟练的运用,掌握相关的技巧;6)可以对C语言

13、的进一步认识,熟悉掌握相关的知识;7)对C语言初步了解,还待提高。 七、参考源程序(可附页)1、金刚石图案的程序#include#includemain()float t;int x0=320,y0=240;int n,i,j,r,x50,y50;int gdriver=DETECT,gmode;printf(input n(23-31)and r(100-200)n);scanf(%d,%d,&n,&r);initgraph(&gdriver,&gmode,C:tc);cleardevice();setbkcolor(9);setcolor(4);t=6.28318/n;for(i=0;in

14、;i+)xi=r*cos(i*t)+x0;yi=r*sin(i*t)+y0;for(i=0;i=n-2;i+)for(j=i+1;j=n-1;j+)line(xi,yi,xj,yj);getch();closegraph();2、肾形图案相关程序#include#include#define PI 3.main() int x,y,r,r1;double a;int gdriver=9,gmode=2;initgraph(&gdriver,&gmode,d:tc);printf(input radus(150)n);scanf(%d,&r);cleardevice();setbkcolor(MAGENTA);setcolor(WHITE);for(a=0;a2*PI;a+=PI/27)x=r*cos(a)+320;y=r*sin(a)+240; r1=abs(x-320);circle(x,y,r1); getch();closegraph(); 3、一个正

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号