OpenGL ile Koch Kar Tanesi Fraktalını Çizmek

Wed, May 3, 2017 One-minute read

Bu yazımızda FreeGLUT kullanarak Koch kar tanesi fraktalını çiziyoruz.

Koch fraktalını yaparken recursive fonksiyonlardan yararlanacağız. Koch fraktalı 2 nokta arasını 3e bölüp bunlardan birer eşkenar üçgen elde etmemize yarıyor.

Eşkenar üçgenin her bir kenarının açısı 60 derece olduğu için aşağıdaki gibi bir fonksiyon yazabiliriz.

void koch(GLfloat aci,GLfloat uzunluk,int donus)
{
    if(donus==0)
    {
    GLfloat x=0,y=0;
        
    x = oldx + ((uzunluk) * cos(derece*aci));
    y = oldy + ((uzunluk) * sin(derece*aci));
    glVertex2f(oldx, oldy);
    glVertex2f(x, y);
    oldx = x;
    oldy = y;
    }
    else{
    donus-=1;
    koch(aci,uzunluk,donus);//1.kenar
    koch(aci+60,uzunluk,donus);//2.kenar
    koch(aci-60,uzunluk,donus);//3.kenar
    koch(aci,uzunluk,donus);//4.kenar
    }
}

Çağırmak için display fonksiyonumuza aşağıdaki gibi bir fonksiyon çağırısı yeterli olacaktır.

koch(0,0.05,3);

Ek not:

Açılarımızı 120 ve -120 olarak ekleme yaparsak sadece üst kısım değil bir yıldız şeklinde oluştururuz fraktalımızı.

Kaynak : CSCI 4550 – Marcus Young – 9/20/10