ap1×ab与ap2×ab的结果异号,则表示两点在线段两侧;同号则表示在线段同侧
有一个点在线段上或两个点都在线段上,当做在线段同侧处理
//两点是否在线段同侧 public static bool IsTwoPointSameSideOfSegment(Vector2 a, Vector2 b, Vector2 p1, Vector2 p2) { var a_p1 = p1 - a; var ab = b - a; float cross1 = a_p1.x * ab.y - a_p1.y * ab.x; if (Mathf.Approximately(cross1, 0)) //p1与线段ab共线 return true; var a_p2 = p2 - a; float cross2 = a_p2.x * ab.y - a_p2.y * ab.x; if (Mathf.Approximately(cross2, 0)) //p2与线段ab共线 return true; var result = cross1 * cross2; return result > 0; //叉乘结果同符号, 则表示同侧 }
参考
【Computer Graphics】点到三角形距离及内外判断_点到三角形的距离-CSDN博客
标签:p2,同侧,ab,线段,p1,Vector2,向量 From: https://www.cnblogs.com/sailJs/p/17811134.html