您的位置:首页 > 其它

地理信息系统基础算法(二)判断两线段是否相交

2015-11-29 20:47 351 查看
算法描述



2. 代码实现

/// <summary>
/// 判断线段ab与线段cd是否相交,如果相交返回ture
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="c"></param>
/// <param name="d"></param>
/// <returns></returns>
public static bool IsIntersection(Point a,Point  b,Point c,Point d)
{
//AB = A + r(B-A), r 在[0,1]
//CD = C + t(D-C),s 在[0,1]
double r, s;
double deno = (b.X - a.X) * (d.Y - c.Y) - (b.Y - a.Y) * (d.X - c.X);
double mem1 = (a.Y - c.Y) * (d.X - c.X) - (a.X - c.X) * (d.Y - c.Y);
double mem2 = (a.Y - c.Y) * (b.X - a.X) - (a.X - c.X) * (b.Y - a.Y);
r = mem1 / deno;
s = mem2 / deno;
if (r > 1 || r < 0)
return false;
if (s > 1 || s < 0)
return false;

return true;
}


参考资料:地理信息系统算法基础_张宏p24-25
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: