Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Не работает, выводит это: Process terminated with status 4258096 (0 minute(s), 2 second(s)) при этом открывается консоль с тем же числом
А как можно добавить сюда глубину рекурсии, то есть сложность линии?
ошибка : пишет не удается открыть источник файл "SDL.h" Из за этой ошибки не удается запустить программу хотя я все сделал правильно , в результате код не работает : //подключим SDL и stdio #include #include //Некоторые константы нашего окна const...
Чет не работает, помогите, надо очень сильно
добрый день! при попытке компиляции выдает Source.obj : error LNK2001: неразрешенный внешний символ "__imp_glPointSize" 1>Source.obj : error LNK2001: неразрешенный внешний символ "__imp_glPopMatrix" 1>Source.obj : error LNK2001: неразрешенный...

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Среда программирования: 
Visual Studio 2013

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace Dots_Rotation
{
    public partial class Form1 : Form
    {
        //Проверка на отрисовку точек в первый раз
        private int First_Time = 1;
        //Число пи
        private const double pi = 3.14;
 
        //Инициализация bitmap
        private Bitmap Circle_map;
        //Инициализация графики
        private Graphics g;
 
        public Form1()
        {
 
            InitializeComponent();
        }
 
        //Массив точек, с начальными значениями
        //{радиус точки, количество итераций ожидания изменения радиуса точки(необходимо в дальнейшем), изменение радиуса(0-уменьшение точки, 1-увеличение точки)}
        private int[,] Dots = new int[12, 3]
        {  
            {40,3,0}, {40,2,0}, {40,1,0}, {36,0,1}, {32,0,1}, {28,0,1},
            {24,0,1}, {20,0,1}, {16,0,1}, {12,3,1}, {12,2,1}, {12,1,1},
        };
        //Массив углов точек
        private double[] Dots_Angle = new double[12];
 
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
 
        }
 
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            //Создаем bitmap
            Circle_map = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            //Создаем графику из bitmap
            g = Graphics.FromImage(Circle_map);
            //Используем сглаживание при рисовании
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            //закрашиваем черным цветом фон
            //Graphics g = pictureBox1.CreateGraphics();
            SolidBrush Dot = new SolidBrush(Color.Red);
            g.Clear(Color.Black);//закрашивание экрана
 
            //Отрисовка точек первый раз
            if(First_Time==1)
            {
                for (int i = 0; i < 12; i++ )
                {
                    Dots_Angle[i] = 0;
                }
                 //Нахождение координат первой точки
                 double x = 200 + 100 * Math.Cos(Dots_Angle[0]);
                 double y = 150 - 100 * Math.Sin(Dots_Angle[0]);
 
                 //Отрисовка точки
                 g.FillEllipse(Dot, (int)x, (int)y, Dots[0, 0], Dots[0, 0]);
 
                //Нахождение и отрисовка остальных точек
                 for (int i = 1; i < 12; i++)
                 {
                    Dots_Angle[i] = Dots_Angle[i - 1] + (pi / 6);
                    x = 170 + 100 * Math.Cos(Dots_Angle[i]);
                    y = 100 - 100 * Math.Sin(Dots_Angle[i]);
                    g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i, 0]);
                }
                 First_Time = 0;
            }
            //Если отрисовка происходит не в первый раз
            else
            {
 
              //Цикл по каждой точке
              for (int i = 0; i < 12; i++)
              {
                  //Пересчитывание координат точки
                 Dots_Angle[i] = Dots_Angle[i] + (pi/200);
                 double x = 170 + 100 * Math.Cos(Dots_Angle[i]);
                 double y = 120 - 100 * Math.Sin(Dots_Angle[i]);
 
                 //Если радиус точки наибольший(по умолчанию - 40)
                 if (Dots[i, 0] == 40)
                 {
                    //Если количество итераций ожидания равен 3, то уменьшаем радиус точки и отрисовываем
                    if (Dots[i, 1] == 3)
                    {
                        Dots[i, 0] = Dots[i, 0] - 4;
                        g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i, 0]);
                        Dots[i, 1] = 0;
                        Dots[i, 2] = 0;
                        continue;
                    }
                    //Иначе, отрисовываем точку с тем же радиусом что и был, только с другими координатами
                    else
                        if (Dots[i, 0] == 40 && Dots[i, 1] != 3)
                        {
                            g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i,0]);
                            Dots[i, 1]++;
                            continue;
                        }
                 }
 
                 //Если радиус точки наименьший(по умолчанию - 12)
                 if (Dots[i, 0] == 12)
                 {
                     //Если количество итераций ожидания равен 3, то увеличиваем радиус точки и отрисовываем
                    if (Dots[i, 1] == 3)
                    {
                        Dots[i,0] = Dots[i, 0] + 4;
                        g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i, 0]);
                        Dots[i, 1] = 0;
                        Dots[i, 2] = 1;
                        continue;
                    }
                    //Иначе, отрисовываем точку с тем же радиусом что и был, только с другими координатами
                    else
                        if (Dots[i, 0] == 12 && Dots[i, 1] != 3)
                        {
                            g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i, 0]);
                            Dots[i, 1]++;
                            continue;
                        }
                 }
                 //Если радиус точки находится между наибольшим и наименьшим радиусом, и коэффициент изменения радиуса равен 1, то увеличиваем радиус и отрисовываем точку
                 if (Dots[i, 0] != 40 && Dots[i, 0] != 12 && Dots[i, 2] == 1)
                 {
                    Dots[i, 0] = Dots[i, 0] + 4;
                    g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i, 0]);
                    if (Dots[i, 0] == 40)
                    {
                        Dots[i, 2] = 0;
                    }
                    continue;
                 }
                 //Если радиус точки находится между наибольшим и наименьшим радиусом, и коэффициент изменения радиуса равен 0, то уменьшаем радиус и отрисовываем точку
                 if (Dots[i, 0] != 40 && Dots[i, 0] != 12 && Dots[i, 2] == 0)
                 {
                    Dots[i, 0] = Dots[i, 0] - 4;
                    g.FillEllipse(Dot, (int)x, (int)y, Dots[i, 0], Dots[i, 0]);
                    if (Dots[i, 0] == 12)
                    {
                        Dots[i, 2] = 1;
                    }
                    continue;
                 }
 
              }
          }
            pictureBox1.BackgroundImage = Circle_map;
       }
    }
}

Прикрепленный файлРазмер
Dots_Rotation.zip56.09 кб