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.

Benzer belgeler