HARİTACI C-64

Program dökümü: HARITA

Birinci sayımızı okuyan okurlarımızın açtığı telefonlar ve yazdıkları mektuplar sonucunda, en çok beğeni toplayıp ilgi çeken programın DÜNYA programı olduğunu anladık. O sayımızı okuyamamış okurlarımız için söyleyelim; DÜNYA programı ile dünyanın çeşitli açılardan görünüşünü küresel olarak çizmek mümkün oluyordu. Sizin vereceğiniz eksen etrafındaki dönüşü belirten açı ile uzaydaki eğikliği belirten bir diğer açı sonucunda oluşan küresel dünya görüntüsü karaları, denizleri, enlem ve boylamlarıyla beraber çiziliyordu. İsterseniz tek renkli, isterseniz çok renkli...

Bu sayımızda da aynı temele dayalı, ancak küresel görüntü yerine düz Dünya haritaları üreten bir program veriyoruz. Bu arada kendimizi bir açıklama yapmak zorunda hissediyoruz. Bu programın çalışması için, SIMON'S BASIC adlı BASIC ilerletme programına sahip olmanız gerekiyor. DÜNYA programını yazan bazı okurlarımız bize başvurarak programı çalıştıramadıklarından yakınıyorlardı. Lütfen bu hataya düşmeyin! Eğer C-64'e 111 yeni komut kazandıran bu programa sahip değilseniz, COMMODORE 64 bayinizden SIMON'S BASIC isteyiniz. İlerideki sayılarımızda da bu yeni emirleri kullanan programlar yayınlamaya devam edeceğiz.

Şimdi gelelim programımıza... DÜNYA programına sahip olanlar şanslı! Programımızın 4000 numaralı satırından başlayan DATA satırları aynen DÜNYA programında da vardı. O programdaki 4000'den önce gelen satırları silip bu programın hesaplamalarının yapıldığı 400-3520 arası satırları yazarsanız HARİTA programına kolayca kavuşmuş olursunuz. Üstelik bu programın hesaplama rutinleri daha kısa olduğu için, çizimin bitmesi DÜNYA programına nazaran çok daha kısa sürmektedir.

Şimdi programın yaptığı çizimler ve her birinin arkasında yatan mantığı görelim, sonra da programı satır satır açıklayalım.

Hepimizin okul yıllarında kullandığı atlaslardaki haritaların bazılarının garip biçimleri vardır. Kimisi kenarları doğru genişlerken, kimisinde uzaklıklar çarpıtılmış gibi görünür. Bunu, size sunduğumuz örneklerde de görebilirsiniz. Neden olduğunu açıklamaya çalışalım. Dünyamızın yuvarlak olduğu Macellan'dan bu yana bilinmektedir; daha aksini ispat edebilen çıkmadı... Ancak bir harita çizimi sırasında bizim yaptığımız, bu yuvarlak

yüzeyi düz bir kâğıda geçirmeye çalışmak... Eğer hâlâ bundaki garipliği anlamadıysanız size bir önerimiz var: Bir portakalı ikiye ayırın, içlerini boşaltın ve elde ettiğiniz içi boş yarım küre şeklindeki portakal kabuklarını bozmadan, kesmeden, buruşturmadan masanın üzerinde düz bir hale getirmeye çalışın. Nasıl? Olmuyor değil mi? Muhakkak bir yeri ya yırtılıyor, ya da büzüşüyor.

İşte yuvarlak dünya yüzeyini kâğıda geçirmek de bu kadar zordur. Bazı oranlar muhakkak bozulacaktır. Önemli olan hangilerinin bozulacağına karar vermektir. İşte burada harita uzmanları işin içine giriyor. Bu uzmanlar günümüze kadar birçok harita çizim yöntemi geliştirmişlerdir. Bizim programımız bunlardan beş tanesini çizebilmekte, isterseniz tek renkli, isterseniz çok renkli!

