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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Circle_lines
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start(); //запускаем таймер
            timer1.Interval = 80; //Timer объект запускает Timer.Elapsed событий каждые 0.08 секунды (80 миллисекунд) 
        }
 
        int cycle = 0;// переменная для хранения текущего состояния прорисовки
        double delta = 6.28 / 20;// Переменная, задающая количество линий в одном круге
        double deltaDist = 15; // Переменная, задающая расстояние между кругами
        double mom = 0.01;// Переменная, хранящая момент анимации
 
 
       // Функция, рисующая анимируемое изображение
       void draw(int c, double moment, Graphics g2)
       {
           //Создаём экземпляр класса BufferedGraphics, вызвав метод Allocate
           BufferedGraphicsContext currentContext; 
           BufferedGraphics myBuffer;
           currentContext = BufferedGraphicsManager.Current;
           myBuffer = currentContext.Allocate(this.pictureBox1.CreateGraphics(), this.pictureBox1.DisplayRectangle);
           Pen pen = new Pen(Color.White,2);//создаём новое перо указывая его цвет и толщину
	        for(double distance=deltaDist,step=1;distance<200;distance+=deltaDist)
            {
                    for(double d=0 ;d<6.28;d+=delta)
                    {	// Для удобства обращения создаётся массив точек, вокруг текущей (той, что будет рисоваться)
                        Point[] p ={
		                 new Point((int)(distance*Math.Cos(d)),(int)( distance*Math.Sin(d))),
		                 new Point((int)(distance*Math.Cos(d+step*delta)),(int)( distance*Math.Sin(d+step*delta))),
		                 new Point((int)((distance+deltaDist)*Math.Cos(d+step*delta)),(int)( (distance+deltaDist)*Math.Sin(d+step*delta))),
		                 new Point((int)((distance+deltaDist)*Math.Cos(d)),(int)( (distance+deltaDist)*Math.Sin(d))),
		                 new Point((int)((distance+deltaDist)*Math.Cos(d-step*delta)),(int)( (distance+deltaDist)*Math.Sin(d-step*delta))),
		                 new Point((int)(distance*Math.Cos(d-step*delta)),(int)(distance*Math.Sin(d-step*delta))),
		                  };
                        // Вычисление второй координаты, в зависимости от момента анимации
                        int X = (int)(p[c + 1].X + (-p[c + 1].X + p[c + 2].X) * mom), Y = (int)(p[c + 1].Y + (-p[c + 1].Y + p[c + 2].Y) * mom);
                        // Рисование линии по уже вычисленным ранее координатам с внесением в буфер графическиого объекта и с переносом центра координат в центр окна
                        myBuffer.Graphics.DrawLine(pen, p[0].X + 300, p[0].Y + 270, X + 300, Y + 270);
                    } 
	      step*=-1;
            }
            myBuffer.Render(this.pictureBox1.CreateGraphics());//отрисовка содержимого буфера
    }
       private void timer1_Tick(object sender, EventArgs e)
       {
           Graphics gr = pictureBox1.CreateGraphics(); //Создаём объект Graphics для pictureBox1
           draw(cycle, mom, gr);// Вызываем функцию рисования
           if (mom < 1) mom += 0.2;// Приращение момента анимации
           else
           {
               mom = 0.01;
               cycle += 1;
               cycle %= 4;
           }		 
       }
 
 
    }
}

Прикрепленный файлРазмер
Al-Andari_Circle_lines.zip54.7 кб