/// <summary> /// 2个线段是否相交(已验证) /// 有线段AB和线段CB /// 用线段AB的方向和C,D两点分别做差乘比较。如果C,D在同侧则return跳出 /// 用线段CD的方向和A,B两点分别做差乘比较。如果A,B在同侧则return跳出 /// 最终返回相交 /// </summary> public static bool IsSegmentIntersection2(Vector3 a, Vector3 b, Vector3 c, Vector3 d) { var crossA = Mathf.Sign(Vector3.Cross(d - c, a - c).y); var crossB = Mathf.Sign(Vector3.Cross(d - c, b - c).y); if (Mathf.Approximately(crossA, crossB)) return false; var crossC = Mathf.Sign(Vector3.Cross(b - a, c - a).y); var crossD = Mathf.Sign(Vector3.Cross(b - a, d - a).y); if (Mathf.Approximately(crossC, crossD)) return false; return true; }
两线段相交
最新推荐文章于 2023-07-20 22:06:28 发布