计算线段或直线与线段的交点

1. 使用矢量叉乘积判断线段与线段(或直线)是否相交。如果结果是相交,那么在后面就可以将线段全部看做直线来考虑。

2.两条线段共线情况需要单独考虑。

3.使用直线或线段方程计算,可以把方程式改为ax + by + c = 0。

 

设一条线段为L0 = P1P2,另一条线段或直线为L1 = Q1Q2:(步骤4和步骤5与步骤2、步骤3相似,只是横纵方向不同)

第一步:判断L0和L1是否相交,如果没有相交就没有交点,否则L0,L1一定有交点,下面就可以看做直线来考虑。

第二步:若P1和P2的横坐标相同,即L0平行于y轴:

1. 若L1也平行于y轴,则L0L1共线或平行。(P1和Q1横坐标相同共线,不相同平行)

2. 交点横坐标为P1或P2横坐标,带入L1方程求出纵坐标。

第三步:若P1P2横坐标不同,但是Q1Q2的横坐标相同,即L1平行于y轴,则交点横坐标为Q的横坐标,带入到L0的直线方程中即可计算交点纵坐标。

第四步:如果P1P2纵坐标相同,即L0平行于x轴:

1. 若L1也平行于x轴,则L0L1平行或共线。

2. 交点纵坐标P1或P2的纵坐标,带入L1方程式求出交点横坐标。

第五步:如P1P2的纵坐标不同,但是Q1Q2的纵坐标相同,即L1平行于x,则交点纵坐标为Q1的纵坐标,带入L0直线方程计算交点横坐标。

第六步:剩下步骤为L0L1斜率均不为0的情况。

1.计算L0斜率K0,L1斜率K1。

2. 若K0=K1, 若Q1在L0上,则L0L1共线,如果不在L0上则平行。

3. 联立两直线的方程组可以解出交点。

 

转载于:https://my.oschina.net/1024bits/blog/783288

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值