Yerel vakit hesaplama

Yerel vakit hesaplama

Amaç: Takvimlerde görürsünüz,  imsak, güneş, öğle, ikindi, akşam, yatsı vakitleri yazar. Bu vakitler bir yerdeki güneşin tam tepede olma süresini hesapladıktan sonra çıkan sonuçla hesaplanır.  Peki bu ihtiyaç neden? Takvim üreticisi değilsiniz belki, hatta hazır hesaplanmışı var diyanet’in sitesinde. Hazır hesaplanmışı kullanmakta bir çözüm elbette. Fakat verilen kordinata göre bu işi otomatiğe bağlamak ilginizi çekebilir. Hazır hesaplanmış verileri bilgisayar programınızın veritabanına aktarmak kolay olabilir ama mikroişlemci ile elektronik bir projenizde mevcut hafızanıza sığdırmak bir problemdir. Extra hafıza kullanmak istemeyebilirsiniz. Bu yüzden yazdığımız programla bu işi otomatiğe bağlayacağız. Projemizde sadece kordinat vereceğiz o bize öncelikle o kordinatta güneşin tepede olduğu saati verecek. Bu saatten yola çıkarak diğer vakitleri hesaplayacağız. Bu yöntem en çok vakitmatik projelerinde kullanılır. Vakitmatik dediklerimiz camilerde namaz saatlerini gösteren devrelerdir.

Öncelikle coğrafya bilgilerimizi tazeleyelim:
Boylam(meridyen) nedir: Esasında dünyada çizgi-mizgi yok.  Fakat bunlar bilim adamlarının okey oynarken uydurduğu bir şey değildir. Dünya üzerinde kordinat ve saat farkı gibi hesaplamaları yapabilmek için enlem ve boylam çizgilerinin olduğunu varsaymışlardır. Şekilde görüleceği üzere yatay çizgiler enlem, dikey çizgiler ise boylamdır. Başlangıç meridyeni greenwich (tıkla gör bana sorma)dir. Greenwich’in doğusunda 180 ve batısında da 180 olmak üzere toplam 360 adet boylam(meridyen) vardır.

Yan yana olan iki meridyen arasında 4 dakika vardır. Bu süre güneşin 2 meridyen arası yolcuğundaki süredir. Yoksa taksiyle gidebileceğiniz bir süre değildir. Bu süreyi nerenden uydurdun? Gibi bir soru sorabilirsiniz, sormayada bilirsiniz. Ben sormuş olabileceğinizi de hesaba katarak hemen cevaplayım. (dikkat edin cevaplamayadabilirdim.) Uzatmayım… Güneş dünyamızın etrafında 24 saatte tur atıyor. 360 adet boylam var. 0. boylamdan başladı bütün boylamları geçti tekrar 0. boylama geldiğinde 24 saat geçmiş oluyor yani. O halde 24/360 yaparsak her meridyende ne kadar oyalandığını saat cinsinden buluruz. 24/360=0.0666 saat eder. Bana pek bişey ifade etmediği gibi sizede ifade ettiğini sanmıyorum. Bence 24 saati dakikaya çevirelim tekrar hesaplayalım. Bir gün 24*60=1440 dakika eder. 1440/360=4 çıktı. Gördünüz mü güneşin 2 meridyenin arası oyalanma süresi neden 4 dakika imiş.
Örnek olarak güneş başlangıç meridyeninde yani 0. meridyeninde tepe noktasındayken kaç dakika sonra doğu 5. meridyeninde tepe noktada olur. (tepe nokta dediğimiz şey öğlen saati demektir.) 5. meridyen ile 0. meridyen arasında 5-0=5 meridyen olduğuna göre ve her meridyenin arasında 4dk olduğuna göre 5*4=20dakika eder.

http://i101.photobucket.com/albums/m75/efsane_2006/cografya/Dsekli.jpghttp://www.tugrulhelvaci.com/wp-content/uploads/turkiye_enlem_boylam_haritasi.jpg
Not: Güzel ülkemiz 26-45 dogu boylamı arasında yer alır.

Türkiyedeki illerin enlem ve boylamları:

