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

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

Построения
на плоскости (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 Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
Microsoft Visual Studio 2013
Статья по теме: 

Задача - построить кривую Гильберта.
На форме находится кнопка "Draw". При клике на нее вычерчивается Кривая Гильберта
шестого порядка.

Код программы: 

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 HilbertLines_Halilova
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int p = 6; //порядок кривой
        int lx = 5, ly = 5; //определяем значения, дающие направление,
        //в котором должна рисоваться кривая
        int i;
 
        //Графический курсор устанавливаем в начальную точку
        int X = 50, Y = 50;
 
        // Функция DrawPart рисует линию из точки (X,Y) к новой точке и сохраняет
        //   координаты точки в переменных X и Y.
        private void DrawPart(Graphics g, int lx, int ly)
        {
            g.DrawLine(Pens.Black, X, Y, X + lx, Y + ly);
            X = X + lx;
            Y = Y + ly;
        }
 
        //  Кривую Гильберта можно получить путем
        //  соединения элементов а,b,с и d.
        //  Каждый элемент строит
        //  соответствующая функция.
 
   // Рекурсивно берем четыре маленькие кривые Гильберта и соединяем их линиями.
        void a(int i, Graphics g)
        {
            if (i > 0)
            {
                d(i - 1, g);
                //От последней точки проводится вправо отрезок длиной 5 пикселей
                DrawPart(g, +lx, 0);
                a(i - 1, g);
                //От последней точки (на нее указывает графический курсор) проводится вниз 
                //отрезок длиной 5 пикселей
                DrawPart(g, 0, ly);
                a(i - 1, g);
                //От последней точки проводится влево отрезок длиной 5 пикселей
                DrawPart(g, -lx, 0);
                c(i - 1, g);
            }
        }
 
 
        void b(int i, Graphics g)
        {
            if (i > 0)
            {
                c(i - 1, g);
                //От последней точки проводится влево отрезок длиной 5 пикселей
                DrawPart(g, -lx, 0);
                b(i - 1, g);
                //От последней точки проводится вверх отрезок длиной 5 пикселей
                DrawPart(g, 0, -ly);
                b(i - 1, g);
                //От последней точки проводится вправо отрезок длиной 5 пикселей  
                DrawPart(g, lx, 0);
                d(i - 1, g);
            }
        }
 
        void c(int i, Graphics g)
        {
            if (i > 0)
            {
 
                b(i - 1, g);
                //От последней точки проводится вверх отрезок длиной 5 пикселей  
                DrawPart(g, 0, -ly);
                c(i - 1, g);
                //От последней точки проводится влево отрезок длиной 5 пикселей  
                DrawPart(g, -lx, 0);
                c(i - 1, g);
                //От последней точки проводится вниз отрезок длиной 5 пикселей  
                DrawPart(g, 0, ly);
                a(i - 1, g);
            }
        }
 
        void d(int i, Graphics g)
        {
            if (i > 0)
            {
                a(i - 1, g);
                //От последней точки проводится вниз отрезок длиной 5 пикселей  
                DrawPart(g, 0, ly);
                d(i - 1, g);
                //От последней точки проводится вправо отрезок длиной 5 пикселей  
                DrawPart(g, lx, 0);
                d(i - 1, g);
                //От последней точки проводится вверх отрезок длиной 5 пикселей  
                DrawPart(g, 0, -ly);
                b(i - 1, g);
            }
        }
        // по нажатию кнопики Draw будут рисоваться кривые
        private void Draw(object sender, EventArgs e)
        {
            //Объявляем объект "g" класса Graphics и предоставляем
            //ему возможность рисования на pictureBox1:
            Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
            //вызываем функцию рисования фрактала
            a(p, g); 
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
 
        }
    }
}

Прикрепленный файлРазмер
HilbertLines_Halilova.rar48.84 кб