Liang-Barsky算法

Posted cnblog-wuran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Liang-Barsky算法相关的知识,希望对你有一定的参考价值。

 

Liang-Barsky算法

在Cohen-Sutherland算法提出后,梁友栋和Barsky又针对标准矩形窗口提出了更快的Liang-Barsky直线段裁剪算法。

梁算法的主要思想:

(1)用参数方程表示一条直线

技术分享图片

技术分享图片

(2)把被裁剪的红色直线段看 成是一条有方向的线段,把窗口 的四条边分成两类:

入边和出边

技术分享图片

 

裁剪结果的线段起点是直线和两条入边的交点以及始端点三 个点里最前面的一个点,即参数u最大的那个点;

裁剪线段的终点是和两条出边的交点以及端点最后面的一个 点,取参数u最小的那个点。

技术分享图片

值得注意的是,当u从-∞到+∞遍历直线时,首先对裁剪窗口的两条边界直线(下边和左边)从外面向里面移动,

再对裁 剪窗口两条边界直线(上边和右边)从里面向外面移动。

 

如果用u1,u2分别表示 线段(u1≤u2)可见部分的开始和结束

技术分享图片

技术分享图片

Liang-Barsky算法的基本出发点是直线的参数方程

技术分享图片技术分享图片

技术分享图片

技术分享图片

 

 技术分享图片

(1)分析Pk=0的情况

如果还满足qk<0

则线段完全在边界外,应舍 弃该线段

技术分享图片

如果qk≥0

则进一步判断

技术分享图片

(2)当pk≠0时:

当pk<0时

线段从裁剪边界延长线的外部 延伸到内部,是入边交点

当pk > 0时

线段从裁剪边界延长线的内部 延伸到外部,是出边交点

线段和窗口边界一共有四个交点,根据pk的符号,就知道 哪两个是入交点,哪两个是出交点

当p k < 0时:对应入边交点

当p k > 0时:对应出边交点

一共四个u值,再加上u=0、u=1两个端点值,总共六个值

把pk<0的两个u值和0比较去找最大的,把pk>0的两个u值 和1比较去找最小的,这样就得到两个端点的参数值

技术分享图片

 

 技术分享图片

 

以上是关于Liang-Barsky算法的主要内容,如果未能解决你的问题,请参考以下文章

[计算机图形学 with OpenGL] Chapter8 习题8.12 NLN二维线段裁剪算法实现

opengl中剪裁的原理

算法都有哪些分类

Java 虚拟机原理垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )

Java 虚拟机原理垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )

页面置换算法(最佳置换算法FIFO置换算法LRU置换算法LFU置换算法)