光栅图形学(三)——梁友栋-Barskey剪裁算法

本文介绍了Liang-Barskey直线剪裁算法,通过问题转换将直线与窗口的关系转化为不等式,然后利用算法过程进行剪裁。算法包括输入直线和窗口坐标,判断直线是否在窗口内,并提供了Python代码实现。
摘要由CSDN通过智能技术生成

光栅图形学(三)——梁友栋-Barskey剪裁算法

一、问题转换

  • 直线的参数方程
    x = x 1 + u ( x 2 − x 1 ) y = y 1 + u ( y 2 − y 1 ) \begin{aligned} &x = x_1+u(x_2-x_1) \\ &y=y_1+ u(y_2-y_1) \end{aligned} x=x1+u(x2x1)y=y1+u(y2y1)
    其中 0 ≤ u ≤ 1 0\le u \le 1 0u1。对于直线上的一点 ( x , y ) (x,y) (x,y),若它在窗口内则有
    w x l ≤ x 1 + u ( x 2 − x 1 ) ≤ w x r w x b ≤ y 1 + u ( y 2 − y 1 ) ≤ w y t \begin{aligned} &wxl \le x_1+u(x_2-x_1)\le wxr \\ &wxb \le y_1+u(y_2-y_1) \le wyt \end{aligned} wxlx1+u(x2x1)wxrwxby1+u(y2y1)wyt
  • 条件方程转换
    u ( x 1 − x 2 ) ≤ x 1 − w x l p 1 = − ( x 2 − x 1 ) q 1 = x 1 − w x l u ( x 2 − x 1 ) ≤ w x r − x 1 p 2 = x 2 − x 1 q 2 = w x r − x 1 u ( y 1 − y 2 ) ≤ y 1 − w y b p 3 = − ( y 2 − y 1 ) q 3 = y 1 − w y b u ( y 2 − y 1 ) ≤ w y t − y 1 p 4 = y 2 − y 1 q 4 = w y t − y 1 \begin{aligned} &u(x_1-x_2) \le x_1 - wxl \quad p_1 = -(x_2-x_1) \quad q_1=x_1-wxl\\ &u(x_2-x_1) \le wxr - x_1 \quad p_2 = x_2 - x_1 \quad q_2 = wxr - x_1 \\ &u(y_1 - y_2) \le y_1 - wyb \quad p_3=-(y_2-y_1) \quad q_3 = y_1 - wyb \\ &u(y_2 - y_1)
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值