Advertisement

Cohen-Sutherland线段裁剪算法

阅读量:

【将整个屏幕通过一个矩形裁剪区域划分为九个部分,并为每个部分分配对应的区域编码,随后依据端点所处的位置来确定其对应的区域编码。

首先判断线段是否可以被完全接受或彻底排除,若上述两种情况无法直接判断,则逐步进行裁剪操作。选取位于裁剪区域外部的一个端点,将其区域编码与裁剪边界的区域编码进行逻辑与运算,若运算结果为真,则说明该端点处于裁剪边界之外。此时应将该端点移动至线段与该边界的交点位置,重复此过程直至完成全部裁剪操作。

代码结构基本沿用书籍中的实现方式,并添加了一些个人注释。

#include <Windows.h> #include <gl/glut.h> // //区域码 const GLint leftBitCode=0x1; const GLint rightBitCode=0x2; const GLint buttonBitCode=0x4; const GLint topBitCode=0x8; GLint winWidth=640,winHeight=480; class screenPT { public: GLfloat x,y; }; inline GLint inside(GLint code){return GLint(!code);} //判断点是否在裁剪区域内 inline GLint reject(GLint code1,GLint code2){

全部评论 (0)

还没有任何评论哟~