Sierpiński eğrisi - Sierpiński curve

Sierpinski eğrileri bir olan yinelemeli tanımlanan sekans arasında sürekli kapalı düzlem fraktal eğriler tarafından keşfedilen Wacław Sierpinski limit, tamamen birim kare doldurun: dolayısıyla denilen kendi sınır eğrisi, Sierpinski eğrisi , bir örneğidir boşluk doldurucu eğrisi .

Sierpiński eğrisi boşluk doldurduğu için Hausdorff boyutu (sınırda ) . Öklid uzunlukta bir inci yineleme eğrisi olan

yani büyür katlanarak ile sınır ise, herhangi bir sınırın ötesine çevrelediği alanın bir karesinin (Öklit metriği olarak).

Birinci dereceden Sierpiński eğrisi ("Sierpinski'nin kare kar tanesi")
1. ve 2. siparişlerin Sierpiński eğrileri
1'den 3'e kadar siparişlerin Sierpiński eğrileri
2-4 siparişlerin Sierpinski "kare eğrisi"

Eğrinin kullanımları

Sierpiński eğrisi, birçok pratik uygulamada kullanışlıdır çünkü yaygın olarak incelenen diğer boşluk doldurma eğrilerinden daha simetriktir. Örneğin, Seyahat Eden Satıcı Problemine (belirli bir nokta kümesinin en kısa sırasını soran) yaklaşık bir çözümün hızlı bir şekilde oluşturulması için bir temel olarak kullanılmıştır : Buluşsal yöntem, yalnızca aynı sıradaki noktaları ziyaret etmektir. Sierpiński eğrisinde göründükleri gibi. Bunu yapmak için iki adım gerekir: İlk olarak ziyaret edilecek her noktanın ters görüntüsünü hesaplayın; ardından değerleri sıralayın. Bu fikir, yalnızca Rolodex kart dosyalarına dayalı olarak ticari araçlar için yönlendirme sistemleri oluşturmak için kullanılmıştır.

Bir boşluk doldurma eğrisi, birim aralığın bir birim kare üzerine sürekli bir haritasıdır ve bu nedenle bir (sözde) ters, birim kareyi birim aralığa eşler. Sözde tersi oluşturmanın bir yolu aşağıdaki gibidir. Birim karenin sol alt köşesinin (0, 0) 0.0'a (ve 1.0) karşılık gelmesine izin verin. Sonra sol üst köşe (0, 1) 0,25'e, sağ üst köşe (1, 1) 0,50'ye ve sağ alt köşe (1, 0) 0,75'e karşılık gelmelidir. İç noktaların ters haritası, eğrinin özyinelemeli yapısından yararlanılarak hesaplanır. Sierpiński eğrisi üzerindeki herhangi bir noktanın göreceli konumunu hesaplayacak Java'da kodlanmış bir fonksiyon (yani, sözde ters bir değer). Tersine çevrilecek (x, y) noktasının koordinatlarını ve çevreleyen sağ ikizkenar üçgenin (ax, ay), (bx, by) ve (cx, cy) köşelerini girdi olarak alır. (Birim karenin bu tür iki üçgenin birleşimi olduğuna dikkat edin.) Kalan parametreler, tersinin hesaplanması gereken doğruluk düzeyini belirtir.

    static long sierp_pt2code( double ax, double ay, double bx, double by, double cx, double cy,
        int currentLevel, int maxLevel, long code, double x, double y ) 
    {
        if (currentLevel <= maxLevel) {
            currentLevel++;
            if ((sqr(x-ax) + sqr(y-ay)) < (sqr(x-cx) + sqr(y-cy))) {
                code = sierp_pt2code( ax, ay, (ax+cx)/2.0, (ay+cy)/2.0, bx, by,
                    currentLevel, maxLevel, 2 * code + 0, x, y );
            }
            else {
                code = sierp_pt2code( bx, by, (ax+cx)/2.0, (ay+cy)/2.0, cx, cy,
                    currentLevel, maxLevel, 2 * code + 1, x, y );
            }
        }
        return code;    
    }

