实验:直线段的裁剪姓名:龙泽学号:20141090068指导教师:吴昊实验内容:采用Liang-Barsky算法对直线段进行裁剪
实验设计:本次实验采用的是Liang-Barsky算法,根据这个算法需先定义直线段的起点坐标(x1,y1),终点坐标(x2,y2),以及裁剪框(矩形)的左边界(wxl),右边界(wxr),上边界(wyt),下边界(wyb),如voidLine_Clipping(floatx1,floaty1,floatx2,floaty2,floatWxl,floatWxr,floatWyt,floatWyb),再结合鼠标mouse函数,实现点击鼠标左键显示矩形框和待裁剪的直线段,点击鼠标右键进行裁剪并显示裁剪过后的直线段,最终显示出来
由于在Line_Clipping函数下用到了line函数,所以我在上面定义了个line函数来绘制直线段(绘制直线段所采用的算法为Bresenham算法)
程序代码:#include#include//初始化OpenGL场景voidmyinit(void){glClearColor(1,1,1,0);//将背景置成白色glMatrixMode(GL_PROJECTION);gluOrtho2D(0,500,0,500);//设置投影变换,使用正交投影}voidsetPixel(intx,inty)//在指定位置(x,y)绘制点图元{glBegin(GL_POINTS);glVertex2i(x,y);//绘制点的坐标glEnd();}//绘制直线的方法voidline(intx1,inty1,intx2,inty2)//输入线段的两个端点坐标和画线颜色{intx,y,dx,dy,s1,s2,p,temp,interchange,i;x=x1;y=y1;//设置象素坐标初值dx=abs(x2-x1);dy=abs(y2-y1);//