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

Вход на сайт

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

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

Счетчики и рейтинг

Рейтинг@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 кб