1 / 9
文档名称:

图形学课程设计--直线快速剪裁算法.doc

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

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

分享

预览

图形学课程设计--直线快速剪裁算法.doc

上传人:zl201163zl 2017/12/23 文件大小:78 KB

下载得到文件列表

图形学课程设计--直线快速剪裁算法.doc

相关文档

文档介绍

文档介绍:图形学课程设计
直线快速剪裁算法

学院:计算机科学与技术学院
专业:计算机
班级:07-2
姓名:XXX
学号:3**********


直线快速剪裁
设计方案:
需求分析: 在屏幕中显示一个矩形窗口,在窗口口内能对屏幕上任一直线进行剪裁。
功能说明:
屏幕中显示矩形窗口。
点击鼠标左键绘制任一直线。
通过键盘按键实现裁剪。
在窗口中输出裁剪后的直线段。
(3)设计效果:
(a)直线剪裁前
(b)直线剪裁后
:
(1)绘制边界坐标为(xmin,ymin),(xmax,ymax)的窗口,绘制两端点坐标系分别为pt0(x0,y0),pt1(x1,y1)的直线。
(2)pt0的编码为code0,pt1的编码为code1。
(3)若code0|code1=0,对直线段应“简取”之,转步骤(6);否则,若code0&code1不等于0,对直线段可“简弃”之,转步骤(6)。
(4)当上述两条件均能不满足时,确保pt0在窗口外部。若pt0在窗口内,则交换pt0和pt1的坐标值和编码值。
(5)按左,右,下,上的顺序求出窗口边界与直线的交点p,并将该点的坐标值和编码值赋给pt0,转步骤(3)。
(6)输出裁剪后的直线段。
:
:
#include <GL/>
#include <>
#define LEFT_EDGE 1 //代表0001
#define RIGHT_EDGE 2 //代表0010
#define BOTTOM_EDGE 4 //代表0100
#define TOP_EDGE 8 //代表1000
bool bInput, accept, bDraw;
struct Rectangle
{ float xmin,xmax,ymin,ymax;
};
Rectangle rect;
struct Point { int x, y;};
Point pt[2];
void LineGL(Point pt0, Point pt1)
{ glBegin (GL_LINES);
glColor3f (, , ); glVertex2f (,);
glColor3f (, , ); glVertex2f (,);
glEnd ();
}
void PointGL(Point pt)
{ glPointSize(2);
glBegin (GL_POINTS);
glColor3f (, , ); glVertex2f (,);
glEnd ();
}
pCode(Point pt,Rectangle rect)
{ int code=0x00;
if(<)
code=code|BOTTOM_EDGE;
if(>)
code=code|TOP_EDGE;
if(>)
code=code|RIGHT_EDGE;
if(<