Advertisement
andyherbert

Untitled

Jul 4th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. day = 2
  2. month = 2
  3. year = 2011
  4.  
  5. longitude = -2.162998
  6. lattitude = 53.025426
  7.  
  8. OFFICIAL = 90.8333333333333
  9. CIVIL = 96.0
  10. NAUTICAL = 102.0
  11. ASTRONOMICAL = 108.0
  12.  
  13. n = ((275 * month / 9).floor) - ((((month + 9) / 12).floor) * (1 + (year - 4 * (year / 4).floor + 2).floor / 3)) + day - 30
  14.  
  15. t_sunrise = n + ((6 - longitude / 15) / 24) # => 33.2560083277778
  16. t_sunset = n + ((18 - (longitude / 15) / 15) / 24) # => 33.7504005551852
  17.  
  18. m_sunrise = (0.9856 * t_sunrise) - 3.289 # => 29.4881218078578
  19. m_sunset = (0.9856 * t_sunset) - 3.289 # => 29.9753947871905
  20.  
  21. 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
  22. 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
  23.  
  24. l_sunrise = (l_sunrise < 0) ? l_sunrise + 360 : (l_sunrise > 360 ? l_sunrise - 360 : l_sunrise) # => 313.082398685899
  25. l_sunset = (l_sunset < 0) ? l_sunset + 360 : (l_sunset > 360 ? l_sunset - 360 : l_sunset) # => 313.583994036645
  26.  
  27. ra_sunrise = 180 / Math::PI * Math.atan(0.91764 * Math.tan(l_sunrise * Math::PI / 180)) # => -44.4567778378133
  28. ra_sunrise = (ra_sunrise < 0) ? ra_sunrise + 360 : (ra_sunrise > 360 ? ra_sunrise - 360 : ra_sunrise) # => 315.543222162187
  29.  
  30. ra_sunset = 180 / Math::PI * Math.atan(0.91764 * Math.tan(l_sunset * Math::PI / 180)) # => -43.954525410305
  31. ra_sunset = (ra_sunset < 0) ? ra_sunset + 360 : (ra_sunset > 360 ? ra_sunset - 360 : ra_sunset) # => 316.045474589695
  32.  
  33. ra_sunrise = (ra_sunrise + (l_sunrise / 90).floor * 90 - (ra_sunrise / 90).floor * 90) / 15 # => 21.0362148108124
  34. ra_sunset = (ra_sunset + (l_sunset / 90).floor * 90 - (ra_sunset / 90).floor * 90) / 15 # => 21.0696983059797
  35.  
  36. 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
  37. 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
  38.  
  39. h_sunrise = (360 - (180 / Math::PI * Math.acos(cos_h_sunrise))) / 15 # => 19.4809358408049
  40. h_sunset = (180 / Math::PI * Math.acos(cos_h_sunset)) / 15 # => 4.53390749233173
  41.  
  42. ut_sunrise = h_sunrise + ra_sunrise - (0.06571 * t_sunrise) - 6.622 - (longitude / 15) # => 31.8540982110657
  43. ut_sunrise = (ut_sunrise < 0) ? ut_sunrise + 24 : (ut_sunrise > 24 ? ut_sunrise - 24 : ut_sunrise) # => 7.85409821106569
  44.  
  45. ut_sunset = h_sunset + ra_sunset - (0.06571 * t_sunset) - 6.622 - (longitude / 15) # => 16.9080668444968
  46. ut_sunset = (ut_sunset < 0) ? ut_sunset + 24 : (ut_sunset > 24 ? ut_sunset - 24 : ut_sunset) # => 16.9080668444968
  47.  
  48. 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
  49. 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