// 多边形是否包含点 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); }
void Update() { if (!inputData.colliderA || !inputData.colliderB) { return; } lineTool.BeginDraw(); UpdateSelection(); UpdateShape(); isCollision = SAT.queryCollision(shapes[0], shapes[1]); DrawAxis(); DrawShapes(); lineTool.EndDraw(); }