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

Вход на сайт

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

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

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

torrvic, возможно, Вам нужно добавить -lGLU
Извините за тупой вопрос. У меня при сборке Вашего примера выходит ошибка: "undefined reference to gluLookAt". Не могу найти в какой библиотеке находится эта функция. У меня задано: -lGL -lglut ... Искал в /usr/lib таким образом: nm lib*so* | grep...
Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...

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

Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Microsoft Visual Studio 2015
Статья по теме: 

Программа, рисующая фрактал Висекка, написанная на C# с использованием стандартной графической библиотеки. Рекурсивный алгоритм рисует изображение с небольшой задержкой с целью получения красивого эффекта.
Для рисования требуется нажать кнопки:
Draw I-Type - отрисуется фрактал, образованный с удалением угловых
квадратов,
Draw II-Type - с удержанием угловых квадратов,
Combine - для получения наложения.

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

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace ViscekFractal
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Pen myRedPen = new Pen(Color.Red, 3);
        Pen myWhitePen = new Pen(Color.White, 3);
 
        // Функция рисует фрактал с центром в точке (x, y) фрактал 1-го типа 
        // degree - количество итераций
        private void DrawFractal(int degree, int x, int y, Pen myPen)
        {
            Graphics g = this.CreateGraphics();
            if (degree == 1)
            {
                // Достигли центра
                g.DrawRectangle(myPen, x, y, 1, 1);
            }
            else
            {
                int dist = (int)Math.Pow(3, degree - 1);
                // Рассчитываем центры для ветвей
                System.Threading.Thread.Sleep(10);
                // Задержка
                DrawFractal(degree - 1, x, y,               myPen);
                DrawFractal(degree - 1, x - dist, y - dist, myPen);
                DrawFractal(degree - 1, x - dist, y + dist, myPen);
                DrawFractal(degree - 1, x + dist, y - dist, myPen);
                DrawFractal(degree - 1, x + dist, y + dist, myPen);
            }
        }
        // Функция рисует фрактал с центром в точке (x, y) фрактал 2-го типа 
        private void DrawSimilarFractal(int degree, int x, int y, Pen myPen)
        {
            Graphics g = this.CreateGraphics();
            if (degree == 1)
            {
                g.DrawRectangle(myPen, x, y, 1, 1);
            }
            else
            {
                int dist = (int)Math.Pow(3, degree - 1);
                System.Threading.Thread.Sleep(10);
                DrawSimilarFractal(degree - 1, x,           y,          myPen);
                DrawSimilarFractal(degree - 1, x + dist,    y,          myPen);
                DrawSimilarFractal(degree - 1, x - dist,    y,          myPen);
                DrawSimilarFractal(degree - 1, x,           y - dist,   myPen);
                DrawSimilarFractal(degree - 1, x,           y + dist,   myPen);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            DrawFractal(5, 150, 200, myWhitePen);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            DrawSimilarFractal(5, 800, 200, myWhitePen);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            DrawFractal(5, 475, 200, myWhitePen);
            DrawSimilarFractal(5, 475, 200, myRedPen);
        }
    }
}

Прикрепленный файлРазмер
Ametov_ViscekFractal.zip53.64 кб