Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- day = 2
- month = 2
- year = 2011
- longitude = -2.162998
- lattitude = 53.025426
- OFFICIAL = 90.8333333333333
- CIVIL = 96.0
- NAUTICAL = 102.0
- ASTRONOMICAL = 108.0
- n = ((275 * month / 9).floor) - ((((month + 9) / 12).floor) * (1 + (year - 4 * (year / 4).floor + 2).floor / 3)) + day - 30
- t_sunrise = n + ((6 - longitude / 15) / 24) # => 33.2560083277778
- t_sunset = n + ((18 - (longitude / 15) / 15) / 24) # => 33.7504005551852
- m_sunrise = (0.9856 * t_sunrise) - 3.289 # => 29.4881218078578
- m_sunset = (0.9856 * t_sunset) - 3.289 # => 29.9753947871905
- l_sunrise = m_sunrise + (1.916 * Math.sin(m_sunrise * Math::PI / 180)) + (0.02 * Math.sin(2 * m_sunrise * Math::PI / 180)) + 282.634 # => 313.082398685899
- l_sunset = m_sunset + (1.916 * Math.sin(m_sunset * Math::PI / 180)) + (0.02 * Math.sin(2 * m_sunset * Math::PI / 180)) + 282.634 # => 313.583994036645
- l_sunrise = (l_sunrise < 0) ? l_sunrise + 360 : (l_sunrise > 360 ? l_sunrise - 360 : l_sunrise) # => 313.082398685899
- l_sunset = (l_sunset < 0) ? l_sunset + 360 : (l_sunset > 360 ? l_sunset - 360 : l_sunset) # => 313.583994036645
- ra_sunrise = 180 / Math::PI * Math.atan(0.91764 * Math.tan(l_sunrise * Math::PI / 180)) # => -44.4567778378133
- ra_sunrise = (ra_sunrise < 0) ? ra_sunrise + 360 : (ra_sunrise > 360 ? ra_sunrise - 360 : ra_sunrise) # => 315.543222162187
- ra_sunset = 180 / Math::PI * Math.atan(0.91764 * Math.tan(l_sunset * Math::PI / 180)) # => -43.954525410305
- ra_sunset = (ra_sunset < 0) ? ra_sunset + 360 : (ra_sunset > 360 ? ra_sunset - 360 : ra_sunset) # => 316.045474589695
- ra_sunrise = (ra_sunrise + (l_sunrise / 90).floor * 90 - (ra_sunrise / 90).floor * 90) / 15 # => 21.0362148108124
- ra_sunset = (ra_sunset + (l_sunset / 90).floor * 90 - (ra_sunset / 90).floor * 90) / 15 # => 21.0696983059797
- cos_h_sunrise = (Math.cos(OFFICIAL * Math::PI / 180) - (0.39782 * Math.sin(l_sunrise * Math::PI / 180) * Math.sin(lattitude * Math::PI / 180))) / (Math.cos(Math.asin(0.39782 * Math.sin(l_sunrise * Math::PI / 180))) * Math.cos(lattitude * Math::PI / 180)) # => 0.378067616130066
- cos_h_sunset = (Math.cos(OFFICIAL * Math::PI / 180) - (0.39782 * Math.sin(l_sunset * Math::PI / 180) * Math.sin(lattitude * Math::PI / 180))) / (Math.cos(Math.asin(0.39782 * Math.sin(l_sunset * Math::PI / 180))) * Math.cos(lattitude * Math::PI / 180)) # => 0.374467220030763
- h_sunrise = (360 - (180 / Math::PI * Math.acos(cos_h_sunrise))) / 15 # => 19.4809358408049
- h_sunset = (180 / Math::PI * Math.acos(cos_h_sunset)) / 15 # => 4.53390749233173
- ut_sunrise = h_sunrise + ra_sunrise - (0.06571 * t_sunrise) - 6.622 - (longitude / 15) # => 31.8540982110657
- ut_sunrise = (ut_sunrise < 0) ? ut_sunrise + 24 : (ut_sunrise > 24 ? ut_sunrise - 24 : ut_sunrise) # => 7.85409821106569
- ut_sunset = h_sunset + ra_sunset - (0.06571 * t_sunset) - 6.622 - (longitude / 15) # => 16.9080668444968
- ut_sunset = (ut_sunset < 0) ? ut_sunset + 24 : (ut_sunset > 24 ? ut_sunset - 24 : ut_sunset) # => 16.9080668444968
- ut_sunrise = Time.utc(year, month , day, ut_sunrise.floor, ((ut_sunrise - ut_sunrise.floor) * 60).round).getlocal # => Wed Feb 02 07:51:00 +0000 2011
- ut_sunset = Time.utc(year, month , day, ut_sunset.floor, ((ut_sunset - ut_sunset.floor) * 60).round).getlocal # => Wed Feb 02 16:54:00 +0000 2011
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement