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

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

Построения
на плоскости (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#
Среда программирования: 
Microsoft Visual Studio Community 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 WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        private Bitmap b;//создаём bitmap и графику
        private Graphics g;
        SolidBrush bl = new SolidBrush(Color.Black);//цвет фона-квадрата
        SolidBrush bu = new SolidBrush(Color.BlueViolet);//цвет квадратов-кругов
        Pen p2 = new Pen(Color.Black, 12);//цвет рисующей маски
 
        float i1, i2, i3, i4, k, f, f1;//объявляем переменные
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();
 
        }
        private void Draw()
        {
            b = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаём графику из bitmap
            Graphics g = Graphics.FromImage(b);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//запускаем антиалиасинг
 
            g.FillRectangle(bl, 0, 0, 500, 500);//заливаем черный фон-квадрат
            g.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);//смещаем координатную сетку в середину picture_box
 
            g.FillRectangle(bu, -220 + i1, -20, 40, 40);//нарисуем начальную позицию когда квадраты стоят по кругу
            g.DrawEllipse(p2, -235 + i1 + f1, -35 + f1, 70 - f, 70 - f);//рисуем маску-окружность которая трансформирует квадрат в круг
            g.FillRectangle(bu, 180 - i1, -20, 40, 40);//дальше аналогично рисуем каждый квадрат и к каждому квадрату окружность которая сделает из него круг
            g.DrawEllipse(p2, 165 - i1 + f1, -35 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, -20, -220 + i1, 40, 40);
            g.DrawEllipse(p2, -35 + f1, -235 + i1 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, -20, 180 - i1, 40, 40);
            g.DrawEllipse(p2, -35 + f1, 165 - i1 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, -170 - i2, 130 + i2, 40, 40);
            g.DrawEllipse(p2, -185 - i2 + f1, 115 + i2 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, 130 + i2, -170 - i2, 40, 40);
            g.DrawEllipse(p2, 115 + i2 + f1, -185 - i2 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, -170 - i2, -170 - i2, 40, 40);
            g.DrawEllipse(p2, -185 - i2 + f1, -185 - i2 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, 130 + i2, 130 + i2, 40, 40);
            g.DrawEllipse(p2, 115 + i2 + f1, 115 + i2 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, -210 + i3, 59 + i4, 40, 40);
            g.DrawEllipse(p2, -225 + i3 + f1, 44 + i4 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, 170 - i3, -99 - i4, 40, 40);
            g.DrawEllipse(p2, 155 - i3 + f1, -114 - i4 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, -210 + i3, -99 - i4, 40, 40);
            g.DrawEllipse(p2, -225 + i3 + f1, -114 - i4 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, 170 - i3, 59 + i4, 40, 40);
            g.DrawEllipse(p2, 155 - i3 + f1, 44 + i4 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, -99 - i4, 170 - i3, 40, 40);
            g.DrawEllipse(p2, -114 - i4 + f1, 155 - i3 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, 59 + i4, -210 + i3, 40, 40);
            g.DrawEllipse(p2, 44 + i4 + f1, -225 + i3 + f1, 70 - f, 70 - f);
 
            g.FillRectangle(bu, 59 + i4, 170 - i3, 40, 40);
            g.DrawEllipse(p2, 44 + i4 + f1, 155 - i3 + f1, 70 - f, 70 - f);
            g.FillRectangle(bu, -99 - i4, -210 + i3, 40, 40);
            g.DrawEllipse(p2, -114 - i4 + f1, -225 + i3 + f1, 70 - f, 70 - f);
 
            pictureBox1.BackgroundImage = b;
        }
 
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (k < 20)//описывается движение из стартового положения к исходному
            {
                i1 += 0.4F;
                i2 += 0.6F;
                i3 += 0.2F;
                i4 += 0.22F;
                f += 0.44F;
                f1 += 0.22F;
                k += 0.4F;
 
            }
            if (k >= 20 && k < 30)//пауза, счетчик увеличивается
                k += 0.4F;
            if (k >= 30 && k < 50)//описываем движение из исходного к стартовому
            {
                i1 -= 0.4F;
                i2 -= 0.6F;
                i3 -= 0.2F;
                i4 -= 0.22F;
                f -= 0.44F;
                f1 -= 0.22F;
                k += 0.4F;
            }
            if (k >= 50 && k < 60)//пауза, счетчик увеличивается
                k += 0.4F;
            if (k >= 60)//обнуление значений на каждом шаге
            {
                i1 = 0; i2 = 0; i3 = 0; i4 = 0; f = 0; f1 = 0; k = 0;
            }
 
 
            Draw();//вызываем функцию прорисовки
 
            pictureBox1.BackgroundImage = b;
 
 
        }
    }
}

Прикрепленный файлРазмер
Transformation_Sidelev.zip57.41 кб