Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не правильно рисуется фрактал 
:(
    Опции темы
Nostia
  Дата 23.12.2012, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.12.2012

Репутация: нет
Всего: нет



Необходимо нарисовать фрактал Водоворот через систему итерируемых функций. Выглядит он так 
user posted image

Коэфициенты для построения(в порядке a, b, d, e, с, f, p):
Код

0.745455 -0.459091 0.406061 0.887121 1.460279 0.691072 0.912675
-0.424242 -0.065152 -0.175758 -0.218182 3.809567 6.741476 0.087325


Есть код, который какбы должен отрисовывать этот фрактал
Код

import java.awt.Graphics;
import javax.swing.JPanel;
 
public class Surface extends JPanel{
    double a1 = 0.745455;
    double b1 = -0.459091;
    double d1 = 0.406061;
    double e1 = 0.887121;
    double c1 = 1.460279;
    double f1 = 0.691072;
    double p1 = 0.912675;
 
    double a2 = -0.424242;
    double b2 = -0.065152;
    double d2 = -0.175758;
    double e2 = -0.218182;
    double c2 = -0.809567;
    double f2 = 6.460279;
    double p2 = 0.087325;
 
    double x1(double x, double y) {
        return a1 * x + b1 * y + c1;
    }
 
    double y1(double x, double y) {
        return d1 * x + e1 * y + f1;
    }
 
    double x2(double x, double y) {
        return a2 * x + b2 * y + c2;
    }
 
    double y2(double x, double y) {
        return d2 * x + e2 * y + f2;
    }
 
    public void paint(Graphics g) {
        drawFractal(g);
    }
 
    void drawFractal(Graphics g) {
        double x1 = 300;
        double y1 = 300;
        double x2 = 0;
        double y2 = 0;
        g.fillOval(300 + (int) x1, 300 + (int) y1, 3, 3);
        for (int i = 0; i < 10000; i++) {
            double p = Math.random();
            if (p < 0.91675) {
                x2 = x1(x1, y1);
                y2 = y1(x1, y1);
                g.fillOval(300 + (int) x2, 300 + (int) y2, 3, 3);
                x1 = x2;
                y1 = y2;
            } else {
                x2 = x2(x1, y1);
                y2 = y2(x1, y1);
                g.fillOval(300 + (int) x2, 300 + (int) y2, 3, 3);
                x1 = x2;
                y1 = y2;
            }
        }
    }

 
Но на деле отрисовывается вот что:
user posted image
Подскажите, где ошибка? В алгоритме построения, или в отрисовке что не так?
PM MAIL   Вверх
imageman
Дата 28.12.2012, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.9.2004

Репутация: нет
Всего: 1



и тут, видимо, нужно сказать, что  Nostia задавала этот вопрос во множестве мест и получила ответ вот там http://stackoverflow.com/questions/1401081...g-fractal-swirl (как я понял были проблемы с масштабом?)

вдобавок скажу что там http://www.fractalworld.xaoc.ru/IFS_collection есть еще интересные коэффициенты ну и тут
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.