Eğlence için DCPU-16 için bir tel çerçeve görüntüleyici yapmaya çalışıyorum . Tel çerçevede gizlenen çizgileri gizleme dışında her şeyi nasıl yapacağımı anlıyorum. SO'daki tüm soruların hepsi OpenGL'ye erişiminiz olduğunu varsayar, maalesef DCPU-16 (veya herhangi bir donanım hızlandırma) için böyle bir şeye erişimim yok.
Google Kitaplar'da Appel'in algoritmasının oldukça iyi bir tanımını buldum . Ancak çözemediğim bir sorun var.
Öne bakan kontur çizgisini, öne bakan ve arkaya bakan bir çokgen tarafından paylaşılan bir kenar veya kapalı bir polihedronun parçası olmayan, öne bakan bir çokgenin paylaşılmamış kenarı olarak tanımlayın. Öne bakan iki çokgen tarafından paylaşılan bir kenar görünürlükte değişime neden olmaz ve bu nedenle kontur çizgisi değildir. Şekil 8.4'te AB, EF, PC, GK ve CH kenarları kontur çizgileriyken, ED, DC ve GI kenarları değildir.
Algoritmanın kurallarını ve kontur çizgileriniz olduğunda nasıl çalıştığını anlıyorum, ancak bir kenarın öne bakan ve arkaya bakan bir çokgen tarafından paylaşılıp paylaşılmadığını belirlemek için ne yapmam gerektiğini anlamıyorum veya "kodlama açısından kapalı bir polihedronun parçası olmayan, öne bakan bir çokgenin paylaşılmayan kenarı ". Bir şekle bakabilirim ve kafamda hangi çizgilerin kontur çizgileri olduğunu biliyorum ama bu "anlayışı" kodlanmış bir algoritmaya nasıl aktaracağım hakkında bir fikrim yok.
Güncelleme
Kontur çizgilerini belirlemede bazı ilerlemeler kaydettim. Bu iki ders notunu bir Buffalo Üniversitesi dersinden bilgisayar grafikleri üzerinde buldum .
Kenarları düşünün. Bunlar üç kategoriye ayrılır.
- İki görünmez yüzü birleştiren bir kenarın kendisi görünmezdir. Bu listeden silinecek ve yok sayılacaktır.
- Potansiyel olarak görülebilen iki yüzü birleştiren bir kenara "malzeme kenarı" denir ve daha fazla işlem gerektirir.
- Potansiyel olarak görülebilen bir yüzü ve görünmez bir yüzü birleştiren bir kenar, 'malzeme kenarı' için özel bir durumdur ve ayrıca 'kontur kenarı' olarak adlandırılır.
Yukarıdaki iki bilgiyi kullanarak bunu kod olarak yazabilmeye yaklaşabiliyorum, ama yine de gidecek çok yolum var.