Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }