基本图形的生成与计算-直线、圆、椭圆的生成

基本图形的生成与计算-直线、圆、椭圆的生成

ID:45029954

大小:334.00 KB

页数:36页

时间:2019-11-08

 基本图形的生成与计算-直线、圆、椭圆的生成_第1页
 基本图形的生成与计算-直线、圆、椭圆的生成_第2页
 基本图形的生成与计算-直线、圆、椭圆的生成_第3页
 基本图形的生成与计算-直线、圆、椭圆的生成_第4页
 基本图形的生成与计算-直线、圆、椭圆的生成_第5页
资源描述:

《 基本图形的生成与计算-直线、圆、椭圆的生成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章直线、圆、椭圆生成算法图形的扫描转换(光栅化):确定像素、显示图形的过程。步骤如下:确定像素用图形属性,对像素进行写操作一维图形,用一个像素宽的直线来显示图形二维图形的光栅化,即区域的填充:确定像素,填色或图案。图形的光栅化,必须显示在窗口内,否则不予显示。确定图形的哪些部分在窗口内,哪些在窗口外,即裁剪浙江师范大学数理与信息工程学院计算机图形学图形显示前需要:扫描转换+裁剪裁剪---〉扫描转换:最常用,节约计算时间。扫描转换---〉裁剪:算法简单;浙江师范大学数理与信息工程学院计算机图形学本章内容直线的生成算法圆的生成算法区域填充算法字符的生成

2、图形求交图形裁剪浙江师范大学数理与信息工程学院计算机图形学直线的生成算法确定最佳逼近该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作三个常用算法:数字微分法(DDA)中点画线法Bresenham算法浙江师范大学数理与信息工程学院计算机图形学数字微分法(DDA)假定直线的起点、终点分别为:(xa,ya),(xb,yb),则斜率m为:m=(yb-ya)/(xb-xa)=dy/dx(xi,yi)(xi+1,yi+k)(xi,int(yi+0.5))栅格交点表示象素点位置。。。。浙江师范大学数理与信息工程学院计算机图形学数值微分(DDA)法基本思想直线

3、的起点和终点分别为(xa,ya),(xb,yb),斜率m为:m=(yb-ya)/(xb-xa)=dy/dx直线中每个点坐标由前一点坐标加增量(Dx,Dy)而得到xi+1=xi+Dx其中x1=xayi+1=yi+Dyy1=ya并且Dy=m×Dx浙江师范大学数理与信息工程学院计算机图形学数值微分(DDA)法直线方向的8个象限在1a取Dx=1,Dy=m;在1b取Dx=1/m,Dy=1;…得到象限

4、dx

5、>

6、dy

7、?DxDy象限

8、dx

9、>

10、dy

11、?DxDy1atrue1m3atrue-1-m1bfalse1/m13bfalse-1/m-12atrue-1m4a

12、true1-m2bfalse-1/m14btrue1/m-1浙江师范大学数理与信息工程学院计算机图形学数值微分(DDA)法二个规律(1)

13、dx

14、>

15、dy

16、时,

17、Dx

18、=1,

19、Dy

20、=m

21、dx

22、≤

23、dy

24、时,

25、Dx

26、=1/m,

27、Dy

28、=1(2)Dx、Dy的符号与dx、dy的符号相同增量算法:在迭代算法中,如果每一步的x、y值是用前一步的值加上增量来获得,则称为增量算法DDA算法就是一个增量算法浙江师范大学数理与信息工程学院计算机图形学数值微分(DDA)法#include"stdio.h"#include"graphics.h"voiddda_line(i

29、ntxa,intya,intxb,intyb,intc);voidmain(){intdriver=DETECT,mode;intx0,y0,x1,y1,background=WHITE,color=RED;scanf("%d,%d,%d,%d",&x0,&y0,&x1,&y1);initgraph(&driver,&mode,"d:\tc");setbkcolor(backround);dda_line(x0,y0,x1,y1,color);getch();closegraph();}浙江师范大学数理与信息工程学院计算机图形学数值微分(DDA)法v

30、oiddda_line(intxa,intya,intxb,intyb,intc){floatdelta_x,delta_y,x,y;intdx,dy,steps,k;dx=xb-xa;dy=yb-ya;if(abs(dx)>abs(dy))steps=abs(dx);elsesteps=abs(dy);delta_x=(float)dx/(float)steps;delta_y=(float)dy/(float)steps;x=xa;y=ya;putpixel(x,y,c);for(k=1;k<=steps;k++){x+=delta_x;y+=de

31、lta_y;putpixel(x,y,c);}}浙江师范大学数理与信息工程学院计算机图形学Bresenham画线算法由DDA算法可知:yi+1=yi+m。由于m不一定是整数,由此式求出的yi也不一定是整数本算法于1965年由Bresenham提出在直线生成的算法中,Bresenham算法是最有效的算法之一令m=Δy/Δx,就0≤m≤1的情况来说明Bresenham算法浙江师范大学数理与信息工程学院计算机图形学Bresenham画线算法设直线从起点(xa,ya)到终点(xb,yb)。直线可表示为方程y=mx+b,其中b=y1-mx1,x1=xa,y1=

32、yam=(yb-ya)/(xb-xa)=dy/dx浙江师范大学数理与信息工程学院计算机图形学B

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。