// 多边形是否包含点 public bool contains(Vector2 point) { int n = vertices.Count; if (n < 3) { return(false); } // 先计算出内部的方向 int innerSide = SAT.whitchSide(vertices[0], vertices[1], vertices[2]); // 通过判断点是否均在三条边的内侧,来判定单形体是否包含点 for (int i = 0; i < n; ++i) { int iNext = (i + 1) % n; int side = SAT.whitchSide(vertices[i], vertices[iNext], point); if (side * innerSide < 0) // 在外部 { return(false); } } return(true); }