Bunlardan birincisi olan 'DÜZ HARİTA'da meridyenler ve paraleller arasındaki uzaklıklar korunur. Ancak gerçekte kutuplara yaklaştıkça birbirine yaklaşan meridyenleri birbirine paralel tutmakla, ekvatordan kutuplara gidildikçe gerçek dünya üzerindeki uzaklıkları olduğundan daha uzun göstermiş oluruz. Bunun bir diğer sonucu da, kutuplara yaklaşıldıkça alanların da abartılmış olmasıdır.

Eğer paralel daireleri arasındaki uzaklığı kutuplara yaklaştıkça belli bir oranda küçültürsek, bu alan bozulmasını engelleyebiliriz. Buna da 'BEHRMANN PROJEKSİYONU' adı verilir.

Bu projeksiyon türünü uygularken, ekvatora denk gelen yerlerdeki oranlara dokunmaz, onları olduğu gibi bırakırsak, 'LAMBERT PROJEKSİYONU' uygulamış oluruz. Bu çizimi şöyle de açıklayabiliriz. Dünyanın etrafında eksene paralel ve ekvatorla aynı çapa sahip bir silindir düşünün. Şimdi de dünya üzerindeki her noktayı, ekvator düzlemine paralel olarak bu silindire taşıyın (projeksiyonunu yapın). Silindirli, açtığınız zaman oluşacak harita, Lambert yöntemi ile çizilmiş olacaktır.

Eğer meridyen ve paralellerin kesişim açılarının bozulmasını istemiyorsanız, 'MERCATOR' yöntemini kullanmalısınız. Gerçekte değişen açıları, kâğıtta 90° derece olarak gösterdiğimiz için, alanları gerçek konumlarında tutmaya çalıştığımızda korkunç bir alan bozulması ortaya çıkacaktır. Böylece, aslında dünya üzerinde bir yay çizen rota eğrisi, kâğıt üzerinde düz bir çizgi olarak görünebilmektedir.

Son harita türümüz olan 'MERKEZİ PROJEKSİYON' ise en büyük alan bozulmasına sahip harita biçimidir. Çizimi şu şekilde açıklayabiliriz. Gene yukarıdaki gibi, dünyayı çevreleyen bir silindir düşünelim. Şimdi de dünyanın merkezine bir lamba yerleştirelim. Karaların silindir üzerinde oluşturacakları gölgeler, bu tür haritayı oluşturacaktır.

Bu haritaların yanı sıra, Dünyayı düz bir alana çizmek yerine, dilim dilim çizmeyi tercih eden yöntemler de vardır. Bu durumda hem uzunluklar hem de alanlar korunmuş olur. Ancak harita düz(!) olmaz.

Şimdi de satırlarımızı açıklayalım:

SATIR 400: Bilgisayar grafik modundan çıkıp büyük harf/grafik karakterleri moduna giriyor. Daha sonra çizim bittikten sonra programı yeniden çalıştırınca grafik ekranın kapanması için bu gerekli.

SATIR 500: Tek renkli çizime göre bazı değişkenler saptanıyor. Birincisi, ekran ortasının X koordinatının değerini, diğer ikisi ise çizim yapılacak rengi gösteriyor.

SATIR 510-516: Kullanıcının hangi grafik türünü tercih ettiği soruluyor. Tek renkli çizim yaptığınızda, eğer MPS801 ve MPS803 yazıcınız varsa haritanızı bastırabilirsiniz. Bunun için 2999 numaralı satırın başına COPY komutunu eklemeniz gerekir. Eğer çok renkli çizim yaparsanız, haritanız hiç de güzel olmayacaktır. Renkli çizim seçildiğinde değişkenler yeniden tanımlanmaktadır.

SATIR 611-620: Çizimi yapılacak haritanın seçimi yapılıyor. 1 numaralı harita öneriliyor.

SATIR 730: Açık gri üzerine kahverengi seçiliyor. Eğer çok renkli çizim tercih edilmiş ise, bu değerler üç değişik renge çevriliyor.

