图形学实验报告画直线,圆,剪裁

图形学实验报告画直线,圆,剪裁

ID:20193707

大小:372.50 KB

页数:17页

时间:2018-10-11

图形学实验报告画直线,圆,剪裁_第1页
图形学实验报告画直线,圆,剪裁_第2页
图形学实验报告画直线,圆,剪裁_第3页
图形学实验报告画直线,圆,剪裁_第4页
图形学实验报告画直线,圆,剪裁_第5页
资源描述:

《图形学实验报告画直线,圆,剪裁》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.实验目的:1.理解并掌握中点画线算法的基本思想和算法实现在面板随意位置画线。2.理解并掌握中点画圆算法的基本思想和算法实现在面板以任意位置为圆心画半径任意的圆。3.理解并掌握裁剪直线的基本思想和算法实现在任意绘制的矩形中裁剪所画直线。二.实验内容:1.中点画线1.1基本原理:假定直线斜率

2、k

3、<=1,且已确定当前象素点P(Xp,Yp),然后确定下一个象素点,即T或B之一。M为T,B中点,Q为理想直线与栅格线的交点。若M在Q的下方,选T,否则选B。使用直线的正负划分性来判断M和Q的位置关系(即:F(x,y)=a*x+b*y+c=0)。然后构造判别式:d=F(M

4、)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c其中a=y0-y1,b=x1-x0,c=x0y1-x1y0当d<0,M在L(Q点)下方,取右上方T为下一个象素;当d>0,M在L(Q点)上方,取右方B为下一个象素;当d=0,选T或B均可,约定取B为下一个象素判断了M的位置之后则可以依次的画出各个点,从而得到一条直线。但是上面的这个算法存在浮点运算,所以将其乘以2去掉浮点运算,实现整数运算,提高效率。而对于

5、k

6、>1的情况,只需将x与y的位置对调考虑则很容易得到正确的算法实现。并且在本次的中点算法中可以绘制任意斜率的直线。1.2函数流程直线方

7、程:a*x+b*y+c=0,p1(x1,y1),p2(x2,y2)==>a=y1-y2;b=x2-x1.点到直线的距离:distance=

8、a*x0-b*y0+c

9、/sqrt(a*a+b*b)设directionX,directionY分别为从(x1,y1)==>(x2,y2)的单位变化量(+/-1)当直线偏向X轴时,当前象素为(xk,yk),下一个象素可能为:(xk+directionX,yk)或者(xk+directionX,yk+directionY)这两点到直线的距离分别为:            d1=

10、a*xk+b*yk+c+a*directionX

11、

12、/sqrt(a*a+b*b);            d2=

13、a*xk+b*yk+c+a*directionX+b*directonY

14、/sqrt(a*a+b*b);便于运算,定义:f(xk,yk)=d2*d2-d1*d117(将d1和d2的分母去掉了的)                       =b*b+*b*directonY*(a*xk+b*yk+c+a*directionX);当f(xk,yk)<0的时候,下一个点为(xk+directionX,yk+directionY):f(xk+directionX,yk+directionY)=f(xk,y

15、k)+2*b*b+2*a*b*directionX*directionY;当f(xk,yk)>=0的时候,下一个点为(xk+directionX,yk):f(xk+directionX,yk)=f(xk,yk)+2*a*b*directionX*directionY;当直线偏向Y轴时,当前象素为(xk,yk),下一个象素可能为:(xk,yk+directionY)或者(xk+directionX,yk+directionY)这两点到直线的距离分别为:d1=

16、a*xk+b*yk+c+b*directionY

17、/sqrt(a*a+b*b);d2=

18、a*xk+b*yk

19、+c+b*directionY+a*directonX

20、/sqrt(a*a+b*b);便于运算,定义:f(xk,yk)=d2*d2-d1*d1(将d1和d2的分母去掉了的)                       =a*a+*a*directonX*(a*xk+b*yk+c+b*directionY);当f(xk,yk)<0的时候,下一个点为(xk+directionX,yk+directionY):f(xk+directionX,yk+directionY)=f(xk,yk)+2*a*a+2*a*b*directionX*directionY;当f(xk,

21、yk)>=0的时候,下一个点为(xk+directionX,yk):f(xk+directionX,yk)=f(xk,yk)+2*a*b*directionX*directionY;1.3截图171.中点画圆2.1基本原理:对于圆上的点,F(x,y)=0;对于圆外的点,F(x,y)>0;而对于圆内的点,F(x,y)<0。假设M是P1和P2的中点,即M=(xp+1,yp-0.5)。那么,当F(M)<0时,M在圆内,这说明P1距离圆弧更近,应取P1作为下一像素。而当F(M)>0时,P2离圆弧更近,应取P2。当F(M)=0时,在P1与P2之中随便取一个即可,我们约定取

22、P2。与中点画线法一样,

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

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

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