Homework-1
Transkript
Homework-1
1 BLM 337 / COM 337 Bilgisayar Grafiği Ödev (06/10/2015) Mezun olduktan sonra NASA’da Applied Modeling and Simulation departmanında çalışmaya başladınız. Mars’a gönderilen Rover (Curiosity) için NASA tarafından geliştirilen simülasyon yazılımında yakın zamanda bazı eksiklikler görülmüş ve sizden bu simülatörü yeniden yazmanız isteniyor. Ekip lideriniz algılayıcılar vb. gibi kısımların bir şekilde hazır olduğunu fakat Rover’ın Mars yüzeyinde gezinti yaparken durumunu görüntüleyecek kısımla ilgili görevi size verdiğini söyledi. Göreviniz uydular aracılığıyla alınan bir sayısal yükselti modeline (DEM, Digital Elevation Model) göre bir arazi modeli oluşturup görüntülemek. Bu görev dosyasıyla birlikte verilen data.txt dosyası araziye ait 20m aralıklarla örneklenmiş yükselti verisini tutmaktadır. Bu verinin 2B bir dizi halinde olduğunu ve değerlerin de yükseklikleri tuttuğunu görebilirsiniz. Görevinize başlarken aklınıza hemen Grafik dersinde gördüğünüz üçgen çizme yöntemleri geliyor. Bunları kullanarak bu yükseklik verisi üzerinden ile bir arazi modeli geliştireceksiniz. Yazılımınızda aşağıdaki özellikler bulunmalıdır: 1. Kamera tüm araziyi görebilecek şekilde ayarlanmalıdır. 2. Arazi y ekseni (sağ el koordinat sisteminde yukarı yön -- ki bu yön sizin yükseklik olarak kullanacağınız yöndür) etrafından sağ ve sol ok tuşları ile döndürülebilmeli. 3. Uygulamada kullanıcı farklı görüntüleme yöntemlerini seçebilmeli. ‘h’ veya ‘H’ tuşlarına basıldığında arazi yükseltiye göre farklı renklerde görüntülenmeli. Bir 3B boyutlu noktanın yüksekliği h ise: a. Yeşil, 0 < h < 50 b. Sarı, 50 <= h < 80 c. Kırmızı, 80 <=h Aynı tuşa tekrar basmak bu özelliği etkisizleştirmeli. 4. Sahnede genel bir aydınlatma için ışık kullanılmalı. Bu kısmı tamamladıktan sonra ekip lideriniz sırtınızı sıvazlayarak iyi bir iş çıkardığınızı söylüyor ve hemen arkasından Rover’ın da basit bir modelini arazi üzerinde dolaştırmak istediğini ekliyor. Şekil 1’de verilen çizime göre geliştireceğiniz bu modelin aşağıda belirtilen özelliklere sahip olması gerekmektedir: 2 Anten dönme ekseni Anten 3 Örnek alıcı kol 2 Öz-Curiosity Miras değil, araştırma. Tutucular 1 Şekil 1 Kullanılacak Rover modeli bileşenleri 1. Rover arazi üzerinde “WASD” tuşları kullanılarak hareket ettirilmelidir. Tuşların klavye üzerindeki konumları yön bilgisi olarak kullanılacaktır (W ileri, D sağa vb.). Rover hareket ederken tekerleklerinin kendi eksenlerinde dönmesi gerekmektedir. 2. Rover’ınız hareket ederken yüksekliğinin arazi yükseltisine göre değişmesi kısmı başka bir ekip üyesi tarafından geliştirilecektir. 3. Rover şekilde belirtildiği gibi bir antene sahiptir ve sürekli dönerek veri alan ve bu şekilde yüzey taraması yapan sistemin belirtilen dönme ekseni etrafında belirleyeceğiniz bir hızda dönmesi gerekmektedir. 4. Rover’ın ön tarafında bulunan tutucu kolların bağlı olduğu 1, 2 ve 3 numaralı eklemlerin sırasıyla ilk olarak ilgili eklem numarasına basılıp sonrasında da “+” ve “-“ tuşlarına basılarak aşağıya ve yukarıya hareket ettirilmesi Rover’a uzaktan erişim yapan operatör için önemli bir özelliktir ve bunun da yazılımda olması gerekmektedir. 5. Belirtilen hareketlerde sabit kalacak kısımlar siyahla renklendirilmiştir. 6. Son olarak Mars yüzeyinden örnek toplamak için kullanılan kolun tutucuları “o” tuşu ile açılacak ve kapatılacaktır. Önemli notlar: Proje yalnızca C/C++ ve OpenGL kullanılarak geliştirilecektir. Yukarıda istenen temel özelliklere ek olarak, kodunuzun düzgün bir şekilde yazılmış ve dokümante edilmiş olması gerekmektedir. Hiçbir okunabilirlik özelliği olmayan (anlamsız değişken isimleri, girintileme kullanılmayan, vb.) ve 3 dokümantasyonu (yorum satırları, programın üst bilgisi (top header), vb.) olmayan bir ödev tesliminin yukarıdaki istenen tüm özellikleri yerine getirmiş olması yüksek not alacağını garantilemez. Sizden kodunuzun bazı kısımlarını lab asistanına (Arş. Gör. Metehan ÜNAL) açıklamanız beklenebilir. Bu tek başınıza yapmanız gereken bir ödevdir ve yardımlaşmanıza izin verilmemektedir. Belirli bir düzeyde fikir alışverişi normal kabul edilir, fakat kod paylaşımı kesinlikle kopyadır. Kopya için üniversite kuralları iki taraf (alan ve veren) için de uygulanır. Bu durumda not olarak sıfır verilir. Projenin herhangi bir kısmının Internetten alınması veya bu belgede ve derste anlatılan yöntemlerin dışında bir yöntemle yapılması yine kopya olarak değerlendirilecektir. Bu belgede istenen özellikler harfiyen yerine getirildikten sonra özellik eklemek (uzaylılar, su vb.) artık sizin yaratıcılığınıza ve/veya ilginize bırakılmıştır. Son gönderim tarihi: 20 Aralık 2015, 15 Aralık 2015, 23:59, Önceden haber verilmeyen ve geçerli (belgelenebilir rapor vs.) bir nedeni olmayan geç gönderimler kabul edilmeyecektir ve not olarak sıfır verilecektir. Gönderim: Lütfen yalnızca kodunuzu içeren tek c/cpp dosyası halinde (exe, veya proje dosyaları olmadan) size belirtilecek olan email adresine gönderin.