SATIR 800-840: İşte tüm karaların çiziminin yapıldığı bölüm. Önce kaç tane koordinat okunacağı DATA satırından okunuyor (N değişkeni ile) ve ilk koordinatlar da L ve B içine yerleşiyor. Ekranda toplam 22 kara parçası olacağı için bu işlemler 22'lik bir döngü içine sokuluyor. Okunan ilk koordinatlar 3000 numaralı satırdan başlayan bir alt programda ekran koordinatlarına çevriliyor, seçilen harita biçimi gözönüne alınarak. Daha sonra da, arkadan gelen N tane koordinat daha okunup ekran çizimleri yapılıyor.

SATIR 845-855: Kara parçasının çizimi bittiğinde sıra içinin doldurulmasına geliyor. Kaç değişik referans koordinatı olduğu hesaplanıyor ve sonra, doldurma işlemleri gerçekleşiyor.

SATIR 1000-1020: Artık sıra merdiyenlerin çizilmesine geldi. Önce alt ve üst noktaların hangi ekran koordinatlarına eşdeğer olduğu hesaplanıyor ve çizim yapılıyor.

SATIR 1100-1120: Şimdi de paralelleri çiziliyor. Tabii her birinin ekran koordinatları, seçilen harita biçimine göre hesaplanıyor.

SATIR 1100-1200: Çizilen haritalar genellikle ekrandan daha küçük olduğu için, alt ve üst kısımda kalan boşlukların doldurulması gerekiyor. Tek veya çok renk kullanımına ve seçilen harita türüne göre boyama işlemleri yapılıyor.

SATIR 3000-3020: Bu altprogram, enlem ve boylamların ekran koordinatlarına çeviriyor. Önce N koordinatı bulunuyor ve sonra da seçilen harita türüne göre Y koordinatlarını bulan ikinci bir altprograma atlanıyor.

Programımızın hoşunuza gittiğini umarız...

SATIR 3100: Düz haritanın işlemleri. SATIR 3200: Lambert projeksiyonu hesaplamaları. SATIR 3300: Behrmann projeksiyonu hesaplamaları. SATIR 3400-3420: Mercator çizimi için gereken işlemler. SATIR 3500-3520: Merkezi projeksiyon ile ilgili hesaplamalar.

SATIR 4000-4188: Kara parçalarının enlem ve boylamlarının kodlanmış değerleri.

SATIR 4000-4007: Güney Amerika SATIR 4100-4106: Afrika SATIR 4107-4108: Madagaskar SATIR 4109-4116: Antarktika SATIR 4117-4121: Avustralya SATIR 4122-4124: Yeni Zelanda SATIR 4125-4127: Yeni Gine SATIR 4128-4129: Borneo SATIR 4130-4131: Sumatra SATIR 4132-4143: Kuzey Amerika SATIR 4144-4145: Newfoundland SATIR 4146-4147: Küba SATIR 4148-4150: Baffin SATIR 4151-4152: Victoria SATIR 4153-4154: Ellismere SATIR 4155-4157: Grönland SATIR 4158-4177: Avrasya SATIR 4178-4179: İngiltere SATIR 4180-4181: İrlanda SATIR 4182-4183: İzlanda SATIR 4184-4186: Japonya SATIR 4187-4188: Sri Lanka

Bu yazıdaki programlar

Dergideki dökümlerden çıkarıldı; satırlar derginin kontrol toplamlarıyla doğrulandı ve programlar VICE emülatöründe denendi. Tarayıcıdaki C64'te çalıştırabilir, indirip bir emülatöre sürükleyip bırakabilir ya da gerçek bir C64'te LOAD "AD",8,1 ile yükleyebilirsiniz. "Sorun bulundu" yazanlarda bazı satırlar okunamadı ya da tutmadı; düzeltilmiş bir sürümünüz varsa contact@coze.org adresine gönderin.