好的,这是一个判断两个线段是否相交的程序:
``` #include <stdio.h> #include <math.h>
// 定义点结构体 typedef struct Point { double x; double y; } Point;
// 定义线段结构体 typedef struct LineSegment { Point start; Point end; } LineSegment;
// 计算线段所在直线的斜率和截距 void calcLineEquation(LineSegment ls, double* k, double* b) { *k = (ls.end.y - ls.start.y) / (ls.end.x - ls.start.x); *b = ls.start.y - (*k) * ls.start.x; }
// 判断两条线段是否相交 int isIntersect(LineSegment ls1, LineSegment ls2) { double k1, b1, k2, b2; calcLineEquation(ls1, &k1, &b1); calcLineEquation(ls2, &k2, &b2);
// 两条线段在同一直线上if (fabs(k1 - k2) < 1e-8)
{
// 线段2在线段1的两侧
if ((ls2.start.x <