http://www.neleryokki.org/egitim/illerenlemboylam.jpg

Örnek olarak güzel memleketim Tokat 36:43″ doğu boylamındadır. 36 kısmı derecedir. Yani dünya 360 derece olduğuna göre 360 adet boylam vardır. Bu boylamlardan 180’i doğu, 180’i de batıdır. Tokat doğu tarafında 36. boylamda bir yerlerdeymiş ama hangi bir yerlerdeymiş? O da 43 kısmında ortaya çıkıyor. 36. boylama git ordan 43 dakika daha doğuya git orda kime sorsan söyler Tokatı…

Soru: Eğer Tokatta öğlen ezanı saat 13:00 da okunuyorsa, istanbulda kaçta okunur?
Cevap: Bu soruyu Türkçe hocamız Mehmet Kıyak’a sorsaydık anlatım bozukluğu var diye cevaplamazdı bile. “Eğer” diye cümle mi başlarmış?
Asıl cevap: Tokatın boylamı: 36:43 tür, İstanbulun boylamı 28:58 dir.(tablodaki 28:98’e bakıpta aldanmayın 98 diye bir dakika yoktur en fazla 59 olur yanlış yazmışlar)
Burdan farkedeceğiniz üzere gerçek hayattaki sorulada hiç bir veri belli değildir biz buluruz. Öss sınavında sorulsa bu soru Tokatın ve İstanbulun boylamlarınıda verirlerdi. Ama gerçek hayat acımasızdır. Herşeyi bizim bulmamızı ister.
Neyse… Tokat İstanbuldan daha doğuda, İstanbul ise Tokattan daha batıdadır. Tokattan İstanbulu çıkartırsak aradaki farkı bulabiliriz.
36:43
28:58
——–
O da ne 43 ten 58 çıkmaz o halde komşu 36 dan bir saat(60dk) çalalım. Son durum böyle olacak:
35:103
28:58
——–
7:45 eder.
7*4=28dk cepte peki 45’i ne yapacağız? Bunu kitaplarda görmeniz zor. Okulda da anlatmazlar. Konuyu anlatıyım işim bitsin diye düşünür hocalar. Anlattıkları şeyler teoride kalır. Verdikleri örneklerde küsürat yoktur. 40 doğu boylamı ile 30 doğu boylamı örneği verirler 10*4=40 dakika var der geçersiniz. Bu konuya açıklık getireyim.
Not: 36:43 boylamının 36 kısmı derecedir. 43 ise dakikadır. 60 dakika 1 derece eder. Yani derecenin yanındaki dakika küsürattır. 43 dakika kaç derece eder? İçler dışlar çarpımı ile orantı yapıp hesaplayalım.
60dk……….1 deree ettiğine göre
43dk……….x derece eder?
———————————-
x=(43*1)/60=0.71derece eder. Yani tokatın boylamına 36 derece 43 dakika demek yerine 36,71 derece diyebiliriz. Çünkü yazılım yaparken böyle kullanmamız gerekiyor.
İstanbul için 28 derece 58  dakika yerine direkt 28,96 (58/60=0,96derece eder) derece diyebiliriz.

O halde probleme tekrar dönelim. Tokattan istanbulu çıkarıyoruz:
derece farkı=(36,71)-(28,96)=7,75 derece eder.
Bize dakika cinsinden fark lazım o halde:  7,75*4=31 dakika eder.
Soruda bize tam olarak imam kaçta ezan okur diye bir soru sorduğu için:
13:00 saatine 31 dakika ekliyoruz sonuç: 13:31 çıkıyor. Ama hocanın işine karışılmaz belkide 40 geçe okuyacak 🙂

Soruyu çözdük ama tam tersi sorulsaydı. Yani daha verilen ilin batısından değilde doğusundan bir ile hesap yapmamızı isteseydiler ufak bir değişiklik yapmamız gerkirdi.

Güneş Tokat tan 41:17 boylamındaki Erzuruma kaç dakikada ulaşır? Bu sefer Tokattan Erzurumu değil Erzurumdan tokatı çıkartmamız gerekir. Haa bunların ikiside doğu boylamları. Ya biri doğu biri batı olsaydı ne olacaktı?
20 batı boylamı ile 30 doğu boylamı arasında 20+30=50 boylam fark vardır. Bu bilgiyi kullanmayacağız ama cebinizde dursun.

