1 / 10
文档名称:

计算机图形学论文(4).doc

格式:doc   大小:354KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机图形学论文(4).doc

上传人:sssmppp 2020/3/21 文件大小:354 KB

下载得到文件列表

计算机图形学论文(4).doc

文档介绍

文档介绍:西北农林科技大学实验报告称名程名院学姓课专业年级:学号:计算机图形学 报告日期::1) 加深肓线段的剪裁算法的理解。2) 熟练掌握一种裁剪算法的编程方法。2・实验内容:1) 在编码算法、屮点分割算法、Liang-Barsky算法三种屮任选一种作为编程模型。2) 编写肓线段裁剪的源程序。3) 建议有能力的学生编写多边形裁剪程序。4) 在计算机上编辑编译运行,实现直线段的裁剪。:直线和窗口的关系如图1・23所示,可以分为如下3类:(1) 整条直线在窗口内。此时,不需剪裁,显示整条頁线。(2) 整条宜线在窗口外,此时,不需剪裁,不显示報条育•线。(3) 部分育线在窗口内,部分直线在窗口外。此时,需要求出直线与窗框的交点,并将窗口外的直线部分剪裁掉,显示窗口内的肓线部分。直线剪裁算法有两个主要步骤。首先将不需剪裁的育线挑出,即删去在窗外的直线。然麻,对H余肓线,逐条与窗框求交点,并将窗口夕卜的部分删去。Cohen-Sutherland直线剪裁算法:以区域编码为基础,将窗口及其周围的8个方向以4bit的二进制数进行编码。如图1-24所示的编码方法将窗口及其邻域分为5个区域。(1) 内域:区域(0000)o(2) 上域:区域(1001,1000,1010)o(3) 下域:区域(0101,0100,0110)o左域:区域(1001,0001,0101)。1001100010100001()00000100**********图1-24窗口及其邻域的5个区域及与直线的关系右域:区域(1010,0010,01l())o当线段的两个端点的编码的逻辑“与”非零时,线段显然为不可见的。对某线段的两各端点的区号进行位与运算,可知这两个端点是否同在视区的上、下、左、右。算法的主要思想是,对每条育线,如凡巴利用以下步骤讲行判断:对St线两端点巴、Pz编码分别记为G(P加,ci,乩},C2(P2)={a2i加,C2,d?}其屮,4、5、%4取值范围为{1,0},炖{1,2}。如果则显示整条直线,取岀下一条直线,返冋步骤①;否则,进入步骤③。如果Ia\-a21=1»贝!I求直线与窗上边(y=yw-max)的交点,并删去交点以上部分。如果"1-仇1=1,lci-C2l=l,IdMkl,进行类似处理。返冋步骤①判断下一条宜线。2源程序%计算机图形学直线裁剪CS编码算法functionr=CSCutLine他P)%result%{闪=窗口坐标卩=直线两端点坐标 y=x/2W=[xwl,xwrzywbzywt] W=[3A7z2z6;P=[xl,yl,x2,y2] P=[0,0,16z8];%}%clear;clc;W=[3,7,2,6];P=[0,0,16,8];r=CSCutLine(WzP)xwl=W(1);xwr=W(2);ywb=W(3);ywt=W(4);xl=P(1);yl=P(2);x2=P(3);y2=P(4);% Rectangle=[xwl,xwr,ywb,ywt];k=0;Lines=[];%取出线段Pl=[xlzyl];P2=[x2,y2];PP=P1-P2;&计算斜率ifPP(1)==0k=inf;elsek=PP(2)/PP(1);endfinished=false;while(^finished)咎对点P