static bool IsTouch(Cricle c, int x1,int y1,int x2,int y2) { var LL = SquareDis(x1, y1, x2, y2); var rr = c.R * c.R; var K = SquareDis(c.xc, c.yc, x2, y2) + SquareDis(x1, y1,c.xc, c.yc) - 2 * rr; if (2 * K - LL < 0 || K > LL) { return false; } else { return true; } }
static string IsCross(Cricle c,Triangle t) { var d1 = SquareDis(c.xc, c.yc, t.GetPointX(0), t.GetPointY(0)); var d2 = SquareDis(c.xc, c.yc, t.GetPointX(1), t.GetPointY(1)); var d3 = SquareDis(c.xc, c.yc, t.GetPointX(2), t.GetPointY(2)); var RSquare = c.R * c.R; if ((d1 < RSquare && d2 < RSquare && d3 < RSquare) ) { return "NO"; } else if ((d1 > RSquare && d2 > RSquare && d3 > RSquare)) { if (IsTouch(c, t.GetPointX(0), t.GetPointY(0), t.GetPointX(1), t.GetPointY(1))|| IsTouch(c, t.GetPointX(0), t.GetPointY(0), t.GetPointX(2), t.GetPointY(2))|| IsTouch(c, t.GetPointX(2), t.GetPointY(2), t.GetPointX(1), t.GetPointY(1))) return "YES"; return "NO"; } else { return "YES"; } }