计算机图形学算法汇总.doc

上传人:枫** 文档编号:563704837 上传时间:2022-09-13 格式:DOC 页数:6 大小:36KB
返回 下载 相关 举报
计算机图形学算法汇总.doc_第1页
第1页 / 共6页
计算机图形学算法汇总.doc_第2页
第2页 / 共6页
计算机图形学算法汇总.doc_第3页
第3页 / 共6页
计算机图形学算法汇总.doc_第4页
第4页 / 共6页
计算机图形学算法汇总.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《计算机图形学算法汇总.doc》由会员分享,可在线阅读,更多相关《计算机图形学算法汇总.doc(6页珍藏版)》请在金锄头文库上搜索。

1、直线的扫描转换数值微分法(DDA)DDA画线算法程序void DDALine(int x0,int y0,int x1,int y1,int color) int x; float dx, dy, y, k; dx = x1-x0; dy=y1-y0; k=dy/dx;y=y0; for (x=x0;x 1时,必须把x,y地位互换,y每增加1,x相应增加1/k。在这个算法中,y与k必须用浮点数表示,而且每一步都要对y进行四舍五入后取整,这使得它不利于硬件实现。中点画线法中点画线算法程序:void Midpoint Line (int x0,int y0,int x1, int y1,int c

2、olor) int a, b, d1, d2, d, x, y; a=y0-y1;b=x1-x0;d=2*a+b; d1=2*a;d2=2* (a+b); x=x0;y=y0; drawpixel(x, y, color); while (xx1) if (d0.5,则(x,y)更新为(x+1,y+1),同时将d更新为d-1;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。算法步骤:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、e=-x、x=x0、y=y0。3.绘制点(x,y)。4.e更新为e+2y,判断e的符号。若e0,

3、则(x,y)更新为(x+1,y+1),同时将e更新为e-2x;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。void Bresenhamline (int x0,int y0,int x1, int y1,int color) int x, y, dx, dy; float k, e; dx = x1-x0; dy = y1- y0; k=dy/dx; e=-0.5; x=x0; y=y0; for (i=0; idx; i+) drawpixel (x, y, color); x=x+1; e=e+k; if (e0) y+; e=e-1; 中点画圆算法

4、:MidPointCircle(int r int color) int x,y; float d; x=0; y=r; d=1.25-r; drawpixel (x,y,color); while(x=y) if(d i结点的x值递增D x;若允许多边形的边自相交,则用冒泡排序法对AET表重新排序; /* polyfill */边界标志算法:void edgemark_fill(polydef, color)多边形定义 polydef; int color; 对多边形polydef 每条边进行直线扫描转换;inside = FALSE;for (每条与多边形polydef相交的扫描线y )for (扫描线上每个象素x ) if(象素 x 被打上边标志)inside = ! (inside);if(inside!= FALSE) drawpixel (x, y, color);else drawpixel (x, y, background);

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

当前位置:首页 > 生活休闲 > 社会民生

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