SORU
8 Ocak 2009, PERŞEMBE


Nasıl bir fraktal programı için?

Programlama Fraktallar ile herhangi bir deneyimi yok. Offcours ünlü Mandelbrot görüntüleri gördüm ve böyle oldum.

Fraktallar için basit algoritmalar ile bana verebilir misiniz.

Programlama dili çok önemli değil, ama en sembol, c#, java biliyorum.

Eğer Fraktallar ben google (karışık) birçok bilgi biliyorum. Ama basit bir algoritma ile başla ve onunla oynamak istiyorum.

Temel algoritma geliştirmek için öneriler de hoş geldiniz, Bu güzel renkleri onları yapmak için nasıl gibi.

Teşekkürler!

CEVAP
8 Ocak 2009, PERŞEMBE


Mandelbrot'un programlama kolaydır.< / ^ br . Quick-n-dirty benim kod aşağıda (virüssüz ama iyi bir taslak olması garanti değil).

İşte anahat: Mandelbrot kümesi yarıçapı 2 olan bir çember içinde Karmaşık kılavuz tamamen yalan.

Bu yüzden, bu alanda her noktasını tarayarak başlayın. Her nokta bir Karmaşık sayı (x, yi) temsil eder. Karmaşık sayı yineleme:

İki şey takip ederken [new value] = [old-value]^2 [original-value]:

1.) yineleme sayısı

2.) kaynaktan uzaklık [yeni değer].

Eğer yineleme sayısı ulaşırsanız, bitti. Kökeni olan uzaklığı 2, işiniz büyükse.

İşiniz bittiğinde, orijinal piksel yaptın yineleme sayısına bağlı olarak renk. O zaman bir sonraki piksel için hareket.

    public void MBrot()
    {
        float epsilon = 0.0001; // The step size across the X and Y axis
        float x;
        float y;
        int maxIterations = 10; // increasing this will give you a more detailed fractal
        int maxColors = 256; // Change as appropriate for your display.

        Complex Z;
        Complex C;
        int iterations;
        for(x=-2; x<=2; x = epsilon)
        {
            for(y=-2; y<=2; y = epsilon)
            {
                iterations = 0;
                C = new Complex(x, y);
                Z = new Complex(0,0);
                while(Complex.Abs(Z) < 2 && iterations < maxIterations)
                {
                    Z = Z*Z   C;
                    iterations  ;
                }
                Screen.Plot(x,y, maxColors % iterations); // depending on the number of iterations, color a pixel.
            }
        }
    }

Bazı ayrıntılar kaldı:

1.) Karmaşık bir sayının karesini ve bunu hesaplamak için tam olarak nasıl öğrenin.

2.) Ekran koordinatları (-2,2) dikdörtgen bölge çevirmek için nasıl anlamaya.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • jbignacio

    jbignacio

    13 Mart 2006
  • MrExcite96

    MrExcite96

    17 ŞUBAT 2011