Blame demo/solar_path.dem

Packit 0986c0
#
Packit 0986c0
# Calculate solar path in horizontal coordinates (altitude, azimuth)
Packit 0986c0
# Use gnuplot's polar mode with inverted R range so that the horizon
Packit 0986c0
# (altitude 0°) is at the perimeter and altitude 90° is at the center.
Packit 0986c0
#
Packit 0986c0
Packit 0986c0
save_encoding = GPVAL_ENCODING
Packit 0986c0
set encoding utf8
Packit 0986c0
Packit 0986c0
set label 1 at screen 0.02, 0.95 font ":Bold,10"
Packit 0986c0
set label 1 "Solar path at\nLatitude 47.67 N"
Packit 0986c0
set timestamp "Seattle - %d %b %Y" offset 1,1
Packit 0986c0
Packit 0986c0
# Set up equations for Azimuth(t) and Altitude(t) as a function of
Packit 0986c0
# t = seconds  before or after solar noon on the day of interest
Packit 0986c0
# at a particular latitude.
Packit 0986c0
# Here we calculate for Seattle (47.67 N  -122.28 W)
Packit 0986c0
Packit 0986c0
  Latitude = 47.67
Packit 0986c0
  Longitude = -122.28
Packit 0986c0
  Date = "21-12-2016"
Packit 0986c0
  call 'solar_params.dem'
Packit 0986c0
Packit 0986c0
  array dummy[150]
Packit 0986c0
  array winter_alt[150]; array winter_azi[150]
Packit 0986c0
  time = -12 * Hour
Packit 0986c0
  do for [t = 1 : 150] {
Packit 0986c0
	winter_alt[t] = Altitude(time)
Packit 0986c0
	winter_azi[t] = Azimuth(time)
Packit 0986c0
	time = time + 10 * Minute
Packit 0986c0
  }
Packit 0986c0
  print Date, "    sunrise ", sunrise, "   sunset ", sunset, "    sunlight ", sunlight
Packit 0986c0
Packit 0986c0
  Date = "22-06-2017"
Packit 0986c0
  call 'solar_params.dem'
Packit 0986c0
Packit 0986c0
  array summer_alt[150]; array summer_azi[150]
Packit 0986c0
  time = -12 * Hour
Packit 0986c0
  do for [t = 1 : 150] {
Packit 0986c0
	summer_alt[t] = Altitude(time)
Packit 0986c0
	summer_azi[t] = Azimuth(time)
Packit 0986c0
	time = time + 10 * Minute
Packit 0986c0
  }
Packit 0986c0
  print Date, "    sunrise ", sunrise, "   sunset ", sunset, "    sunlight ", sunlight
Packit 0986c0
Packit 0986c0
  Date = strftime("%d-%m-%Y",time(0) + Day*Longitude/360.)
Packit 0986c0
  call 'solar_params.dem'
Packit 0986c0
Packit 0986c0
  array today_alt[150]; array today_azi[150]
Packit 0986c0
  time = -12 * Hour
Packit 0986c0
  do for [t = 1 : 150] {
Packit 0986c0
	today_alt[t] = Altitude(time)
Packit 0986c0
	today_azi[t] = Azimuth(time)
Packit 0986c0
	dummy[t] = time
Packit 0986c0
	time = time + 10 * Minute
Packit 0986c0
  }
Packit 0986c0
  print Date, "    sunrise ", sunrise, "   sunset ", sunset, "    sunlight ", sunlight
Packit 0986c0
  today = "Today ☉  \n".sunlight."\nof sunlight"
Packit 0986c0
Packit 0986c0
#
Packit 0986c0
set angle degrees
Packit 0986c0
Packit 0986c0
set polar
Packit 0986c0
set grid polar
Packit 0986c0
unset xtics 
Packit 0986c0
unset ytics
Packit 0986c0
unset border
Packit 0986c0
unset key
Packit 0986c0
set size square
Packit 0986c0
set rrange [90:0]
Packit 0986c0
Packit 0986c0
set ttics add ("N" 0, "E" 90, "S" 180, "W" -90) font ":Bold"
Packit 0986c0
set rtics format "%.0f°"
Packit 0986c0
set rtics 30
Packit 0986c0
set rlabel "Altitude" offset -2 font ":Bold"
Packit 0986c0
set border polar
Packit 0986c0
set style data lines
Packit 0986c0
Packit 0986c0
# By convention North (azimuth 0°) is at the top with angles increasing clockwise
Packit 0986c0
set theta top clockwise
Packit 0986c0
Packit 0986c0
plot dummy using (winter_azi[$1]):(winter_alt[$1]) lw 2 title "   Winter Solstice" at beg left, \
Packit 0986c0
     dummy using (summer_azi[$1]):(summer_alt[$1]) lw 2 title "   Summer Solstice" at beg left, \
Packit 0986c0
     dummy using (today_azi[$1]):(today_alt[$1]) lw 2 title today at end right
Packit 0986c0
Packit 0986c0
pause -1 "<cr> to continue"
Packit 0986c0
Packit 0986c0
set encoding save_encoding
Packit 0986c0
reset