Lindenmayer sistemi olarak temsil

Sierpiński eğrisi bir yeniden yazma sistemi ( L sistemi ) ile ifade edilebilir .

Alfabe : F, G, X
Sabitler : F, G, +, -
Aksiyom : F −− XF −− F −− XF
Üretim kuralları :
X → XF + G + XF −− F −− XF + G + X
Açı : 45

Burada, hem F ve G “ileri çizmek” demek, + araç “dönüş 45 sol °” ve - araçları “doğru 45 çevirmek °” (bkz kaplumbağa grafik ). Eğri genellikle F ve G için farklı uzunluklarda çizilir.

Sierpiński kare eğrisi benzer şekilde ifade edilebilir:

Alfabe : F, X
Sabitler : F, +, -
Aksiyom : F + XF + F + XF
Üretim kuralları :
X → XF − F + F − XF + F + XF − F + F − X
Açı : 90

Ok ucu eğrisi

Sierpinski ok eğrisi için limit görünüm olarak benzer ya da özdeş bir fraktal eğridir Sierpinski üçgen .

Sierpiński ok ucu eğrisinin evrimi

Sierpiński ok ucu eğrisi, eşit aralıklarla üçgen delikli bir eşkenar üçgen çizer. İki ikame üretim kuralı ile tanımlanabilir: (A → BAB) ve (B → A + B + A). A ve B yinelenir ve en altta aynı şeyi yapın - bir çizgi çizin. Artı ve eksi (+ ve -), sola veya sağa 60 derece dönüş anlamına gelir. Sierpiński ok ucu eğrisinin bitiş noktası, çift sayıda tekrar etmeniz ve her özyinelemede çizginin uzunluğunu yarıya indirmeniz koşuluyla her zaman aynıdır. Tuhaf bir derinliğe tekrar gelirseniz (sıra tuhaftır), üçgenin farklı bir noktasında 60 derece dönmüş olursunuz.

De Rham eğrisiyle ilgili makalede alternatif bir daraltma verilmiştir : biri de Rham eğrileriyle aynı tekniği kullanır, ancak ikili (taban-2) genişleme kullanmak yerine üçlü (taban-3) genişleme kullanır.

Kod

Çizim fonksiyonları göz önüne alındığında void draw_line(double distance); ve void turn(int angle_in_degrees); , Sierpinski böyle eğri görünüyor ok ucu sizi (yaklaşık) çizmek için kod:

void sierpinski_arrowhead_curve(unsigned order, double length)
{
    // If order is even we can just draw the curve.
    if ( 0 == (order & 1) ) {
        curve(order, length, +60);
    }
    else /* order is odd */ {
        turn( +60);
        curve(order, length, -60);
    }
}
void curve(unsigned order, double length, int angle)
{
    if ( 0 == order ) {
        draw_line(length);
    } else {
        curve(order - 1, length / 2, -angle);
        turn(angle);
        curve(order - 1, length / 2, angle);
        turn(angle);
        curve(order - 1, length / 2, -angle);
    }
}

Lindenmayer sistemi olarak temsil

Birçok iki boyutlu fraktal eğri gibi, Sierpiński ok ucu eğrisi de üç boyuta genişletilebilir

Sierpiński ok ucu eğrisi bir yeniden yazma sistemi ( L-sistemi ) ile ifade edilebilir .

Alfabe : X, Y
Sabitler : F, +, -
Aksiyom : XF
Üretim kuralları :
X → YF + XF + Y
Y → XF - YF - X

Burada, F "ileri çek", + "60 ° sola dön" ve - "60 ° sağa dön" anlamına gelir ( kaplumbağa grafiklerine bakın ).

Ayrıca bakınız

Referanslar

daha fazla okuma