码迷,mamicode.com
首页 > 编程语言 > 详细

计算机图形学 - 线段裁剪 - Liang Barsky算法(梁友栋算法)

时间:2016-01-10 18:37:24      阅读:1215      评论:0      收藏:0      [点我收藏+]

标签:

算法描述:

  Liang_Barsky算法的基本出发点是直线的参数方程。给出任意一条直线段,两端点分别为技术分享技术分享,令技术分享技术分享 则直线的参数方程为:
  技术分享
  如果直线上任意一点位于窗口内,则必须满足下列关系式:
  技术分享
  上述不等式可以表示为:
  技术分享
其中p和q定义为:

  技术分享

  任何一条直线如果平行于某一条裁剪边界,则有技术分享,下标k 对应于直线段平行的窗口边界(技术分享,并且分别表示裁剪窗口的左、右、下、上边界)。如果对于某一个k值,满足技术分享,那么直线完全在窗口的外面,可以抛弃。如果技术分享,则该直线在它所平行的窗口边界的内部,还需要进一步计算才能确定直线是否在窗口内、外或相交。当技术分享时,表示直线是从裁剪边界的外部延伸到内部,如果技术分享,则表示直线是从裁剪边界的内部延伸到外部的。对于pk≠0,可以利用式 计算出直线与边界k的交点的参数u。
对于每一条直线,可以计算出直线位于裁剪窗口内线段的参数值技术分享技术分享
技术分享的值是由那些使得直线是从外部延伸到内部的窗口边界决定。
  对于这些边,计算技术分享技术分享值取技术分享以及0构成的集合中的最大值。
  技术分享的值是由那些使得直线是从内部延伸到外部的窗口边界决定的。
  计算出技术分享技术分享技术分享和1构成的集合中的最小值。如果技术分享技术分享,这条直线完全在窗口的外面,可以简单抛弃,否则根据参数u的两个值,计算出裁剪后线段的端点。

 

详细代码:Computer Graphics - code_1

 

生成结果:

技术分享

计算机图形学 - 线段裁剪 - Liang Barsky算法(梁友栋算法)

标签:

原文地址:http://www.cnblogs.com/xd-g/p/5118764.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!