梁友栋-Barsky算法是一种参数线裁剪算法。
为两个参数方程,为两点的差值,其中
的由来是整理参数方程中三角函数的值得出,因为取值需要在裁剪框内,所以u只需要取0~1范围内的就足够。
是结合四条边界线得出的组合方程,在参数方程中,得到u的值就可以得出最终的解,所以在上面式子中其他的量都可以抽象化,就可以得出他的
在这里p和q都是抽象表示,由于不等式是与四条边界线结合得出,所以p和q的具体定义则为:
用x边界线举例说明,如果是左边界线,p的末端点大于初始点,p的值为负,如果与左边界线有交点,则一定为从外到内的线,右侧则为从内到外。全部验证可以得出算法中的结论
为了求参数u的值,取u的边界条件:
对于从外侧到内侧的线中,u需要取各个值中最大值或是0值,为什么这么取呢?
参数方程中t表示与定点的长度,u的本质与t相同,所以u相当于对于初始点的距离值,那么就容易得出,距离初始点最远的值应当是搭在了裁剪窗口边上。也就是u的最大值
从内到外则同理,所以取u的最小值。
有了u值之后,就可以在参数方程中求出交点坐标,可以取得裁剪线。