第二章 光栅图形学-1.ppt

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 光栅图形学-1

第二章 光栅图形学(1);图形的描述方法有多种,对于光栅图形系统而言,图形则完全由显示器上的像素位置的亮度指定。与此相反,也可将图形描述成诸如树木、地形、家具、墙壁等位于场景内指定坐标位置上的一组复杂物体。本质上,物体的形状和颜色可用像素矩阵或直线和多边形填色区域等基本几何结构来描述。场景既可以通过将像素矩阵装入帧缓冲器,也可以通过将基本几何结构说明转换为像素图案来显示。光栅扫描图形设备需要采用专门算法来显示直线、圆、多边形填充区域、字符串等基本几何结构,本章讨论这些基本几何结构的设备级算法。对此,假定物体的位置直接以整数坐标给出,像素位置按照扫描线行数和;列数指定,编址方案如图所示。扫描线从屏幕底部从零开始编号,像素列则沿每条扫描线从左至右从零开始编号,每个像素区域由左下角的整数网格坐标来指定。 此外,我们将假设有以下形式的底层函数: DrawPixel (x, y, value), GetPixel (x, y) ;2.1 图形程序 计算机图形的生成有两种方法:程序绘图和交互绘图。所谓程序绘图,就是先用程序设计语言(如 C 语言)编写好绘图程序,然后运行该程序并绘出图形。交互绘图则是应用交互图形软件,通过交互命令(键盘命令、菜单命令等)由计算机生成图形。程序绘图是交互式绘图的基础,所有的交互式图形软件均是基于程序绘图算法或函数而开发的。我们这里结合一些典型的算例,介绍图形绘图程序的设计方法。;1. 图案程序 金刚石图案 将半径为 R 的圆周分成 n 等分,然后用直线将各等分点两两相连,这样生成的图案称之为“金刚石”,如图所示。绘制该图形的 C 程序如程序 2.1.1。;#include graphics.h #include math.h main() { float t; int x0 = 320, y0 = 240; int x0 = 320, y0 = 240; int n, i, j, r, x[50], y[50]; int gdriver = DETECT,gmode; printf(input n(20-30) and r(100-200)\n); scanf(%d, %d, n, r); initgraph(gdriver, gmode, c:\\tc); cleardevice(); ;用程序 2.1.1 绘制金刚石图案时,只是简单地调用了直线绘制函数 line ,通过两点连线绘成。这里的绘直线函数 line 是由 Turbo C 提供的。对于计算机图形学而言,所做的工作之一就是建立绘制直线等基本图形的算法,以便开发绘制复杂图形的软件系统。该例程同时也给出了利用 Turbo C 编写绘图程序的一般程序框架。;#include graphics.h main () { int gdriver=DETECT, gmode; initgraph(gdriver, gmode, c: \\ tc); cleardevice(); setbkcolor (背景色代码); /* 代码数字或大写的颜色英文名称 */ setcolor(图形颜色代码 ); /* 用户编写的绘制图形的源代码 */ closegraph(); };肾形图案 “肾形图案”是由按某种规律变化的圆形成的:将一个半径为 R 的圆周等分成 2n 等份,然后以等分点为圆心,以等分点到该圆的垂直直径的距离为半径画圆,则形成如图所示的肾形图案。绘制该图形的 C 程序见程序 2.1.2。;#includegraphics.h #includemath.h #define PI 3.1415926 main() { int x,y,n,r,r1; double a; int gdriver=DETECT,gmode; initgraph(gdriver,gmode,c:\\tc); printf(input Radius(150)\n); scanf(%d,r); printf(input number of divided\n); scanf(%d,n); n=2*n-1; ;海绵图案 下图所示的图案称为“海绵图案”,整个图案由大小不同的许多三角形组成。 在该图案中,除了最外面的大三角形外,其余三角形都是由连接包含它的三角形的三条边的

文档评论(0)

jiaoyuguanliji + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档