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++; } } }
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); }