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

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

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

При запуске программы рисуется на нашей форме Фрактальное Дерево

Алгоритм:
1) Создаём Функцию, которая отрисовывает фрактальное дерево с определёнными координатами, длиной и углом!
2) Рисуем линию от координат x,y до координат x1, y1, создаём карандаш черного цвета и делаем наши ветви пожирнее, путём деления длины на какое нибудь произвольное значение!
3) Вызываем рекурсивную функцию, чтобы отрисовать наши ветви по назначенным координатам, а также создаём событие Paint, в котором и будет происходить отрисовка нашего Фрактального Дерева

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

Program Sasha;
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 FractalTree1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public void DrawF(int x, int y, int len, double angle, PaintEventArgs e) //Функция, которая отрисовывает наши ветки, где x и y - координаты, переменная len - длина, а переменная angle - угол поворота
        {
            Graphics g = e.Graphics;
            double x1, y1; //Новые координаты, которые мы расчитаем исходя из длины и угла
            x1 = x + len * Math.Sin(angle * Math.PI * 2 / 360.0); // к координате х прибавляем длину умноженную на уравнение окружности и присваиваем это всё в x1
            y1 = y + len * Math.Cos(angle * Math.PI * 2 / 360.0); // к координате y прибавляем длину умноженную на уравнение окружности и присваиваем это всё в y1
            g.DrawLine(new Pen(Color.Black, len/25), x, panel1.Height - y, (int)x1, panel1.Height - (int)y1); //Рисуем линию от координат x,y до координат x1,y1; Создаём карандаш Pen(Color.Black, (len/25) - длину делим на 25, чтобы сделать ветки пожирнее), x1 и y1 - преобразуем в целые числа, чтобы осуществлять отрисовку и от panel1.Height вычитаем координаты y и y1, чтобы рисунок отрисовывался с нижней части нашей панели
            if (len > 20) // Функция DrawF будет вызываться бесконечно, когда её длина станет больше 20 пикселей, тогда функция DrawF - прекратится
            {
                DrawF((int)x1, (int)y1, (int)(len / 1.5), angle + 35, e); //Рисуем следующую ветку в координатах x1, y1, длину len делим на 1.5 - чтобы ветки были красивее, а к углу angle - прибавляем 35 градусов, для того чтобы нарисовать правую сторону нашего фрактального древа
                DrawF((int)x1, (int)y1, (int)(len / 1.5), angle - 35, e); //Рисуем следующую ветку в координатах x1, y1, длину len делим на 1.5 - чтобы ветки были красивее, а от угла angle - вычитаем 35 градусов, для того чтобы нарисовать левую сторону нашего фрактального древа
                DrawF((int)x1, (int)y1, (int)(len / 1.5), angle + 15, e); //Рисуем дополнительные ветки с другими углами, при изменении угла или длины ветви будут изменяться 
                DrawF((int)x1, (int)y1, (int)(len / 1.5), angle - 15, e); //Рисуем дополнительные ветки с другими углами, при изменинии угла или длины ветви будут изменяться
            }
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e) //Событие Paint
        {
            DrawF(panel1.Width/2,0,200,0,e); // При помощи функции рисуем в нашей Панеле линию с верха Панели и задаем длину - 300, угол 0, и Paint аргументы передаём 
        }
    }
}
end.

Прикрепленный файлРазмер
Moskvitina FractalTree1.zip37.27 кб