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

本文介绍了GIS算法中直线或线段相交的求解方法,包括判断相交和计算交点的步骤,详细阐述了基本思路,并提供了源码GitHub链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

在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 <
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值