Saturday, May 26, 2012

Deniz kenarı eğlencesi

Dün wikipedia'da El-Biruni'nin bundan 1000 yıl önce Dünya'nın yarıçapını nasıl ölçtüğünü öğrenince (bkz. aşağıdaki şekil) ben de yarıçapı ölçmek istedim. Bunu yapabilmek için deniz kıyısındaki bir dağın tepesinde olmak gerek. Yanımızda Dünya'nın merkez doğrultusunu (AO) bulabilmek için basit bir çekül (bir ipin ucuna taş bağlayarak yapabiliriz) (çekül yerine su terazisi de olur), bulunduğumuz nokta ile ufku birleştiren çizgiyi (AC) temsil edecek bir kalem ve kalemle çekül arasındaki açıyı (beta) ölçmek için de iletki olmalı (ya da yanınızda akıllı telefon varsa o da olur). Bulunduğumuz noktanın denizden yüksekliğini bilirsek Dünya'nın yarıçapını hesaplayabiliriz. Misal Antalya'daki Tahtalı dağı 2366m. Bulutsuz/sissiz bir günde çıkarsak ufku görebiliriz.


Biruni'nin dağın yüksekliğini nasıl bulduğunu düşündük ve benzer üçgenlerle hesaplamanın en kolay yol olduğuna karar verdik (malum, o günlerde GPS veya barometre yok). h2 yüksekliğini, d1 ve d2 mesafelerini ölçerek h yüksekliğini bulabiliriz:


Güncelleme (27.05.2012): Dağın yüksekliğini hesaplamanın daha kolay yolu (Biruni de öyle bulmuş): Herhangi bir C noktasında dağın tepesi ile yatay arasındaki açıyı (theta1) ölçelim. Dağa doğru d mesafesi boyunca ilerleyelim (D noktası), d mesafesini ve theta2 açısını ölçelim. Bu ölçümlerle dağın yüksekliğini, hatta ek olarak dağın bize ne kadar uzakta olduğunu bulabiliriz.


Friday, May 25, 2012

C Adventures

Strings in C is a problematic matter for novices like me. You usually see that your first guess is wrong and are puzzled until you discover the "C" way. The simple '=' operator does not work (except initialization) and you have to use the strcpy function. Below is an example where I assign the file's name to the variable fileName and then use it in fopen (source code here):