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

Вход на сайт

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

Построения
на плоскости (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 Speedy_Circles
{
    public partial class Form1 : Form
    {
        //Счетчик таймера
        private int time = 0;
        //Параметр изменения угла для изменения скорости вращения
        private int param = 100;
        //Радиус окружности по которой идет вращение
        private int radius = 200;
        //Радиус кружков
        private int radius_circle = 50;
        //Счетчик для изменения радиуса кружков
        private int radius_circle_iteration = 0;
        //Координаты центра кружности вращения
        private int xc = 250, yc = 250;
        //Число пи
        private const double pi = 3.1416;
        //Инициализация bitmap
        private Bitmap Circle_map;
        //Инициализация графики
        private Graphics graph;
 
        //Массив углов для вращения кружков
        private double[] Circle_Angles = new double[10];
        //Массив цветов кружков
        private Color[] clr = new Color[]
        { 
            Color.Navy, Color.Blue, Color.Cyan, Color.Green, Color.Lime,
            Color.Yellow, Color.Red, Color.Crimson, Color.DeepPink,  Color.Magenta, 
        };
 
        //Функция рисования кружков
        private void DrawCircle(int i)
        {
 
            SolidBrush Brush_circle = new SolidBrush(clr[i]);
            Pen mypen = new Pen(Color.White);
 
            //Отрисовка уржков на начальном этапе, в медленном темпе
            if(time < 30)
            {
                //Пересчитывание координат
                double x = xc - radius * Math.Cos(Circle_Angles[i]);
                double y = yc - radius * Math.Sin(Circle_Angles[i]);
                //Пересчитывание углов
                Circle_Angles[i] = Circle_Angles[i] + (pi / param);
                //Отрисовка кружков
                graph.FillEllipse(Brush_circle, (int)x, (int)y, radius_circle, radius_circle);
 
            }
            else
            //Отрисовка кружков в ускоряющемся темпе, изменение радиуса основной окружности и кружков
            if((time >= 30) && (time < 280))
            {
                //Уменьшение радиусов и увеличение скорости вращения на каждой итерации таймера
                if (i == 0)
                {
                    if (time % 2 == 0)
                    {
                        radius--;
                        radius_circle_iteration++;
                        if (radius_circle_iteration % 5 == 0)
                        {
                            radius_circle --;
                        }
                    }
                    else
                    if (param >= 10)
                    {
                        param--;
                    }
                }
                //Пересчитывание координат
                double x = xc - radius * Math.Cos(Circle_Angles[i]);
                double y = yc - radius * Math.Sin(Circle_Angles[i]);
                //Пересчитывание углов
                Circle_Angles[i] = Circle_Angles[i] + (pi / param);
                //Отрисовка кружков
                graph.FillEllipse(Brush_circle, (int)x, (int)y, radius_circle, radius_circle);
 
            }
            else
            //Вращение в эпицентре, с наибольшим темпом и наименьшимим радиусами
            if((time >= 280) && (time < 400))
            {
 
                if (param >= 10)
                {
                    param--;
                }
                //Пересчитывание координат
                double x = xc - radius * Math.Cos(Circle_Angles[i]);
                double y = yc - radius * Math.Sin(Circle_Angles[i]);
                //Пересчитывание углов
                Circle_Angles[i] = Circle_Angles[i] + (pi / param);
                //Отрисовка кружков
                graph.FillEllipse(Brush_circle, (int)x, (int)y, radius_circle, radius_circle);
 
            }
            else
            //Уменьшение темпа вращения и возращение в исходные позиции кружков
            if((time >= 400) && (time <= 650))
            {
                //Увеличение радиусов и уменьшение скорости вращения на каждой итерации таймера
                if (i == 0)
                {
                    if (time % 2 == 0)
                    {
                        radius++;
                        radius_circle_iteration++;
                        if (radius_circle_iteration % 5 == 0)
                        {
                            radius_circle++;
                         }
 
                    }
                    if (time > 450)
                    {
 
                        if ((time % 3 == 0) && (param <= 140))
                        {
                            param++;
                        }
                    }
                }
 
                //Пересчитывание координат
                double x = xc - radius * Math.Cos(Circle_Angles[i]);
                double y = yc - radius * Math.Sin(Circle_Angles[i]);
                //Пересчитывание углов
                Circle_Angles[i] = Circle_Angles[i] + (pi / param);
                //Отрисовка кружков
                graph.FillEllipse(Brush_circle, (int)x, (int)y, radius_circle, radius_circle);
 
                if(time==650)
                {
                    //На последней итерации возвращаем все данные на исходные позиции
                    time = 0;
                    param = 100;
                    radius = 200;
                    radius_circle = 50;
                }
 
            }
 
        }
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //Присваивание значений углов на старте отрисовки
            Circle_Angles[0] = 0;
            for (int i = 1; i < 10; i++)
            {
                Circle_Angles[i] = Circle_Angles[i - 1] + (pi / 5);
            }
            //Вызов функции таймера
            timer1.Start();
        }
 
        private void Picture_Circles_Click(object sender, EventArgs e)
        {
 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
 
            //Создаем bitmap
            Circle_map = new Bitmap(Picture_Circles.Width, Picture_Circles.Height);
            //Создаем графику из bitmap
            graph = Graphics.FromImage(Circle_map);
            //Используем сглаживание при рисовании
            graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            //закрашиваем черным цветом фон
            graph.Clear(Color.Black);
 
            //Цикл прорисовки кружков
            for (int i = 0; i < 10; i++)
            {
                DrawCircle(i); //Функция прорисовки кружков
            }
 
           //Выводим содержимое на picturebox
           Picture_Circles.BackgroundImage = Circle_map;
           time++;//Увеличиваем счетчик таймера
        }
 
    }
}

Прикрепленный файлРазмер
Speedy_Circles.zip58.54 кб