GIS算法(一)直线或线段与线段相交求交点的算法(C语言)

简介:在GIS算法中我们最常用的算法计算,面和面是否相交,线段之间是否相交,今天我就分享一个直线或线段与线段相交并求其交点的算法。基本思路:如图:(请忽略我的作图水平) 1. 则先判断L0和L1是否相交,如图进行两次跨立实验 分别是q1q2和q1p2结果为temp1,q1q2和q1p1结果为temp2. 2. 根据temp1和temp2的值的正负,是否为0,进行考虑。i...
摘要由CSDN通过智能技术生成

简介:

在GIS算法中我们最常用的算法计算,面和面是否相交,线段之间是否相交,今天我就分享一个直线或线段与线段相交并求其交点的算法。

基本思路:

如图:(请忽略我的作图水平)
这里写图片描述
1. 则先判断L0和L1是否相交,如图进行两次跨立实验 分别是q1q2和q1p2结果为temp1,q1q2和q1p1结果为temp2.
2. 根据temp1和temp2的值的正负,是否为0,进行考虑。

if((temp1==0)&&(temp2!=0))//p1在q1q2方向
else if((temp1!=0)&&(temp2==0))//p2在q1q2方向
else if((temp1==0)&&(temp2==0))//p1p2在q1q2方向共线
else if(temp1*temp2>0)printf("线不相交无交点)");//p1p2在q1q2同一侧无交点
else if(temp1*temp2<0)//有交点且不共线,可将L0,L1都当成直线看了

3.最后考虑相交且不共线的情况,计算出直线方程,进行求解。
#完整代码:

#include<stdio.h>
#include<math.h>
typedef struct {
float x;
float <
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值