Çokgen (Poligon, Polygon)
Yazan : Şadi Evren ŞEKER
Bir düzlemde (2 boyutlu), çok sayıdaki (n adet) noktanın belirlediği kapalı alanın adıdır. Örneğin aşağıdaki bir çokgen resmedilmiştir:
Bu şekildeki her köşe bir noktadır ve koordinatlarının bilinmesi yukarıdaki şekli çizmek için yeterlidir. Yukarıdaki çokgenin ayrıca bir özelliği de dışbükey (concave) olmasıdır.
Örneğin yukarıdaki ikinci çokgen tasvirinde ise ilkinden farklı olarak mütekavvis (iç bükey, convex) yapıdaki bir çokgen resmedilmiştir.
Dolayısıyla bir çokgenin yukarıdaki gibi köşelerini belirten birer vertex (nirengi , üç boyutlu nokta) ve aynı zamanda her kenarı belirten birer vektör (yöney) ile gösterilmesi mümkündür.
Bu vektörler (yöney) bir çokgenin içbükey (mütekavvis) veya dışbükey olup olmadığını anlamak için kullanılabilir. Buna göre şayet yöneylerden birisi kendi doğrultusunda veya eksi doğrultusunda başka bir yöneyi keserse bu durumda şekil mğtekavvistir denilebilir. Örneğin aşağıdaki şekilde böyle bir yöney bulunmaktadır:
Görüldüğü üzere E2 yöneyi E4 yöneyini kesmektedir.
Çokgenleri bilgisayarlar üzerinde ifade edebilmek için çeşitli tablolardan istifade edilebilir. Örneğin aşağıdaki çokgenin tabloları yine tasvirin altında verilmiştir:


Yukarıda da görüldüğü üzere çokgen 2 yüzeyden (Surface) oluşmakta olup, çokgenin toplam 6 kenarı ve 5 noktası bulunmaktadır.
Bilindiği üzere bir çokgen 2 boyutludur ve 2 boyutlu bir nesnenin ön ve arka yüzleri bulunmaktadır. Buna göre bir noktanın çokgenin dışında, önünde veya arkasında olduğu aşağıdaki şekilde belirlenir:

Yukarıdaki resimde de tasvir edildiği üzere bir nokta bir çokgenin önünde veya arkasında bulunabilir. Buna karar vermek için aşağıdaki matematiksel bağlantılardan faydalanılır:
A.x + B.y + C.z + D = 0 ise çokgenimizin üzerinde
A.x + B.y + C.z + D < 0 ise çokgenin arkasında
A.x + B.y + C.z + D > 0 ise çokgenin önünde demektir
Yukarıdaki örnekte bir noktanın, çokgenin neresinde bulunduğu gösterilmiştir ancak bir de çokgenin ön ve arka yüzlerine karar verilmesi sorunu bulunmaktadır. Bu sorunun çözümü için normal yöneyinden (normal vector) faydalanılır:

yukarıdaki resimde de tasvir edildiği üzere çokgeni teşkil eden yöneylerin bileşkesi alınmış ve normal yöneyi bulunmuştur. (elektronikteki manyetik akımın bulunması için kullanılan sağ el kuralına benzetilebilir). Bu işlemin sayısal karşılığı:
N = (v2-v1) x (v3-v1)
N.P = -D
« Open GL | Döngü (loop) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Çokgen (Poligon, Polygon)' isimli yazı 05 Sep 2008 tarihinde, saat: 15:17 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 1507 defa okunmuştur.
Benzer yazıları Bilgisayar Grafiği (Computer Graphics) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
Çokgenlerin Üçgene Çevrimi (Splitting Polygons to Triangles)
Arka Yüz Algılama (Back Face Detection)
Derinlik Hafızalama (Depth Buffering , z-buffer)
Taşırma Algoritması (Flood Filling Algorithm)
OpenGL ile Arkayüz (Opengl Backface)
Sınır Doldurma Algoritması (Boundary Filling Algorithm)
Bağlantılar




Peki biz bu convex poligonları dışbukey parçalara ayıran kodları nasıl yazacaz?
merhaba hocam.
gelişigüzel çizilmiş x1,y1,x2 ve y2 lerden oluşan çizgi koordinatlarını(çizgiler kapalı poligon oluşturuyor.) birbirini izliyecek şekilde nasıl sıralıyabiliriz.
Sıralama işleminiz poligonu dolaşacak şekilde olmalı sanırım. Burada sıralama işlemini yapma şansınız ne yazık ki bulunmuyor.
Örneğin yukarıdaki şekilde bulunan poligonu ele alalım. Burada sıralamanın v1, v2, v3, v4, v5 şeklinde yapıldığını görüyoruz ancak aynı nokta koordinatları ile pek ala v1, v2, v4, v3, v5 poligonu da çizilebilirdi. Dolayısıyla nokta koordinatları bize poligon hakkında bilgi vermek için yetersizdir.
Ancak vektörel olarak sıralayabilirsiniz. Yani yine yukarıda gösterilen poligon için vektörler elimizde bulunuyorsa bu vektörlerin yönlerinden istifade ederek bir sıralamadan bahsedilebilir. Bu durumda her noktadan başlayan vektörden hemen sonra, bu vektörün uzayda kestiği diğer nokta (veya diğer vektörün başlangıcı) gelir.
başarılar