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