Пример #1
0
 private void DefineTriangles()
 {
     TriangleManager.Triangles = new List <Triangle>();
     NodManager.Noduri         = new List <Nod>();
     DrumManager.Drumuri       = new List <Drum>();
     foreach (var s in SegmentsManager.Segments)
     {
         var listFirstSegments  = SegmentsManager.GetSegmentsThatContainsASpecificPoint(s.A);
         var listSecondSegments = SegmentsManager.GetSegmentsThatContainsASpecificPoint(s.B);
         listFirstSegments.Remove(s);
         listSecondSegments.Remove(s);
         for (var i = 0; i < listFirstSegments.Count; i++)
         {
             var a = listFirstSegments[i].GetTheOtherPoint(s.A);
             for (var j = 0; j < listSecondSegments.Count; j++)
             {
                 var b = listSecondSegments[j].GetTheOtherPoint(s.B);
                 if (a.Equals(b))
                 {
                     var t = new Triangle(s.A, s.B, a);
                     if (!TriangleManager.CheckIfPointIsInsideTriangle(t) && !PolygonManager.CheckIfTriangleIsAShape(t))
                     {
                         if (TriangleManager.Triangles.Count > 0)
                         {
                             if (!TriangleManager.CheckIfTriangleAlreadyExists(t))
                             {
                                 TriangleManager.Triangles.Add(t);
                             }
                         }
                         else
                         {
                             TriangleManager.Triangles.Add(t);
                         }
                     }
                 }
             }
         }
     }
     foreach (var p in TriangleManager.Triangles.Select(tr => tr.GetGravityCenter()))
     {
         var n = new Nod(Id, p);
         if (NodManager.Noduri.Count > 0)
         {
             if (!NodManager.CheckIfNodExists(n))
             {
                 _g.FillEllipse(new SolidBrush(Color.Blue), p.X - 6, p.Y - 6, 12, 12);
                 NodManager.Noduri.Add(n);
                 Id++;
             }
         }
         else
         {
             _g.FillEllipse(new SolidBrush(Color.Blue), p.X - 6, p.Y - 6, 12, 12);
             NodManager.Noduri.Add(n);
             Id++;
         }
     }
 }
Пример #2
0
        public static bool CanDraw(Point p, Point x)
        {
            var ls = SegmentsManager.GetSegmentsThatContainsASpecificPoint(p);
            var p1 = ls[0].GetTheOtherPoint(p);
            var p2 = ls[1].GetTheOtherPoint(p);
            var tr = new Triangle(p, p1, p2);

            if (TriangleManager.CheckIfAPointIsInsideATriangle(x, tr))
            {
                return(false);
            }
            return(true);
        }