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

本文介绍了作者在项目中实现Cohen-Sutherland裁剪算法的过程,主要适用于计算机图形学中的二维图形裁剪。算法原理简单,常见于相关教材。文章附有裁剪前后的图形效果展示。
摘要由CSDN通过智能技术生成

最近几天由于项目关系,接触到裁剪算法,今天算是真正把它其中一种最简单的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 (y<wymin)
		code = code | 4;
	if (y>wymax)
		code = code | 8;
	if (x>wxmax)
		code = code | 2;
	if (x<wxmin)
		code = code | 1;
	return code;
}
void cohensutherlandlineclip()
{
	vertex p1,p2;
	int accept
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值