Şimdi bu işi yazılım ile halledelim. Ben PHP kullandım siz istediğiniz dile çevirebilirsiniz.

<html>
<head>
<title>Yerel saat ve vakit hesaplama projesi</title>
</head>
<body>
vakitmatik

<?php
$adana="35:18";
$adiyaman="38:17";
$afyon="30:33";
$agri="43:03";
$aksaray="33:04";
$amasya="35:50";
$ankara="32:52";
$antakya="30:09";
$antalya="30:42";
$ardahan="42:41";
$artvin="41:49";
$aydin="27:51";
$ayvalik="26:42";
$bafra="35:54";
$balikesir="27:52";
$bartin="32:20";
$batman="41:07";
$bayburt="40:15";
$bilecik="29:59";
$bingol="40:29";
$bitlis="42:06";
$bulanik="42:15";
$burdur="30:17";
$bursa="29:04";
$bodrum="27:25";
$bolu="31:37";
$bolvadin="31:20";
$çanakkale="26:24";
$çankiri="33:37";
$çorum="38:27";
$denizli="29:06";
$diyarbakir="40:14";
$dogubeyazit="44:40";
$edirne="26:34";
$edremit="27:00";
$elazig="39:14";
$erzincan="39:29";
$erzurum="41:17";
$eskisehir="30:32";
$fatsa="37:29";
$gaziantep="37:22";
$giresun="38:24";
$golcuk="29:48";
$gumuþhane="39:29";
$hakkari="43:45";
$hatay="36:12";
$igdir="44:02";
$isparta="30:33";
$içel="34:38";
$inebolu="33:44";
$iskenderun="38:11";
$istanbul="28:58";
$izmir="27:09";
$k_maraþ="36:56";
$karabuk="32:37";
$karaman="33:14";
$kars="43:05";
$kastamonu="33:47";
$kayseri="35:30";
$kirikkale="33:31";
$kirklareli="27:12";
$kirþehir="34:10";
$kilis="37:05";
$kocaeli="29:55";
$konya="32:31";
$kutahya="29:59";
$malatya="38:19";
$malazgirt="42:31";
$manisa="27:26";
$mardin="40:44";
$mugla="38:22";
$muþ="41:30";
$nevþehir="34:43";
$nigde="34:42";
$ordu="37:53";
$osmaniye="36:14";
$rize="40:31";
$sakarya="30:24";
$samsun="36:20";
$savaþtepe="37:38";
$siirt="41:57";
$sinop="35:09";
$sivas="37:02";
$soma="27:38";
$tarsus="34:58";
$tekirdag="27:31";
$tokat="36:43";
$trabzon="39:43";
$tunceli="39:32";
$urfa="38:46";
$uþak="29:25";
$van="43:20";
$yalova="29:15";
$yozgat="34:48";
$zonguldak="31:49";

//konya için
$ref_imsak="04:01";
$ref_gunes="05:42";
$ref_ogle="13:04";
$ref_ikindi="16:52";
$ref_aksam="20:13";
$ref_yatsi="21:45";

//tokat için
$ref_imsak="03:29";
$ref_gunes="05:17";
$ref_ogle="12:47";
$ref_ikindi="16:41";
$ref_aksam="20:05";
$ref_yatsi="21:44";

$referans_paralel=$konya;
$hedef_paralel=$tokat;

$referans_paralel=$tokat;
$hedef_paralel=$konya;

function paralel_farki($derece1,$derece2)
{
$derece1 = explode(":",$derece1);
$derece2 = explode(":",$derece2);
$sonSaat = $derece1['0'] - $derece2['0'];

if ($derece1['1'] < $derece2['1'])
{
$derece1['1'] = $derece1['1'] + 60;
$sonSaat--;
}

$sonDakika = $derece1['1'] - $derece2['1'];

$yuzde_cevir=($sonDakika*100)/60;
$yuzde_cevir=$yuzde_cevir/100;
$sonSaat = $sonSaat + $yuzde_cevir;

return $sonSaat;
}

