简介:
在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 <