Cohen-Sutherland裁剪算法的简单实现

最近几天由于项目关系,接触到裁剪算法,今天算是真正把它其中一种最简单的Cohen-Sutherland实现了一下,算法原理很简单,我不想多讲,任何一本计算机图形学的书应该都会有涉及到该裁剪算法,我的参考书是《计算机图形学》(OpenGL版,第3版,清华大学出版社)下面直接把代码贴出来吧。

#define LEFT_EDGE 1  
#define RIGHT_EDGE 2  
#define BOTTOM_EDGE 4  
#define TOP_EDGE 8  

 struct vertex
 {
	 float x;
	 float y;
 };
vertex CP;
float wxmax = 1.0, wxmin = -1.0, wymax = 1.0, wymin = -1.0;
void MoveTo(GLfloat x, GLfloat y)
{
    CP.x = x; CP.y = y;
}
void LineTo(GLfloat x, GLfloat y)
{
	glBegin(GL_LINES);
	  glVertex2f(CP.x, CP.y);
	  glVertex2f(x, y);
	glEnd();
	glFlush();
}
int CompCode(GLfloat x, GLfloat y)//位置编码,原理上有9个位置,其实只要5个就可以了
{
	int code = 0x00;  //此处是二进制  
	if (ywymax)
		code = code | 8;
	if (x>wxmax)
		code = code | 2;
	if (x

裁剪效果
裁之前:
Cohen-Sutherland裁剪算法的简单实现_第1张图片

裁之后:
Cohen-Sutherland裁剪算法的简单实现_第2张图片

你可能感兴趣的:(计算机图形学,OpenGL)