C# Grafik Programlama – “Mimar oldum”

Tue, Mar 14, 2017 2-minute read

Bu yazımızda 3 boyutlu bir düzlemde ev yapacağız. Daha sonra bu evi ortografik projeksiyon teknikleriyle görüntüsünü inceleyeceğiz.

Öncelikle bir 3 boyutlu düzlem düşünelim.

3 dimension

src: https://www.quora.com/Could-there-be-variants-of-the-3D-universe

Şimdi bu düzleme evimizi yerleştirelim. Ve koordinatları kodumuza ekleyelim.

Ben daha önceden oluşturduğum p adlı bir struct tipinde dizime aktardım. Bu struct 4 değer alıyor. 4.değerimiz homojenlik için. Burada ‘z’ kısmı derinlik yani 3.boyutumuz.

int x, y, z;
            x = 0;
            y = -100;
            z = 0;
            p[0].x = x;     p[0].y = y;         p[0].z = z;         p[0].w = 1;
            p[1].x = x+200; p[1].y = y;         p[1].z = z;         p[1].w = 1;
            p[2].x = x+200; p[2].y = y + 200;   p[2].z = z;         p[2].w = 1;
            p[3].x = x;     p[3].y = y + 200;   p[3].z = z;         p[3].w = 1;
            p[4].x = x+200; p[4].y = y;         p[4].z = z - 400;   p[4].w = 1;
            p[5].x = x+200; p[5].y = y + 200;   p[5].z = z - 400;   p[5].w = 1;
            p[6].x = x;     p[6].y = y + 200;   p[6].z = z - 400;   p[6].w = 1;
            p[7].x = x;     p[7].y = y;         p[7].z = z - 400;   p[7].w = 1;
            p[8].x = x+100; p[8].y = y + 280;   p[8].z = z;         p[8].w = 1;
            p[9].x = x+100; p[9].y = y + 280;   p[9].z = z - 400;   p[9].w = 1;

Daha sonra bulmacada noktaları birleştiriyormuşuz gibi

DrawLine(kalem1, (int)p[0].x, (int)p[0].y, (int)p[1].x, (int)p[1].y);

DrawLine komutuyla çizgileri çekiyoruz.

Eğer bir açıdan projeksiyon yapmazsak ( Oblique Projection ) 2 boyutlu sadece önden görünüşünü görebiliriz.

Daha sonra projeksiyonumuzu ve bakış açımızı belirliyoruz.

Burada matris ile noktalarımızı çarpıyoruz. Çarparken belirlediğimiz açıya göre işlem yapıyoruz.

– Buraya ek kodlar ve çarpımın yazım halleri eklenecek.

Son halini bu şekilde elde ediyoruz.

    <img src="https://blog.webischia.com/wp-content/uploads/2017/03/cizim.jpg" alt="" width="204" height="212" class="alignnone size-full wp-image-227" />