计算机图形学c实验指导五.doc实验五课程名称:计算机图形学 实验名称:裁剪和曲线实验日期:XX—XX—XX班级:XXXXXX 姓名:XXXX学号XXXX 仪器编号:XX一、 实验目的和要求1、 掌握直线段的裁剪算法;2、 掌握Hermite|W线生成算法;二、 实验内容1、下面的程序段在windows控制台下实现按住鼠标右键绘制一个矩形,按住鼠标左键,绘制直线段,并利用Cohen-Sutherland算法实现肓线裁剪。要求理解掌握下面程序的执行过程。同时把该程序修改成MFC框架形式。#include<>#include<cmath>#include<vector>usingstd::vector;classPt2D{public:GLfloatx,y;Pt2D()(};Pt2D(GLfloatxx,GLfloatyy){X=XX;y=yy;vector<Pt2D>vector1;vector<Pt2D>vector2;intMIN=0;intMAX=600;Pt2DstartP;Pt2DpreP;Pt2DboxA;Pt2DboxB;Pt2Dtemp1;Pt2Dtemp2;boolbuttonFlag=true;〃以下是Cohen-Sutherland线段裁剪算法的实现constGLintwinLeftBitCode=0x1;constGLintwinRightBitCode=0x2;constGLintwinBottomBitCode=0x4;constGLintwinTopBitCodc=0x&//区域码inlineGLintround(constGLfloata){returnGLint(a+);}inlineGLintinside(GLintcode){returnGLint(!code);}inlineGLintreject(GLintcodel,GLintcode2){returnGLint(code1&codc2);}ept(GLintcodel,GLintcode2){returnGLint(!(codelIcode2));}〃codc(Pt2Dpt)〃获得外部码{ode=0x00;if(<)code=codeIwinLeftBitCode;if(>)code=codeIwinRightBitCode;if(<)code=codeIwinBottomBitCode;if(>)code=codeIwinTopBitCode;returncode;}template<classType>voidswap(Type*X,Type*Y)〃交换数值的模板函数Typetemp;temp=*X;*X=*Y;*Y=temp;voidlineClip(Pt2Dpl,PODp2)〃裁剪算法{GLubytecodel,code2;booldone=false,plotLine=false;GLfloatm;while(!done)codc(pl);code2=encode(p2);GLintqq=accept(code1,code2);if(accept(code1,code2)){done=true;plotLine=true;}elseif(reject(code1,code2))
计算机图形学c实验指导五 来自淘豆网m.daumloan.com转载请标明出处.