示例#1
0
        /// <summary>
        /// Точка входа
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //Массив ссылок
            Figure[] Fig = new Figure[6];

            //заполнение массива ссылками на объекты поизводных классов
            Fig[0] = new Circle(7);
            Fig[1] = new Circle(2, 3, 2);
            Fig[2] = new Rectangle();
            Fig[3] = new Rectangle(2, 3, 10, 11);
            Fig[4] = new Triangle();
            Fig[5] = new Triangle(1, 1, -2, 4, -2, -2);

            //Сортируем
            Array.Sort(Fig);

            //Пока не весь массив заполнен ссылками, ловим исключение пустой ссылки 
            try
            {

                //Для каждого объекта 
                foreach (Figure item in Fig)
                {
                    //вызываем метод Show
                    item.Show();
                }
            }

            //ловим исключение
            catch (Exception e)
            {
                //выводим текст исключения
                Console.WriteLine(e.Message);
            }

            //Задерживаем консоль при отладке 
            Console.ReadKey();
        }
示例#2
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex == 0)
            {
                f = Tetrahedron();
            }
            else if (comboBox1.SelectedIndex == 1)
            {
                f = Hexahedron();
            }
            else if (comboBox1.SelectedIndex == 2)
            {
                f = Figure.Generate(((double x, double y) => { return(x * x - y * y); }), -20, -20, 0, 0, 10, 10);
            }
            else if (comboBox1.SelectedIndex == 3)
            {
                f = Figure.Generate(((double x, double y) => { return(x - y); }), -30, -30, 0, 0, 10, 10);
            }
            else if (comboBox1.SelectedIndex == 4)
            {
                Figure  figure = new Figure();
                Point3d p1     = new Point3d(-50, -50, 0);
                Point3d p4     = new Point3d(50, -50, 0);
                figure.Add(new Line(p1, p4));
                f = figure;
                int count;
                int.TryParse(textBox1.Text, out count);
                int axis = 0;
                if (radioButton5.Checked)
                {
                    axis = 1;
                }
                else if (radioButton6.Checked)
                {
                    axis = 2;
                }
                Figure fig = new Figure();
                var    lns = f.GetLines();
                for (int i = 0; i < lns.Count; i++)
                {
                    fig.Add(new Line(new Point3d(f.lines[i].start.x, f.lines[i].start.y, f.lines[i].start.z), new Point3d(f.lines[i].end.x, f.lines[i].end.y, f.lines[i].end.z)));
                }
                f = new Figure();
                for (int i = 0; i < count; i++)
                {
                    double angle = 360 / count;
                    angle = angle * Math.PI / 180;
                    if (axis == 0)
                    {
                        fig.RotateX(angle);
                    }
                    if (axis == 1)
                    {
                        fig.RotateY(angle);
                    }
                    if (axis == 2)
                    {
                        fig.RotateZ(angle);
                    }
                    var lines = fig.GetLines();
                    for (int j = 0; j < lines.Count; j++)
                    {
                        f.Add(new Line(new Point3d(fig.lines[j].start.x, fig.lines[j].start.y, fig.lines[j].start.z), new Point3d(fig.lines[j].end.x, fig.lines[j].end.y, fig.lines[j].end.z)));
                    }
                }
            }
            else if (comboBox1.SelectedIndex == 5)
            {
                Figure figure = new Figure();
                double px     = -5;
                double py     = Math.Cos(-5);
                for (double x = -5; x < 7; x += 0.1)
                {
                    double cx = x;
                    double cy = Math.Cos(cx);
                    figure.Add(new Line(new Point3d(20 * px, 20 * py - 50, 0), new Point3d(20 * cx, 20 * cy - 50, 0)));
                    px = cx;
                    py = cy;
                }
                f = figure;
                int count;
                int.TryParse(textBox1.Text, out count);
                int axis = 0;
                if (radioButton5.Checked)
                {
                    axis = 1;
                }
                else if (radioButton6.Checked)
                {
                    axis = 2;
                }
                Figure fig = new Figure();
                var    lns = f.GetLines();
                for (int i = 0; i < lns.Count; i++)
                {
                    fig.Add(new Line(new Point3d(f.lines[i].start.x, f.lines[i].start.y, f.lines[i].start.z), new Point3d(f.lines[i].end.x, f.lines[i].end.y, f.lines[i].end.z)));
                }
                f = new Figure();
                for (int i = 0; i < count; i++)
                {
                    double angle = 360 / count;
                    angle = angle * Math.PI / 180;
                    if (axis == 0)
                    {
                        fig.RotateX(angle);
                    }
                    if (axis == 1)
                    {
                        fig.RotateY(angle);
                    }
                    if (axis == 2)
                    {
                        fig.RotateZ(angle);
                    }
                    var lines = fig.GetLines();
                    for (int j = 0; j < lines.Count; j++)
                    {
                        f.Add(new Line(new Point3d(fig.lines[j].start.x, fig.lines[j].start.y, fig.lines[j].start.z), new Point3d(fig.lines[j].end.x, fig.lines[j].end.y, fig.lines[j].end.z)));
                    }
                }
            }

            else if (comboBox1.SelectedIndex == 6)
            {
                Figure  figure = new Figure();
                Point3d p1     = new Point3d(0, 50, 0);
                Point3d p2     = new Point3d(0, -50, 0);
                Point3d p3     = new Point3d(50, 0, 0);
                figure.Add(new Line(p1, p3));
                figure.Add(new Line(p2, p3));
                f = figure;
                int count;
                int.TryParse(textBox1.Text, out count);
                int axis = 0;
                if (radioButton5.Checked)
                {
                    axis = 1;
                }
                else if (radioButton6.Checked)
                {
                    axis = 2;
                }
                Figure fig = new Figure();
                var    lns = f.GetLines();
                for (int i = 0; i < lns.Count; i++)
                {
                    fig.Add(new Line(new Point3d(f.lines[i].start.x, f.lines[i].start.y, f.lines[i].start.z), new Point3d(f.lines[i].end.x, f.lines[i].end.y, f.lines[i].end.z)));
                }
                f = new Figure();
                for (int i = 0; i < count; i++)
                {
                    double angle = 360 / count;
                    angle = angle * Math.PI / 180;
                    if (axis == 0)
                    {
                        fig.RotateX(angle);
                    }
                    if (axis == 1)
                    {
                        fig.RotateY(angle);
                    }
                    if (axis == 2)
                    {
                        fig.RotateZ(angle);
                    }
                    var lines = fig.GetLines();
                    for (int j = 0; j < lines.Count; j++)
                    {
                        f.Add(new Line(new Point3d(fig.lines[j].start.x, fig.lines[j].start.y, fig.lines[j].start.z), new Point3d(fig.lines[j].end.x, fig.lines[j].end.y, fig.lines[j].end.z)));
                    }
                }
            }
            DrawFigure();
            is_selected = true;
        }