Last updated on 2 Şubat 2021
3 BOYUTLU GÖRÜNTÜ DOSYALARI PROJESİ
Kodlayan: Engin Yenice
Projede farklı türdeki 3 boyulu görüntü dosyalarından okuma yapılarak verilecek
problemlerin çözümü istenmektedir.
Amaç: Proje gerçekleştirimi ile beraber öğrencilerin dosyalama ve lineer cebir
konularında program yazabilmesi amaçlamaktadır.
Programlama Dili: Proje C dili kullanılarak gerçekleştirilecektir.
1. Problem Tanımı
Projede sizden istenen, bir klasörün içinde bulunan tüm dosyalardan ayrı ayrı 3 boyutlu nokta
verilerini okuyarak bilgileri bellekte saklamanızdır. Dosyalar .nkt uzantılı olarak
kaydedilmiştir. 3 boyutlu nokta verileri nokta verileri dosyasında aşağıda belirtilen formatta
saklanmaktadır.
# Noktalar dosya formatı
VERSION 1
ALANLAR x y z r g b
NOKTALAR 213
DATA ascii
0.93773 0.33763 0 124 23 255
0.90805 0.35641 0 114 145 123
0.81915 0.32 0 2 5 250
0.97192 0.278 0 255 255 255
# Noktalar dosya formatı
VERSION 1
ALANLAR x y z
NOKTALAR 204800
DATA binary
ø €% À àÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
áÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
ÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
ÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
Dosya 1 Dosya 2
Dosyanın ilk satırı açıklama satırı, ikinci satırı ise dosyanın sürümünü göstermektedir.
ALANLAR x y z # şeklinde belirtilmiş ise noktaların 3 boyutta bilgilerinin verildiği kabul edilir.
ALANLAR x y z r g b # şeklinde belirtilmiş ise noktaların 3 boyutta bilgilerinin yanında renk bilgiside
kırmızı yeşil mavi kodları ile birlikte verildiği kabul edilir.
NOKTALAR 213 # dosyada bulunan toplam nokta sayısını belirtir.
DATA ascii veya DATA binary satırında ise dosyadaki noktaların koordinat bilgilerinin ASCII formatında
mı yoksa BINARY formatında mı saklandığı belirtilmektedir.
Noktalar float formatında, renk bilgileri ise tam sayı formatında saklanmaktadır.
1.1 Önemli Özellikler
Bir klasörün içinde bilinmeyen sayıda dosyadan noktaları okuyup bellekte saklamanız
gerekmektedir.
Dosyadan okuma işlemi sırasında veya okuma işleminden sonra kontrol
gerçekleştirmeniz gerekmektedir. Dosyanın başlık bilgileri yukarıda verilen formatlara
uygun değilse dosyadan okuma yapılmaması ve hata mesajı verilmesi gerekir.
# Noktalar dosya formatı
VERSION 1
ALANLAR x y z r g b
NOKTALAR 213
DATA ascii
Başlık Bilgileri
Dosyadan okuma yapıldıktan sonra okunan nokta sayısı başlık kısmındaki
“NOKTALAR 123” ile belirtilen sayı ile aynı değilse uygun hata mesajı yazdırılmalıdır.
Başlık alanında “ALANLAR x y z r g b” olarak belirtilen şekilde noktalar verilmemişse
ilgili satırdaki nokta bilgisi ile ilgili hata mesajı verilmelidir.
Örneğin : 156. Nokta verisi r g b bilgileri olmadan verilmiştir.
2. İsterler
Her bir dosyadan okunan noktalar için ayrı ayrı aşağıdaki konular hesaplanmalıdır :
Birbirine en yakın nokta ve en uzak noktaların bilgileri ve nokta numaraları
Tüm noktaları içine alacak bir küpün kenar nokta bilgileri
Merkezinin 3 boyutlu koordinatı ve yarıçapı bilgileri kullanıcıdan istenilen bir kürenin
içinde kalan noktaların bilgileri ve nokta numaraları
Her bir noktanın birbirlerine olan uzaklıklarının ortalaması
Tüm istertlerin sonuçlarının “output.nkt” dosyası içerisine kayıt edilmesi
gerekmektedir. Output.nkt dosyasının formatı aşağıdaki gibi olmalıdır:
output.nkt
SECIM
Tüm dosyalar uyumludur.
SECIM
0.93773 0.33763 0 124 23 255
0.90805 0.35641 0 114 145 123
0.93773 0.33763 0 124 23 255
0.90805 0.35641 0 114 145 123
SECIM
0.93773 0.33763 0 124 23 255
0.90805 0.35641 0 114 145 123
0.81915 0.32 0 2 5 250
0.97192 0.278 0 255 255 255
…
SECIM
cx=(Kullanıcıdan Alinan Kurenin x Degeri)
cy=(Kullanıcıdan Alinan Kurenin y Degeri)
cz=(Kullanıcıdan Alinan Kurenin z Degeri)
cr=(Kullanıcıdan Alinan Kurenin r Degeri)
ALANLAR x y z r g b
NOKTALAR 213
DATA ascii
0.90805 0.35641 0 114 145 123
0.81915 0.32 0 2 5 250
...
SECIM
0.
SECIM
Tüm dosyalar uyumludur.
SECIM
ø €% À àÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
áÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
ÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
ÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
SECIM
ø €% À àÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
áÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
ÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
ÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
...
SECIM
cx=(Kullanıcıdan Alinan Kurenin x Degeri)
cy=(Kullanıcıdan Alinan Kurenin y Degeri)
cz=(Kullanıcıdan Alinan Kurenin z Degeri)
cr=(Kullanıcıdan Alinan Kurenin r Degeri)
ALANLAR x y z r g b
NOKTALAR 213
DATA binary
ø €% À àÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
áÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿáÿá
...
SECIM