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

Вход на сайт

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

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

Построить фрактал Квазиклевер, в котором вместо окружностей за единицу берутся ромбы.
После запуска программы, необходимо нажать на появившееся окно для отрисовки фрактала.

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

using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace Fractal_QuasiClever
{
    public partial class Form1 : Form
    {
        public const int cond = 7;
        //должен быть равен количеству итераций(необходим для отрисовки фрактала со всех сторон)
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            Graphics g = pictureBox1.CreateGraphics();
            g.Clear(Color.Black);//Зарисовка экрана черным фоном
 
            Draw_Fractal(400, 400, 120, 2, 7);
            //Вызов функции рисования фрактала, со значениями главного ромба
 
        }
        private int Draw_Fractal(int xc, int yc, int rad, int dir, int it)
        //xc, yc - координаты цетра ромба, rad - радиус ромба, 
        //dir - позиция ромба-родителя(0-внизу, 1-слева, 2-сверху, 3-справа)
        //it - количество итераций отрисовки ромбов,
        {
            Graphics g = pictureBox1.CreateGraphics();
 
            //Массив цветов
            Color[] clr = new Color[]
            { 
              Color.Black, Color.Orange, Color.Crimson, Color.Lime, 
              Color.Yellow, Color.Red, Color.Magenta, Color.Blue 
            };
 
            //Объявление цвета закраски ромба
            SolidBrush Romb = new SolidBrush(clr[it]);
 
            //Отрисовка ромба по заданным координатам
            g.FillPolygon(Romb, new Point[]
            { 
                new Point(xc, yc+rad), new Point(xc-rad, yc), 
                new Point(xc, yc-rad), new Point(xc+rad, yc)
            });
 
            if (it == 0) return 0;
            it--;
 
            //Объявление массива с координатами точек - центров ромбов-потомков
            int[] x = new int[4];
            int[] y = new int[4];
 
            //пересчитывания координат центров ромбов-потомков
            x[0] = xc;
            y[0] = yc+((3*rad)/2);    
            x[1] = xc-((3*rad)/2);
            y[1] = yc;
            x[2] = xc;
            y[2] = yc-((3*rad)/2);
            x[3] = xc+((3*rad)/2);
            y[3] = yc;
            rad=rad/2;
 
            //Отрисовка ромбов-потомков
            for (int i = 0; i < 4; i++)
            {
                //
                if((dir==2) && (it+1==cond))
                {
                    Draw_Fractal(x[i], y[i], rad, i, it);
                    continue;
                }
                else
                //
                if ((i - dir == 2) || (i - dir == -2)) { continue; }
                Draw_Fractal(x[i], y[i], rad, i, it);
            }
            return 0;
        }
 
    }
}

Прикрепленный файлРазмер
Fractal_QuasiClever.zip55.04 кб