$paralel_farki=paralel_farki($referans_paralel,$hedef_paralel);

echo "$referans_paralel ile $hedef_paralel arası boylam farkı: $paralel_farki";
echo "
";

function dakika_farki($derece_farki,$hangi_vakit)
{

if($hangi_vakit=="imsak")
{
$dakika_farki=$derece_farki*5.3; //dakika değeri
}

if($hangi_vakit=="gunes")
{
$dakika_farki=$derece_farki*4.7; //dakika değeri
}

if($hangi_vakit=="ogle")
{
$dakika_farki=$derece_farki*4; //dakika değeri
}

if($hangi_vakit=="ikindi")
{
$dakika_farki=$derece_farki*3.511; //dakika değeri
}

if($hangi_vakit=="aksam")
{
$dakika_farki=$derece_farki*3.2; //dakika değeri
}

if($hangi_vakit=="yatsi")
{
$dakika_farki=$derece_farki*2.6; //dakika değeri
}

//$dakika_farki=round($dakika_farki); //yuvarlıyoruz

return $dakika_farki;

}

$imsak_dakika_farki = dakika_farki($paralel_farki,"imsak");
$gunes_dakika_farki = dakika_farki($paralel_farki,"gunes");
$ogle_dakika_farki = dakika_farki($paralel_farki,"ogle");
$ikindi_dakika_farki = dakika_farki($paralel_farki,"ikindi");
$aksam_dakika_farki = dakika_farki($paralel_farki,"aksam");
$yatsi_dakika_farki = dakika_farki($paralel_farki,"yatsi");

echo "
-----------------------------
";
echo "Dakika farkları:";
echo "
-----------------------------
";

echo "
İmsak: $imsak_dakika_farki";
echo "
Güneş: $gunes_dakika_farki";
echo "
Öğle: $ogle_dakika_farki";
echo "
İkindi: $ikindi_dakika_farki";
echo "
Akşam: $aksam_dakika_farki";
echo "
Yatsı: $yatsi_dakika_farki";

function eklenmis_vakit($ref_vakit,$dakika_farki)
{

if($dakika_farki > 0)
{

$ref_vakit = explode(":",$ref_vakit);

$sonDakika = $ref_vakit['1'] + $dakika_farki;

$sonDakika=round($sonDakika);

if($sonDakika > 60)
{
$sonDakika = $sonDakika - 60;
$ref_vakit[0]++;
}

$vakit_goster="$ref_vakit[0]".":"."$sonDakika";

}

else
{

$dakika_farki = $dakika_farki * (-1); // negatif bir sayı -1 ile çarpılırsa pozitif olur

$ref_vakit = explode(":",$ref_vakit);

$sonDakika = $ref_vakit['1'] - $dakika_farki; //toplama yerine çýkartýyoruz

$sonDakika=round($sonDakika); // bunu yazmayınca sapıtıyor konya tokat arası 19:60 gibi bir değer üretebiliyor

if($sonDakika < 0)
{
$sonDakika = $sonDakika + 60;
$ref_vakit[0]--;
}

$sonDakika=round($sonDakika);

$vakit_goster="$ref_vakit[0]".":"."$sonDakika";

}

echo "$vakit_goster"."
";

}

echo "

";
echo "
-----------------------------
";
echo "hesaplanmış vakit:";
echo "
-----------------------------
";

echo "imsak : "; echo eklenmis_vakit($ref_imsak,$imsak_dakika_farki);
echo "güneş : "; echo eklenmis_vakit($ref_gunes,$gunes_dakika_farki);
echo "öğle : "; echo eklenmis_vakit($ref_ogle,$ogle_dakika_farki);
echo "ikindi : "; echo eklenmis_vakit($ref_ikindi,$ikindi_dakika_farki);
echo "akşam : "; echo eklenmis_vakit($ref_aksam,$aksam_dakika_farki);
echo "yatsı : "; echo eklenmis_vakit($ref_yatsi,$yatsi_dakika_farki);

?>
</body>
</html>

Bir Cevap Yazın