Xullas bir ishda qiziq holat chiqib qoldi. Dastur kunduzi va kechasi avtomatik ranglarini moslashi kerak. Odatda ko‘pchilik bu holatda belgilangan aniq vaqtga moslab qo‘yishi mumkin. Lekin tabiat hodisalari doim ham bu bilan kelisha olmaydi. Ya’ni qishgi va yozgi vaqt rejimlari quyosh chiqishi farq qiladi. Ho‘sh bu uchun alohida api kerakmi? Aslida shart emas. Chunki Quyosh va osmon jismlarining harakatini matematik hisoblash prinsiplari ancha oldin shakllangan. Mirzo Ulug‘bekning mural kavdrantiga o'xshash faxriy sekstanti ham mantiqan shu kabi astronomik kuzatuv va trigonometrik prinsiplarga tayanadi.
Bizning vazifamiz esa buning yonida ancha sodda. Quyosh chiqishi va botishini hisoblash uchun sana, foydalanuvchining geografik kengligi, geografik uzunligi va vaqt zonasini bilish kifoya.
Avval sananing yilning nechanchi kuni ekanini topamiz. Masalan: 19-avgust yilning 231-kuni. Shu qiymat orqali Yerning Quyosh atrofidagi yillik siklning qaysi nuqtasida ekanini taxminiy burchakka aylantiramiz. Undan esa Quyoshning o‘sha kundagi og‘ish burchagi (solar declination) hisoblanadi. Aynan shu og‘ish yozda kunlar uzunroq, qishda esa qisqaroq bo‘lishining asosiy sabablaridan biri.
Shu bilan birga, Quyoshning osmondagi haqiqiy harakati bilan biz foydalanadigan soat orasidagi vaqt farqi ham hisobga olinadi. Yer Quyosh atrofida ideal aylana bo‘ylab harakatlanmaydi uning aylanish o‘qi ham qiya. Shu sababli Quyosh har kuni aynan soat 12:00 da osmonning eng yuqori nuqtasiga kelmaydi yil davomida bu vaqt bir necha minut oldinga yoki orqaga siljib turadi. Hisoblashda ana shu farq ham inobatga olinadi.
Yana bir qiziq jihati Quyosh chiqishi va botishini hisoblashda ufq chegarasi aynan 90° deb olinmaydi. Nazariy jihatdan ufq 90° hisoblanadi. Ammo Quyosh chiqishini uning markazi emas diskining yuqori cheti ufqda ko‘rina boshlagan payt deb hisoblaymiz. Quyosh diskining radiusi osmonda taxminan 0.266° ni egallaydi. Bunga atmosfera yorug‘likni sindirib Quyoshni haqiqiy joyidan biroz balandroq ko‘rsatadigan taxminan 0.567° refraksiya ham qo‘shiladi. Shu ikki ta’sirni ham ufqning nazariy 90° chegarasiga qo‘shsak, hisoblash uchun 90.833° kelib chiqadi. Ya’ni bu qiymat shunchaki tanlangan son emas uning taxminan 0.266° qismi Quyosh diskining radiusi 0.567° qismi esa atmosferadagi yorug‘lik sinishi hisobidan paydo bo‘ladi.
Keyingi qadamda geografik kenglik Quyoshning og‘ish burchagi va mana shu ufq chegarasini trigonometrik formulaga qo‘yib, Quyosh chiqishi yoki botishi uchun Yer yana qancha burchakka aylanishi kerakligini hisoblaymiz. Topilgan burchak esa keyingi bosqichda vaqtga aylantiriladi.
Burchakni vaqtga aylantirish juda oson. Yer 24 soatda o‘z o‘qi atrofida 360° aylanadi. Demak bir soatda 15°, har bir gradus uchun esa taxminan 4 daqiqa vaqt ketadi.
Shundan keyin geografik uzunlik, vaqt zonasi va yuqorida hisoblangan Quyosh bilan oddiy soat orasidagi vaqt farqini hisobga olib, Quyoshning o‘sha hududdagi pik vaqtini. Ya’ni kun davomida osmondagi eng yuqori nuqtaga keladigan vaqtini topamiz.
Oldingi qadamda topilgan burchakni 4 ga ko‘paytirib, uni daqiqaga aylantiramiz. Bu bizga Quyoshning pik vaqtidan ufqqacha qancha vaqt borligini beradi. Shu vaqtni pik vaqtdan ayirsak Quyosh chiqishi, qo‘shsak esa Quyosh botishi vaqtini olamiz.
Masalan: Toshkentda ma’lum bir kunda Quyoshning pik vaqti 12:27, pik nuqtadan ufqqacha bo‘lgan vaqt esa taxminan 6 soat 51 minut chiqsa:
12:27 − 6:51 = Quyosh chiqishi: 05:36
12:27 + 6:51 = Quyosh botishi: 19:18
Albatta, bu observatoriya darajasida sekundigacha mutlaq aniqlik beradigan hisob emas. Atmosferada yorug‘likning sinishi, joyning dengiz sathidan balandligi va ufqning haqiqiy ko‘rinishi kabi omillar natijani biroz o‘zgartirishi mumkin. Lekin interfeysni kunduzgi va tungi rejimga avtomatik o‘tkazish uchun bunday aniqlik bemalol yetadi.
Mindey o‘ylab qarasak ba’zida oddiy ko‘ringan UI muammosining ortidan bizni sohadan uzoqdek ko'ringan astronomiya chiqib keladi.
Kod:
https://gist.github.com/yetimdasturchi/8973a67dd7df53870b748b125e01932b@yetimdasturchi