private static bool IntersectCircleFigure(List <Figure> figures, Circle investigateFigure) { foreach (var figure in figures) { if (figure.Equals(investigateFigure)) { continue; } if (figure is CornerFigure) { CornerFigure currentFigure = (CornerFigure)figure; if (IntersectCornerFigureWithCircle(currentFigure, investigateFigure)) { return(true); } } if (figure is Circle) { Circle currentFigure = (Circle)figure; if (IntersectCircleWithCircle(currentFigure, investigateFigure)) { return(true); } } } return(false); }
public static bool IntersectCornerFigureWithCornerFigure(CornerFigure cornerFigureOne, CornerFigure cornerFigureTwo) { for (int i = 0; i < cornerFigureOne.points.Count - 1; i++) { for (int j = 0; j < cornerFigureTwo.points.Count - 1; j++) { if (IntersectLine(cornerFigureOne.points[i], cornerFigureOne.points[i + 1], cornerFigureTwo.points[j], cornerFigureTwo.points[j + 1])) { return(true); } } } for (int i = 0; i < cornerFigureOne.points.Count - 1; i++) { if (IntersectLine(cornerFigureOne.points[i], cornerFigureOne.points[i + 1], cornerFigureTwo.points[cornerFigureTwo.points.Count - 1], cornerFigureTwo.points[0])) { return(true); } } for (int j = 0; j < cornerFigureTwo.points.Count - 1; j++) { if (IntersectLine(cornerFigureOne.points[cornerFigureOne.points.Count - 1], cornerFigureOne.points[0], cornerFigureTwo.points[j], cornerFigureTwo.points[j + 1])) { return(true); } } if (IntersectLine(cornerFigureOne.points[cornerFigureOne.points.Count - 1], cornerFigureOne.points[0], cornerFigureTwo.points[cornerFigureTwo.points.Count - 1], cornerFigureTwo.points[0])) { return(true); } return(false); }
public static bool IntersectCornerFigureWithCircle(CornerFigure cornerFigure, Circle circleFigure) { double numberOne, numberTwo; int h; Point p1, p2; // Чи знаходиться вершина в колі foreach (var point in cornerFigure.points) { if (circleFigure.IsPointBelongFigure(point)) { return(true); } } // Чи перетинає пряма коло по двом точкам for (int i = 0; i < cornerFigure.points.Count - 1; i++) { p1 = cornerFigure.points[i]; p2 = cornerFigure.points[i + 1]; if (CommonSectionCircle(p1, p2, circleFigure)) { return(true); } } p1 = cornerFigure.points[cornerFigure.points.Count - 1]; // B p2 = cornerFigure.points[0]; // C if (CommonSectionCircle(p1, p2, circleFigure)) { return(true); } return(false); }