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

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

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

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

Для построения фрактала достаточно задать 4 параметра:

Первый параметр (обозначается буквой r) - длина кривой Корню, на основе которой строиться фрактал. В некотором смысле - это масштаб изображения.
Второй параметр (обозначается буквой t) - показатель степени, в которую мы возводим некоторое число v, которое мы будем перебирать в цикле (изменение этого параметра сильно влияет на угол поворота кривой)
Третий параметр (обозначается буквой s) - множитель, на который мы умножаем величину pow(v, t). Это позволяет нам регулировать угол поворота кривой Корню более точно, чем второй параметр.
Третий параметр (обозначается буквой step) - это шаг цикла (шаг изменения основания степени vt.

Для лучшего понимания взаимосвязи этих параметров давайте рассмотрим формулы, по которым вычисляется следующая точка для прорисовки фрактала:

double w = s * Math.pow(v, t); // вычисляем угол, на который нам нужно повернуть кривую Корню (элементарноя составляющая фрактала)
X2 = (int) (X1 + r * Math.cos(w)); // координаты следующей точки фрактала
Y2 = (int) (Y1 + r * Math.sin(w));

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

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Graphics gr = canvas1.getGraphics(); // Инициализируем графику
        Graphics2D g = (Graphics2D)gr; // Конвертируем графику в класс Graphics2D (необходимо для редактирования стиля кисти)
        g.setStroke(new BasicStroke(1.5f)); // Устанавливаем толщину кисти
        int DrawWidth = 10; // толщина рисуемой линии
        int xmax = 300; // сдвиг системы координат к центру формы
        int ymax = 300; 
        String str = jFormattedTextField1.getText(); // записываем значение первого поля ввода в строку
        double r = Double.parseDouble(str); // длина одного участка, масштаб рисунка (чем больше число, тем больше рисунок)
        str = jFormattedTextField3.getText(); // записываем значение третьего поля ввода в строку
        double s = Double.parseDouble(str); // второй параметр (дополнительный коэффициент) коэффицинет
        str = jFormattedTextField2.getText(); // записываем значение второго поля ввода в строку
        double t = Double.parseDouble(str); // показатель степени
        str = jFormattedTextField4.getText(); // записываем значение второго поля ввода в строку
        double step = Integer.parseInt(str); // показатель степени
        int X1 = 0; // Координаты начальной точки для рисования
        int Y1 = 100;
        g.clearRect(0, 0, 700, 700); // Очищаем область для рисования
        for (int v = -10000; v <= 10000; v += step) {
            double w = s * Math.pow(v, t); // вычисляем угол
            int X2 = (int) (X1 + r * Math.cos(w)); // координаты 
            int Y2 = (int) (Y1 + r * Math.sin(w)); // координаты 
            int red = Math.abs(v/4 + 1024) % 255; // по счетчику цикла определяем цвет рисования линии (содержание красного цвета)
            int green = Math.abs(255 - v/3) % 255; // по счетчику цикла определяем цвет рисования линии (содержание зеленого цвета)
            int blue = Math.abs(128 - v) % 255; // по счетчику цикла определяем цвет рисования линии (содержание синего цвета)
            g.setColor(new Color(red, green, blue)); // Определяем цвет в классе Graphics
            g.drawLine(X1 + xmax, Y1 + ymax, X2+xmax, Y2+ymax); // Рисуем отрезок
            X1 = X2; Y1 = Y2; // Текущую точку делаем предыдущей
        }        
    }   

Прикрепленный файлРазмер
Curlicue_fractal.rar908.15 кб