资源描述:
《计算机图形学第三章new.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章输出图元点绘制画线算法圆生成算法椭圆生成算法区域填充字符生成第三章输出图元图元的概念最基本的图形元素/图形输出原语类型图形一级元素:点、线图形二级元素:弧、圆、多边形、曲线、字符其他:...3.1点和直线点直线点的绘制光栅扫描系统:帧缓冲器对应位置设为1其他元素的绘制都在以点为基础产生。点的绘制屏幕坐标OpenGL中指定二维、三维世界坐标系统OpenGL画点函数直线的绘制光栅扫描系统屏幕位置以整数值表示;以线路径上的离散点来显示线段显示的线段具有阶梯效果直线的绘制计算机绘制的直线是由一系列
2、与该直线最近的像素绘制而成理论直线与计算机绘制的直线之间总有一定的偏差只能尽量减少偏差偏差取决于屏幕光栅(分辨率)和光点的运动方向阶梯效果的直线坐标值取整(10.48,20.51)(10,21)假设两个底层函数装载指定位置象素的颜色到帧缓存用函数:setPixel(x,y)读取指定位置象素的颜色的函数:getPixel(x,y)3.2画线算法问题画线算法DDA算法Bresenham算法3.2画线算法问题已知直线的两个端点P1(x1,y1),P2(x2,y2)求直线的中间各点3.2画线算法已知:
3、P1(x1,y1),P2(x2,y2)直线的笛卡尔斜率截距方程y=m*x+bm=(y2-y1)/(x2-x1)b=y1-m*x1y=m*xx=y/m3.2画线算法对于模拟显示设备,方程y、x是决定偏转电压变化的基础。当
4、m
5、<1,△x可以设置为正比于一水平偏转电压,△y则可以根据公式计算。当
6、m
7、>1,△y可以设置为正比于一垂直偏转电压,△x则可以根据公式计算。直线绘制要求直端点准确亮度均匀速度属性x1x2y1y2xy求直线中间的各个像素点1.DDA算法数字微分分析仪思想:在一个坐标
8、轴上以单位间隔对线段取样,则另一个坐标轴以常数m或1/m变化,从而获得线段上各像素点直线中间的各个像素点-沿x轴取样x1x2y1y2xy
9、m
10、<1DDA算法公式直线斜率满足
11、m
12、<1时,取x方向为单位步长。递推公式为:xk+1=xk1yk+1=ykm求直线中间各个像素点-沿y轴取样x1x2y1y2xy
13、m
14、>1DDA算法公式直线斜率满足
15、m
16、>1时,取y方向为单位步长。递推公式为:yk+1=yk1xk+1=xk1/m画直线的DDA算法可表示为:若
17、m
18、≤1:xk+1=xk+1,yk+1=
19、yk+m;xaxb若
20、m
21、≥1:yk+1=yk+1,xk+1=xk+1/m;yaybDDA算法DDA算法举例已知直线的两个端点P1(20,10),P2(30,18),用DDA算法使该线段光栅化。解:dx=10;dy=8;steps=10;x_in=1;y_in=0.8;DDA算法举例DDA算法举例2021222324252627282930101112131415161718D
22、DA算法的C实现#defineRound(a)((int)(a+0.5))voidlineDDA(intxa,intya,intxb,intyb){intdx=xb-xa,dy=yb-ya,steps,k;floatxIncrement,yIncrement,x=xa,y=ya;if(abs(dx)>abs(dy))steps=abs(dx);elsesteps=abs(dy);xIncrement=dx/(float)steps;yIncrement=dy/(float)steps;setpi
23、xel(Round(x),Round(y),RED);for(k=0;k24、现举例Bresenham算法思想从(10,10)像素开始,绘制0