《计算机图形学》实验四:裁剪

本博客计算机图形学系列文章索引:

地址:《计算机图形学系列相关文章索引(持续更新)》


参考教材:《计算机图形学》 机械工业出版社 ,徐文鹏主编

实验内容:利用Cohen-Sutherland编码裁剪算法,用矩形框裁剪直线。

实验代码如下(已调试过):

#include 
#include 
#include 

#pragma comment( lib, "opengl32.lib" )  
#pragma comment( lib, "glu32.lib" )    
#pragma comment( lib, "glut32.lib" )  

#define LEFT_EDGE 1
#define RIGHT_EDGE 2
#define BOTTOM_EDGE 4
#define TOP_EDGE 8
static int times=1;

//画从(x0,y0)到(x1,y1)的直线
void LineGL(int x0,int y0,int x1,int y1)
{
	glBegin(GL_LINES);
	glColor3f(1.0f,0.0f,0.0f);
	glVertex2f(x0,y0);
	glColor3f(0.0f,1.0f,0.0f);
	glVertex2f(x1,y1);
	glEnd();
}

//矩形的结构体
typedef struct Rectangle
{
	float xmin;
	float xmax;
	float ymin;
	float ymax;
} Rectan;

Rectan rect;
int x0,y0,x1,y1;

//求出坐标点的Cohen-Sutherland编码
int CompCode(int x,int y,Rectan rect)
{
	int code = 0x00;
	if (y < rect.ymin)
	{
		code=code | 4;
	}

	if (y>rect.ymax)
	{
		code = code | 8;
	}
	
	if (x>rect.xmax)
	{
		code= code | 2;
	}

	if (x

实验结果(修改不同的(x0,y0)和(x1,y1)可得到):










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