实验四4梁友栋.doc

实验四4梁友栋.doc

ID:51833224

大小:638.00 KB

页数:10页

时间:2020-03-16

实验四4梁友栋.doc_第1页
实验四4梁友栋.doc_第2页
实验四4梁友栋.doc_第3页
实验四4梁友栋.doc_第4页
实验四4梁友栋.doc_第5页
资源描述:

《实验四4梁友栋.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机图形学实验报告实验[四]:梁友栋-Barsky直线裁剪算法学生:杨双涛学号:201206090130班级:网络121班实验时间:2014.11.27学院:电气与信息工程学院梁友栋-Barsky直线裁剪算法1.实验目的1、深入理解Liang-Barsky裁剪算法的原理;2、学会使用Liang-Barsky裁剪算法实现对直线段以及多边形的裁剪函数;3、比较Liang-Barsky裁剪算法与Cohen-Sutherland裁剪算法的区别,并动手实现两种算法,体会Liang-Barsky裁剪算法的

2、优势;4、掌握Liang-Barsky裁剪算法的裁剪原理,在理解的基础上动手完成实验任务。2、实验环境VisualC++6.03、实验原理梁友栋与Barsky提出了比Cohen-Sutherland裁剪算法速度更快的直线段裁剪算法。该算法是以直线的参数方程为基础设计的,把判断直线段与窗口边界求交的二维裁剪问题转化为求解一组不等式,确定直线段参数的一维裁剪问题。Liang-Barsky裁剪算法把直线段与窗口的相互位置关系划分为两种情况进行讨论:平行于窗口边界的直线段与不平行与窗口边界的直线段。设起

3、点为P0(x0,y0),终点坐标为P1(x1,y1)的直线段参数方程为:P=P0+t(P1-P0)展开形式为:X=x0+t(x1-x0)Y=y0+t(y1-y0)式中,0≤t≤1。对于对角点(Wxl,Wyt)、(Wxr,Wyb)的矩形裁剪窗口,直线段裁剪条件如下:Wxl≤x0+t(x1-x0)≤WxrWyt≤y0+t(y1-y0)≤Wyb分解后有:t(x0-x1)≤x0-Wxlt(x1-x0)≤Wxr-x0t(y0-y1)≤y0-Wybt(y1-y0)≤Wyt-y0将△x=x1-x0,△y=y1

4、-y0代入上式得到:t*(-△x)≤x0-Wxlt*△x≤Wxr-x0t*(-△y)≤y0-Wybt*△y≤Wyt-y0令:u1=-△x,v1=x0-Wxlu2=△x,v2=Wxr-x0u3=-△y,v3=y0-Wybu4=△y,v4=Wyt-y0则统一表示为:t*Un≤Vn,n=1,2,3,4N代表直线段裁剪时,窗口的边界顺序,n=1表示左边界;n=2表示右边界;n=3表示下边界;n=4表示上边界。上式给出了直线段的参数方程裁剪条件。4.实验内容绘制一个裁剪框,在裁剪框内绘制直线,点击裁剪,实

5、现对直线的裁剪。5.源程序清单//TestView.cpp:implementationoftheCTestViewclass//#include"stdafx.h"#include"Test.h"#include"TestDoc.h"#include"TestView.h"#defineROUND(a)int(a+0.5)//四舍五入#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#end

6、if///////////////////////////////////////////////////////////////////////////////CTestViewIMPLEMENT_DYNCREATE(CTestView,CView)BEGIN_MESSAGE_MAP(CTestView,CView)//{{AFX_MSG_MAP(CTestView)ON_COMMAND(ID_MENUDrawLine,OnMENUDrawLine)ON_COMMAND(ID_MENUClip

7、,OnMENUClip)ON_WM_LBUTTONDOWN()ON_WM_MOUSEMOVE()//}}AFX_MSG_MAP//StandardprintingcommandsON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview)END_MES

8、SAGE_MAP()///////////////////////////////////////////////////////////////////////////////CTestViewconstruction/destructionCTestView::CTestView(){//TODO:addconstructioncodehere//窗口位置坐标wxl=250;wxr=850;wyb=250;wyt=450;m_Attatch=FALSE;m_i=0;m_Draw=FALSE;

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

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

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