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

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

Построения
на плоскости (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;
using System.Windows.Forms;
 
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Bitmap buf; //Буфер для прорисовки промежуточных кадров
        Graphics _graphic; //Граффика
        SolidBrush background = new SolidBrush (Color.White); //Кисть для заливки фона
        SolidBrush figure = new SolidBrush(Color.Black); //Кисть для заливки фигур
 
        bool rotate = false;
 
        // Параметры скорости движения фигур
        int trspeed = 3;
        int rotspeed = 2;
 
        //Точки квадрата
        Point[] sq = { new Point(150, 150), new Point(150, 350), new Point(350, 350), new Point(350, 150)};
        //Точки треугольников
        Point[] tr1 = { new Point(-1, 150), new Point(-101, 250), new Point(-1, 350) };
        Point[] tr2 = { new Point(150, 500), new Point(250, 600), new Point(350, 500) };
        Point[] tr3 = { new Point(500, 150), new Point(600, 250), new Point(500, 350) };
        Point[] tr4 = { new Point(150, -1), new Point(250, -101), new Point(350, -1) };
 
        public Form1()
        {
            InitializeComponent();
 
            buf = new Bitmap(MainBox.Width, MainBox.Height);//Определение буфера
            _graphic = Graphics.FromImage(buf);//Определение графики из буфера
            _graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//Режим размытия граффики
            MainBox.BackColor = background.Color;//Цвет фона
            timer1.Enabled = true;//Включение таймера
 
        }
 
        //Кнопка выхода
        private void button1_Click_1(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        //Функция таймера выполняется каждые 5 мс
        private void timer1_Tick(object sender, EventArgs e)
        {
 
            if (!rotate)
            {
                //Перемещение треугольников
                tr1[0].X += trspeed;
                tr1[1].X += trspeed;
                tr1[2].X += trspeed;
 
                tr2[0].Y -= trspeed;
                tr2[1].Y -= trspeed;
                tr2[2].Y -= trspeed;
 
                tr3[0].X -= trspeed;
                tr3[1].X -= trspeed;
                tr3[2].X -= trspeed;
 
                tr4[0].Y += trspeed;
                tr4[1].Y += trspeed;
                tr4[2].Y += trspeed;
 
                if (tr1[2].X >= 150) 
                {
                    //Если треугольники дошли до конца возвращение их в стартовые позиции
                    rotate = true;
                    sq[0].X = 250; sq[0].Y = 50;
                    sq[1].X = 50; sq[1].Y = 250;
                    sq[2].X = 250; sq[2].Y = 450;
                    sq[3].X = 450; sq[3].Y = 250;
 
                    tr1[0].X = -1; tr1[0].Y = 150;
                    tr1[1].X = -101; tr1[1].Y = 250;
                    tr1[2].X = -1; tr1[2].Y = 350;
 
                    tr2[0].X = 150; tr2[0].Y = 500;
                    tr2[1].X = 250; tr2[1].Y = 600;
                    tr2[2].X = 350; tr2[2].Y = 500;
 
                    tr3[0].X = 500; tr3[0].Y = 150;
                    tr3[1].X = 600; tr3[1].Y = 250;
                    tr3[2].X = 500; tr3[2].Y = 350;
 
                    tr4[0].X = 150; tr4[0].Y = -1;
                    tr4[1].X = 250; tr4[1].Y = -101;
                    tr4[2].X = 350; tr4[2].Y = -1;
 
                }
            }
            else
            {
                //Вращение квадрата
                sq[0].X -= rotspeed; sq[0].Y += rotspeed;
                sq[1].X += rotspeed; sq[1].Y += rotspeed;
                sq[2].X += rotspeed; sq[2].Y -= rotspeed;
                sq[3].X -= rotspeed; sq[3].Y -= rotspeed;
 
                if (sq[0].X <= 150)
                {
                    rotate = false;
                }
            }
 
            //Заливка фона и прорисовка фигур
            _graphic.Clear(background.Color);
 
            _graphic.FillPolygon(figure, sq);
            _graphic.FillPolygon(figure, tr1);
            _graphic.FillPolygon(figure, tr2);
            _graphic.FillPolygon(figure, tr3);
            _graphic.FillPolygon(figure, tr4);
 
            MainBox.Image = buf;
        }
    }
 
}

Прикрепленный файлРазмер
Scherbak_Squere.rar89.82 кб