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

Вход на сайт

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

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

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

Как реализовать в данном примере границы расчёта?
Не работает, выводит это: Process terminated with status 4258096 (0 minute(s), 2 second(s)) при этом открывается консоль с тем же числом

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

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
IntelliJ IDEA

Задача - построить фрактал Дракон Хартера-Хейтуэя.
Алгоритм - Берём произвольный отрезок. Делим его пополам и строим из получившихся отрезков прямой угол. Затем многократно повторяем итерацию(на это в влияет аргумент n функции drawDragon).

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

import javax.swing.*;
import java.awt.*;
 
public class DragonView extends JPanel
{
 
    public void paintComponent(Graphics g)
    {
        super.paintComponents(g);
        g.setColor(Color.RED);
        drawDragon(180, 200, 400, 450, 24, g);//Задаём прямую и указываем количество итераций
        repaint();
    }
 
    private void drawDragon(int x1, int y1, int x2, int y2, int n, Graphics g)//Основная рекурсивная функция 
    {
        int xn, yn;
        if(n > 0) //Пока n > 0 - продолжаем поворачивать прямые на 90 градусов и  уменьшать их размеры
        {
            xn = (x1 + x2) / 2 + (y2 - y1) / 2;
            yn = (y1 + y2) / 2 - (x2 - x1) / 2 ;
            drawDragon(x2, y2, xn, yn, n - 1, g);
            drawDragon(x1, y1, xn, yn, n - 1, g);
        }
        if(n == 0)//Приступаем к рисованию прямых
            g.drawLine(x1, y1, x2, y2);
    }
 
}

Прикрепленный файлРазмер
Dragons.zip9.81 кб