private Polygon(string name, int edges, bool isPolygon, int fold, bool isEven) { Name = name; Edges = edges; Fold = fold; IsEven = isEven; IsPolygon = isPolygon; if (isPolygon) { AngleOf = new IndexToAngleDelegate(AngleOnLine); IndexOf = new AngleOnRoundToIndexDelegate(IndexOnLine); } else { AngleOf = new IndexToAngleDelegate(AngleOnArc); IndexOf = new AngleOnRoundToIndexDelegate(IndexOnArc); } Vertices = new Dictionary <int, Angle>(); double sectorDegrees = 360.0 / Edges; Sector = new Angle(sectorDegrees); List <double> concerned = new List <double>(DueDirections); for (int i = 0; i <= Edges; i++) { double vertexDegree = FirstVertexDegree + i * sectorDegrees; //if (vertexDegree > 360) // continue; Vertices.Add(i, new Angle(vertexDegree)); if (!concerned.Contains(vertexDegree)) { concerned.Add(vertexDegree); } } Outstandings = Aspects.GetAspectsDictionary(concerned); }