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

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

Построения
на плоскости (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 C#

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 WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        private Point pole;//центр формы
        private Timer timer = new Timer();//таймер
        private Pen pen = new Pen(Color.White, 2);//Перо для рисования
        private Pen pen_2 = new Pen(Color.Black, 0.5f);//Перо для рисования
        private float x1 = 25; // х для первой прямой
        private float y1 = 0; // у для первой прямой
        private float x2 = 0; // х для второй прямой
        private float y2 = 25; //у для второй прямой
        private float x3 = 1;
        private float y3 = 1;
        private Graphics g;
        private float add = 3; // увеличение координат
        private float tmpAdd = 0.7f; // увеличение координат
 
        private float widthLine = 0.6f; // увеличение толщины пера
        private float widthLine_2 = 0.3f; //увеличение толщины пера
 
        private float i = 0; // вращение рисунка
 
        public Form1()
        {
            InitializeComponent();
            //вычисляем центр для координатной сетки
            pole = new Point(this.ClientRectangle.Width / 2, this.ClientRectangle.Height / 2); 
            timer.Tick += new EventHandler(timer_tick);
            this.Paint += new PaintEventHandler(Form1_Paint);
            timer.Interval = 10; // скорость обновления
            timer.Enabled = true; //таймер включен
        }
 
        private void timer_tick(object sender, EventArgs e)
        {
            this.Refresh(); // обновляем форму
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (timer.Enabled)
                g = e.Graphics; //инициализируем объект для рисования
                {
                    //Перенос начала координат в центр клиентской части формы
                    g.TranslateTransform(pole.X, pole.Y);
                    i+=0.3f; // увеличиваем угол вращения
                    x1 += add; // увеличиваем координаты прямых
                    y2 += add;
                    x3 += tmpAdd;
                    y3 += tmpAdd;
                    pen.Width += widthLine; // увеличиваем первую кисть
                    pen_2.Width += widthLine_2; // увеличиваем вторую кисть
                    g.RotateTransform(i); // вращение рисунка
                    if (x1 * 2 > x3) // если длина прямой внешней больше прямой внутренней
                    {
                        g.DrawLine(pen, -x1, y1, x1, y1);
                        g.DrawLine(pen, x2, -y2, x2, y2);
                        g.DrawLine(pen_2, -x3, -y3, x3, y3);
                        g.DrawLine(pen_2, -x3, y3, x3, -y3);
                    }
                    else
                    {
                        g.DrawLine(pen_2, -x3, -y3, x3, y3);
                        g.DrawLine(pen_2, -x3, y3, x3, -y3);
                        g.DrawLine(pen, -x1, y1, x1, y1);
                        g.DrawLine(pen, x2, -y2, x2, y2);
                    }
 
 
                    if (x1 > this.Width*2) // если прямая заполяет собой все пространство для рисования
                    {
                        x1 = 25; //возвращаем к прежним значениям
                        y1 = 0;
                        x2 = 0;
                        y2 = 25;
                        pen.Width = 1;
                        add = tmpAdd;
                        tmpAdd = 3;
                        widthLine = widthLine_2;
                        widthLine_2 = 1;
                        this.BackColor = Color.White;
                    }
                    else
                    {
                        if (x3 > this.Width * 2) // если прямая заполяет собой все пространство для рисования
                        {
                            x3 = 25; // придаем примерные координаты для внутренней прямой
                            y3 = 25;
                            pen_2.Width = 2;
                            tmpAdd = add;
                            add = 3;
                            widthLine_2 = widthLine;
                            widthLine = 1;
                            this.BackColor = Color.Black;
                        }
                    }
                }
        }
    }
}

Прикрепленный файлРазмер
volozhanina_alina_x.rar36.25 кб