age(),0);
$age -= (($age>14)?(($age>21)?2:1):0);
if ($age>28) { $age=28; }
$moonImage = 'ajax-images/moon/w/NH-moon'.(($age<10&&!strpos($age,'0'))?'0'.$age:$age).'.gif';
saveImage($moonImage,"jpmoon.png",50,50);
maketransparent("http://umbra.nascom.nasa.gov/images/latest_solisHe_thumbnail.gif","jpsun.png",50,50);
}
function saveImage($oldfile,$newfile,$width,$height)
// Save Image and re-size
{
$info = getimagesize($oldfile);
$im = imagecreatefromgif($oldfile);
$img = imagecreatetruecolor($width,$height);
imagecopyresized($img,$im,0,0,0,0,$width,$height,$info[0],$info[1]);
imageinterlace($im);
imagepng($im,$newfile);
imagedestroy($img);
}
function maketransparent($oldfile,$newfile,$width,$height)
// Turn black background transparent and re-size
{
$info = getimagesize($oldfile);
$im = imagecreatefromgif($oldfile);
$img = imagecreatetruecolor($width,$height);
$trans = imagecolorallocate($img, 0x00, 0x00, 0x00);
imagecolortransparent($img,$trans);
imagecopyresized($img,$im,0,0,0,0,$width,$height,$info[0],$info[1]);
imagetruecolortopalette($img, true, 256);
imageinterlace($img);
imagepng($img,$newfile);
imagedestroy($img);
}
function set_tz ($TZ){
if (phpversion() >= "5.1.0") {
date_default_timezone_set($TZ);
} else {
putenv("TZ=" . $TZ);
}
}
function sun_pos($UnixTimestamp, $latitude, $longitude) {
$year = date("Y",$UnixTimestamp);
$month = date("n",$UnixTimestamp);
$day = date("j",$UnixTimestamp);
$UT = gmdate("H",$UnixTimestamp)+gmdate("i",$UnixTimestamp)/60+gmdate("s",$UnixTimestamp)/3600;
$d = round(367 * $year - (7 * ($year + (($month + 9)/12)))/4 + (275 * $month)/9 + $day - 730530);
$w = 282.9404 + 0.0000470935 * $d;
$e = 0.016709 - 0.000000001151 * $d;
$M = 356.0470 + 0.9856002585 * $d;
$M = fmod($M , 360);
if ($M < 0){$M = $M+360;}
$L = $w + $M;
$L = fmod($L , 360);
$oblecl = 23.4393 - 0.0000003563 * $d ;
$E = rad2deg(deg2rad($M) + (180/M_PI) * deg2rad($e) * sin(deg2rad($M)) * (1 + $e * cos(deg2rad($M))));
$x = cos(deg2rad($E)) - $e;
$y = sin(deg2rad($E)) * sqrt(1 - $e*$e);
$r = sqrt($x*$x + $y*$y);
$v = rad2deg(atan2( deg2rad($y), deg2rad($x)) );
$lon = $v + $w;
$lon = fmod($lon, 360);
$x_rect = $r * cos(deg2rad($lon));
$y_rect = $r * sin(deg2rad($lon));
$z_rect = 0.0;
$z = 0.0;
$x_equat = $x_rect;
$y_equat = $y_rect * cos(deg2rad($oblecl)) + $z * sin(deg2rad($oblecl));
$z_equat = $y_rect * sin(deg2rad($oblecl)) + $z * cos(deg2rad($oblecl));
$r = sqrt( $x_equat*$x_equat + $y_equat*$y_equat + $z_equat*$z_equat );
$RA = rad2deg(atan2( deg2rad($y_equat), deg2rad($x_equat) ));
$Decl = rad2deg(atan2( deg2rad($z_equat), deg2rad(sqrt( $x_equat*$x_equat + $y_equat*$y_equat ))) );
$GMST0 = $L/15 + 12;
$SIDTIME = $GMST0 + $UT + $longitude/15;
$HA = $SIDTIME*15 - $RA;
$x = cos(deg2rad($HA)) * cos(deg2rad($Decl));
$y = sin(deg2rad($HA)) * cos(deg2rad($Decl));
$z = sin(deg2rad($Decl));
$xhor = $x * cos(deg2rad(90) - deg2rad($latitude)) - $z * sin(deg2rad(90) - deg2rad($latitude));
$yhor = $y;
$zhor = $x * sin(deg2rad(90) - deg2rad($latitude)) + $z * cos(deg2rad(90) - deg2rad($latitude));
$azimuth = round(rad2deg(atan2($yhor, $xhor)) + 180);
$altitude = round(rad2deg(asin($zhor )));
$pos = array($azimuth, $altitude);
return $pos;
}
//calculations start here
$dst = date("I");
$tdiff = ((date("Z"))/3600);
$year = date("Y");
$mo = date("n");
$day = date("j");
$ahour = (date("G") + (date("i")/60));
//constants for sun
$dsj2k = (367*$year)-floor(7*($year+floor(($mo+9)/12))/4)+(floor(275*$mo/9)+$day-730531.5+(-$tdiff)/24);
//$dsj2k = (367*$year)-floor(7*($year+floor(($mo+9)/12))/4)+(floor(275*$mo/9)+$day-730531.5+(-$tz-$dst)/24);
$csj2k = ($dsj2k/36525);
$lst = fmod((280.46061837 + (360.98564736629*($dsj2k+ $lon))),360);
$epsilon = (23.439 - (0.0000004 * $dsj2k));
$eff = (180/pi());
$tee = pow(tan(deg2rad($epsilon/2)),2);
for ($qq = 0; $qq <= 25; $qq += 1) {
if ($qq == 25) {
$hour = $ahour;
} else {
$hour = ($qq);
}
$gtime[] = $hour;
//sunstuff
$FNday = (367*$year)-floor(7*($year+floor(($mo+9)/12))/4)+(floor(275*$mo/9)+$day-730531.5+(-$tdiff)/24)+($hour/24);
$lsun = fmod((280.461 + (0.9856474 * $FNday)), 360);
$gee = fmod((357.528 + (0.9856003 * $FNday)), 360);
$lambda = (($lsun+1.915 * sin(deg2rad($gee))) + (0.02 * sin(deg2rad(2 *$gee))));
$rasun = $lambda - $eff*$tee*sin(deg2rad(2*$lambda)) + $eff/2 * pow($tee,2) * sin(deg2rad(4*$lambda));
$decsun = rad2deg(asin(sin(deg2rad($epsilon))*sin(deg2rad($lambda))));
$hasun = fmod((280.46061837 + (360.98564736629*$FNday) + ($lon-$rasun)), 360);
//$ssalt = sin(deg2rad($decsun))* sin(deg2rad($lat))+cos(deg2rad($decsun))*cos(deg2rad($lat))*cos(deg2rad($hasun));
$salt = (rad2deg(asin(sin(deg2rad($decsun))* sin(deg2rad($lat))+cos(deg2rad($decsun))*cos(deg2rad($lat))*cos(deg2rad($hasun)))));
$sunpos[] = $salt;
//Sun azimuth
$coslat = cos(deg2rad($lat));
$sinlat = sin(deg2rad($lat));
$decsunr = deg2rad($decsun);
$rasunr = deg2rad($rasun);
$ddat = ($decsun + (20.0383 * cos($rasunr))/36*($FNday/36525));
$cosddat = cos(deg2rad($decsun + (20.0383 * cos($rasunr))/36*($FNday/36525)));
$sinddat = sin(deg2rad($decsun + (20.0383 * cos($rasunr))/36*($FNday/36525)));
$sinHA = sin(deg2rad($hasun));
$sinalt = sin(deg2rad($salt));
$suny = (-1 * $coslat * $cosddat * $sinHA);
$sunx = ($sinddat - $sinlat * $sinalt);
$sunA1 = atan($suny/$sunx);
//$sunazr
if ($sunx < 0) {
$sunazr = (pi() + $sunA1);
} elseif ($suny < 0) {
$sunazr = ((2*pi()) + $sunA1);
} else {
$sunazr = ($sunA1);
}
$sunazd = rad2deg($sunazr);
$sunazi[] = $sunazd;
//moonstuff
$mtee = ($FNday/36525);
$mlambda = fmod(218.32 + 481267.883 * $mtee,360)
+ 6.29 * sin(deg2rad(fmod(134.9 + 477198.85 * $mtee,360)))
- 1.27 * sin(deg2rad(fmod(259.2 - 413335.38 * $mtee,360)))
+ 0.66 * sin(deg2rad(fmod(235.7 + 890534.23 * $mtee,360)))
+ 0.21 * sin(deg2rad(fmod(269.9 + 954397.7 * $mtee, 360)))
- 0.19 * sin(deg2rad(fmod(357.5 + 35999.05 * $mtee, 360)))
- 0.11 * sin(deg2rad(fmod(186.6 + 966404.05 * $mtee, 360)));
$mbeta = ((5.13 * sin(deg2rad(fmod(93.3 + (483202.03 * $mtee), 360))))
+ (0.28 * sin(deg2rad(fmod(228.2 + (960400.87 * $mtee), 360))))
- (0.28 * sin(deg2rad(fmod(318.3 + (6003.18 * $mtee), 360))))
- (0.17 * sin(deg2rad(fmod(217.6 - (407332.2 * $mtee), 360)))));
$mpi = 0.9508
+ (0.0518 * cos(deg2rad(fmod(134.9 + 477198.85 * $mtee, 360))))
+ (0.0095 * cos(deg2rad(fmod(259.2 - 413335.38 * $mtee, 360))))
+ (0.0078 * cos(deg2rad(fmod(235.7 + 890534.23 * $mtee, 360))))
+ (0.0028 * cos(deg2rad(fmod(269.9 + 954397.7 * $mtee, 360))));
$mr = 1/(sin(deg2rad($mpi)));
$ml = cos(deg2rad($mbeta))*cos(deg2rad($mlambda));
$mm = 0.9175 * cos(deg2rad($mbeta))*sin(deg2rad($mlambda)) - (0.3978 * sin(deg2rad($mbeta)));
$mn = 0.3978 * cos(deg2rad($mbeta))*sin(deg2rad($mlambda)) + (0.9175 * sin(deg2rad($mbeta)));
$mA = rad2deg(atan($mm/$ml));
//$ramoon
if ($ml < 0) {
$ramoon = ($mA + 180);
} elseif ($mm < 0) {
$ramoon = ($mA + 360);
} else {
$ramoon = ($mA);
}
$decmoon = rad2deg(asin($mn));
$mx = $mr*cos(deg2rad($decmoon))*cos(deg2rad($ramoon)) - cos(deg2rad($lat))*cos(deg2rad(fmod(280.46061837 + 360.98564736629*$FNday+ $lon, 360)));
$my = $mr*cos(deg2rad($decmoon))*sin(deg2rad($ramoon)) - cos(deg2rad($lat))*sin(deg2rad(fmod(280.46061837 + 360.98564736629*$FNday+ $lon, 360)));
$mz = $mr*sin(deg2rad($decmoon))-sin(deg2rad($lat));
$mr1 = sqrt(($mx*$mx)+($my*$my)+($mz*$mz));
$mA1 = rad2deg(atan($my/$mx));
//$ramoon1
if ($mx < 0) {
$ramoon1 = ($mA1 + 180);
} elseif ($my < 0) {
$ramoon1 = ($mA1 + 360);
} else {
$ramoon1 = ($mA1);
}
$decmoon1 = rad2deg(asin($mz/$mr1));
$hamoon1 = fmod(280.46061837 + 360.98564736629*$FNday+ $lon-$ramoon1,360);
//$smalt = sin(deg2rad($decmoon1))*sin(deg2rad($lat))+cos(deg2rad($decmoon1))*cos(deg2rad($lat))*cos(deg2rad($hamoon1));
$malt = rad2deg(asin(sin(deg2rad($decmoon1))*sin(deg2rad($lat))+cos(deg2rad($decmoon1))*cos(deg2rad($lat))*cos(deg2rad($hamoon1))));
$moonpos[] = $malt;
/*###########################################################################################################################
http://eclipse.gsfc.nasa.gov/LEvis/LEaltitude.html
In our current example the azimuth of the Moon is then:
Azimuth of Moon: A = ArcTan [-(Cos d Sin h)/(Sin d Cos f - Cos d Cos h Sin f)]
= ArcTan [-(Cos(19.8) Sin(-9))/(Sin(19.8) Cos(38.9) - Cos(19.8) Cos(-9) Sin(38.9))]
= ArcTan [-(0.941 * -0.156) / ((0.339 * 0.778) - (0.941 * 0.988 * 0.628))]
= ArcTan [-(-0.147) / ((0.264) - (0.584))]
= ArcTan [ +0.147 / (-0.320)]
= ArcTan [ -0.459 ]
= -24.7°
*/ ########################################################################################################################
//$azmoon = rad2deg(atan(-(cos(deg2rad($decmoon))*sin(deg2rad($hamoon1)))/(sin(deg2rad($decmoon))*cos(deg2rad($lat)) - cos(deg2rad($decmoon))*cos(deg2rad($hamoon1))*sin(deg2rad($lat)))));
$azm = (atan(-(cos(deg2rad($decmoon))*sin(deg2rad($hamoon1)))));
$denom = (sin(deg2rad($decmoon))*cos(deg2rad($lat)) - cos(deg2rad($decmoon))*cos(deg2rad($hamoon1))*sin(deg2rad($lat)));
//echo "
";
if($denom <= 0){$azmoon = rad2deg(atan(($azm / $denom))) + 180;}
else if ($denom >= 0 ){$azmoon = rad2deg(atan(($azm / ($denom))));}
if ($azmoon < 0){$azmoon = $azmoon + 360;}
//$azmoon = fmod($azmoon,360);
//$moonazi[] = $azmoon;
//$azmoon = rad2deg(atan(-(cos(deg2rad($decmoon))*sin(deg2rad($hamoon1)))/(sin(deg2rad($decmoon))*cos(deg2rad($lat)) - cos(deg2rad($decmoon))*cos(deg2rad($hamoon1))*sin(deg2rad($lat)))));
//$azmoon = $azmoon+180;
//if ($azmoon < 0){$azmoon = $azmoon+360;}//else if($azmoon>=0 && $azmoon <=90){$azmoon = $azmoon+180;}//else{$azmoon = ($azmoon);}
$moonazi[] = $azmoon;
//$azm = (atan(-(cos(deg2rad($decmoon))*sin(deg2rad($hamoon1)))));
//$denom = (sin(deg2rad($decmoon))*cos(deg2rad($lat)) - cos(deg2rad($decmoon))*cos(deg2rad($hamoon1))*sin(deg2rad($lat)));
}
/*
echo "
";
echo "gtime ";
print_r ($gtime);
echo "sunpos ";
print_r ($sunpos);
echo "sunazi ";
print_r ($sunazi);
echo "moonpos ";
print_r ($moonpos);
echo "moonazi ";
print_r ($moonazi);
##########################################################################################################################
Since the denominator in ArcTan [ +0.147 / (-0.320)] is negative, we must add 180° to the final answer:
A = -24.7° + 180°
A = 155.3°
folowing this I have a correct azimuth HALF the time, don't know how to handle the other half
*/
for ($i=0;$i<25;$i++){
if ($moonazi[$i] <= 0){$moonazi[$i] = $moonazi[$i]+180;}
else if ($moonazi[$i] >> 0){$moonazi[$i] = $moonazi[$i];}
}
##########################################################################################################################
for ($i=0;$i<=24;$i++){$tm11[$i]=$sunazi[$i];}
$saz[0] = $sunazi[25];
for ($i=0;$i<=24;$i++){$tm21[$i]=$moonazi[$i];}
$maz[0] = round($moonazi[25]);
$he5[0] = round($moonpos[25]);
for ($i=0;$i<=24;$i++){$he61[$i]=$moonpos[$i];}
$he7[0] = round($sunpos[25]);
for ($i=0;$i<=24;$i++){$he81[$i]=$sunpos[$i];}
#
##END FUNCTIONS###############################################################################
#
/* CREATE SUN PATH */
if (version_compare(PHP_VERSION, '5.2.1', '>')) {
$sun_info = date_sun_info(strtotime(date("Y/n/j",time())), $lat, $lon);
} else {
$sun_info = date_sun_info(strtotime(date("Y/n/j",time())), $lon, $lat); // A bug in the earlier versions.
}
$day=$sun_info["sunset"]-$sun_info["sunrise"];
######################################################################
$hours = $day / 3600; // 3600 seconds in an hour
#
$minutes = ($hours - floor($hours)) * 60;
#
$final_minutes = round($minutes);
if ($final_minutes <= 9){$final_minutes = "0" . $final_minutes;}
$dl = $final_hours = floor($hours) . ":" . $final_minutes;
######################################################################
$sr = date("h:i a",$sun_info["sunrise"]);
$zen = date("h:i a",$sun_info["transit"]);
$ss = date("h:i a",$sun_info["sunset"]);
$b = array();
$a = ($sun_info["transit"]-36000);
for ($i=0;$i<=25;$i++){
$a=$a+3600;
$b[] = $a;
}
foreach ($b as $v) {
$pos = sun_pos($v,$lat,$lon);
$az[] = $pos[0];
$he[] = $pos[1];
}
//Hi position
$sun_info = date_sun_info(strtotime("21 June".date("Y",time())), $lat,$lon);
$b = array();
$a = ($sun_info["transit"]-36000);
for ($i=0;$i<=49;$i++){
$a=$a+1800;
$b[] = $a;
}
foreach ($b as $v) {
$pos = sun_pos($v,$lat,$lon);
$az0[] = $pos[0];
$he0[] = $pos[1];
}
// Autumnal Eq
$sun_info = date_sun_info(strtotime("21 September".date("Y",time())),$lat,$lon);
$b = array();
$a = ($sun_info["transit"]-36000);
for ($i=0;$i<=25;$i++){
$a=$a+3600;
$b[] = $a;
}
foreach ($b as $v) {
$pos = sun_pos($v,$lat,$lon);
$az3[] = $pos[0];
$he3[] = $pos[1];
}
//Low position
$sun_info = date_sun_info(strtotime("21 December".date("Y",time())), $lat,$lon);
$b = array();
$a = ($sun_info["transit"]-32400);
for ($i=0;$i<=25;$i++){
$a=$a+3600;
$b[] = $a;
}
foreach ($b as $v) {
$pos = sun_pos($v,$lat,$lon);
$az1[] = $pos[0];
$he1[] = $pos[1];
}
function getTimestamp ($val) {
list ($hour,$min) = preg_split("/:/",$val);
$ttl = ($min * 60) + ($hour * 60 * 60);
return($ttl);
}
function out_time ( $seconds , $mode = false) {
$uday = (3600 * 24);
$uhr = 3600;
$umin = 60;
if ($seconds < 0 ) {
$neg = "-" ;
$seconds = $seconds * -1 ;
//echo "Seconds = " . $seconds . "
";
} else {
$neg = "" ;
}
// Calculate days
$dd = intval($seconds / $uday );
$mmremain = ($seconds - ($dd * $uday));
// Calculate hours
$hh = intval($mmremain / $uhr);
$ssremain = ($mmremain - ($hh * $uhr));
// Calculate minutes
$mm = intval($ssremain / $umin);
$ss = ($ssremain - ($mm * $umin));
// If day or days
if ($dd == 1) { $days = 'day'; }
if ($dd > 1 ) { $days = "days"; }
if (!$mode) {
// String for if there are days
if ( $dd > 0 ) {
$out_string = sprintf("%d %s %02d hrs %02d mins",
$dd, $days, $hh, $mm);
}
// String if there are hours
if ( $dd == 0 && $hh > 0 ) {
$out_string = $neg . sprintf("%d hrs %02d mins",
$hh, $mm);
}
// String if there are minutes
if ( $dd == 0 && $hh == 0 && $mm > 0 ) {
$out_string = $neg . sprintf("%d mins",
$mm);
}
// Only output Seconds
if ( $hh == 0 && $mm == 0 ) {
$out_string = $neg . sprintf("%d secs", $ss) ;
}
} else {
// String for if there are days
if ( $dd > 0 ) {
$out_string = $neg . sprintf("%d:%s %02d:%02d",
$dd, $days, $hh, $mm);
}
// String if there are hours
if ( $dd == 0 && $hh > 0 ) {
$out_string = $neg . sprintf("%d:%02d",
$hh, $mm);
}
// String if there are minutes
if ( $dd == 0 && $hh == 0 && $mm > 0 ) {
$out_string = $neg . sprintf("00:%02d",
$mm);
}
// Only output Seconds
if ( $hh == 0 && $mm == 0 ) {
$out_string = $neg . sprintf("%d secs", $ss) ;
}
}
// Return value
return ($out_string);
}
function time24to12 ($val) {
if (strlen($val) == 5 ) {
$val .= ":00";
}
return( date("g:i", strtotime($val)) );
}
$mrise = $clientrawextra[558];
$millum = $clientrawextra[560];
/* CREATE ACTUAL SUN POSITION */
$time = time();
// For testing using http://aa.usno.navy.mil/data/docs/AltAz.php & PHP function date_sun_info() results - (for Jim 90° 4' & 43° 48' & 5 hrs W)
/*
$testHr = 19;
$testMin = 25;
$time = mktime($testHr,$testMin,0,date('m'),date('j'),date('Y'));
*/
$pos = sun_pos($time, $lat, $lon);
$az2[0] = $pos[0];
$he2[0] = $pos[1];
// Create the graph. These two calls are always required
$graph = new Graph(500,300,"auto",1);
$graph->SetMargin(25,20,25,55);
$graph->SetBackgroundGradient('blue',$daycolor,GRAD_HOR,BGRAD_PLOT);
$suncolor = "yellow";
if ($az2[0] == 180) {
$skyword = 'Solar Noon';
} else if ($az2[0] == 360) {
$skyword = 'Solar Midnight';
$graph->SetBackgroundGradient('black',$nightcolor,GRAD_HOR,BGRAD_PLOT);
} else if ($he2[0] <= 3 && $he2[0] > -1) { // Seems to work out about right
$suncolor = "darkorange";
$graph->SetBackgroundGradient('brown',$dawncolor,GRAD_HOR,BGRAD_PLOT);
if ($he2[0] >= 0) { // Not sunrise or sunset
if ($az2[0] > 180) {
$skyword = 'Dusk';
} else {
$skyword = 'Dawn';
}
}
} else if ($he2[0] == -1) {
$suncolor = "darkorange";
$graph->SetBackgroundGradient('brown',$dawncolor,GRAD_HOR,BGRAD_PLOT);
if ($az2[0] > 180) {
$skyword = 'Sunset';
} else {
$skyword = 'Sunrise';
}
} else if ($he2[0] > 0) {
if ($az2[0] > 180) {
$skyword = 'Afternoon';
} else {
$skyword = 'Morning';
}
} else if ($he2[0] >= -6) { // Civil Twilight
$graph->SetBackgroundGradient('darkorange',$ctlcolor,GRAD_HOR,BGRAD_PLOT);
$skyword = 'Civil Twilight';
} else if ($he2[0] >= -12) { // Nautical Twilight
$graph->SetBackgroundGradient('black',$ntlcolor,GRAD_HOR,BGRAD_PLOT);
$skyword = 'Nautical Twilight';
} else if ($he2[0] >= -18) { // Astronomical Twilight
$graph->SetBackgroundGradient('black',$atlcolor,GRAD_HOR,BGRAD_PLOT);
$skyword = 'Astronomical Twilight';
} else { // Must be night
$graph->SetBackgroundGradient('black',$nightcolor,GRAD_HOR,BGRAD_PLOT);
$skyword = 'Nighttime';
}
$graph->SetMarginColor("black");
$fecha = date($dtstring, time()) . " local time";
$graph->SetClipping();
$graph->SetScale( "linlin",0,90,40,320);
$graph ->xgrid->Show( true,true);
$graph ->xgrid->SetColor('#99999');
$graph->ygrid->Show(false, false);
// $graph ->ygrid->Show( true,true); // Prevents background color from displaying!!!!
$graph ->ygrid->SetColor('#99999');
$graph->setTickDensity(TICKD_NORMAL,TICKD_DENSE);
$graph->xaxis->SetPos("min");
$graph->legend->Hide();
$graph->xaxis->title->SetFont(FF_ARIAL,FS_BOLD,8);
$graph->xaxis->title->SetColor("orange");
$graph->xaxis->title->Set("Sun AZ: $az2[0]° Zenith: $zen Sun EL: $he2[0]°");
$graph->xaxis->SetTitleMargin(10);
$graph->yaxis->SetFont(FF_ARIAL,FS_BOLD,7);
$graph->yaxis->SetColor('white');
$graph->xaxis->SetFont(FF_ARIAL,FS_BOLD,7);
$graph->xaxis->SetColor('white');
$graph->footer->left->SetFont(FF_ARIAL,FS_BOLD,9);
$graph->footer->left->Set("Sunrise: $sr");
$graph->footer->left->SetColor("darkorange");
$graph->footer->center->SetFont(FF_ARIAL,FS_BOLD,9);
$graph->footer->center->Set("Sunlight: $dl hrs");
$graph->footer->center->SetColor("darkorange");
$graph->footer->right->SetFont(FF_ARIAL,FS_BOLD,9);
$graph->footer->right->Set("Sunset: $ss");
$graph->footer->right->SetColor("darkorange");
// Create the line plot
$plot = new LinePlot($he, $az);
$plot->SetColor("orange");
$plot->SetWeight(1);
$plot->SetStyle('dashed');
// Create the line plot
$plot0 = new LinePlot($he0, $az0);
$plot0->SetColor("green");
$plot0->SetWeight(1);
// Create the line plot
$plot1 = new LinePlot($he1, $az1);
$plot1->SetColor("magenta");
$plot1->SetWeight(1);
// Create the line plot
$plot2 = new LinePlot($he3, $az3);
$plot2->SetColor("cyan");
$plot2->SetWeight(1);
// Create the line plot for Moon path
$plot3 = new LinePlot($he61,$tm21);
$plot3->SetColor("white");
$plot3->SetWeight(1);
$plot3->SetStyle('dashed');
// Top Title
$graph->title->Set('Sun/Moon position: '.$fecha.' - '.$skyword);
$graph->title->SetFont(FF_ARIAL,FS_BOLD,9);
$graph->title->SetColor('orange','black','white');
// Create the scatter plot
if ($he2[0] == -1) $he2[0]++; // Push the sun back up on the horizon when at -1 which is sunrise/set
$sp1 = new ScatterPlot($he2,$az2);
$sp1->mark->SetType(MARK_IMG,'Sun48.png',0.8);
// $sp1->mark->SetType(MARK_FILLEDCIRCLE);
$sp1->mark->SetWidth(8);
$sp1->SetImpuls();
$sp1->mark->SetFillColor($suncolor);
$sp1->mark->SetColor($suncolor);
$sp2 = new ScatterPlot($he5,$maz);
$sp2->mark->SetType(MARK_IMG,'jpmoon.png',0.6);
// Add plots to graph
$graph->Add($plot0);
$graph->Add($plot1);
$graph->Add($plot2);
$graph->Add($plot3); //Moon
$graph->Add($plot);
if($he2[0]>-1)$graph->Add($sp1);
$graph->Add($sp2);
// Add labels for equinox peaks
$txt =new Text("Jun 21");
$txt->SetFont(FF_ARIAL,FS_BOLD,7);
$txt->SetPos( 237,40);
$txt->SetColor( "green");
$graph->AddText($txt);
$txt1 =new Text("Dec 21");
$txt1->SetFont(FF_ARIAL,FS_BOLD,7);
$txt1->SetPos( 237,173);
$txt1->SetColor( "magenta");
$graph->AddText($txt1);
$txt2 =new Text("Equinox");
$txt2->SetFont(FF_ARIAL,FS_BOLD,7);
$txt2->SetPos( 233,96);
$txt2->SetColor( "cyan");
$graph->AddText($txt2);
$txt3 =new Text("Moon EL: $he5[0]°");
$txt3->SetFont(FF_ARIAL,FS_BOLD,8);
$txt3->SetPos(408,276);
$txt3->SetColor( "white");
$graph->AddText($txt3);
$txt4 =new Text("Moonrise: $mrise");
$txt4->SetFont(FF_ARIAL,FS_BOLD,8);
$txt4->SetPos(15,276);
$txt4->SetColor( "white");
$graph->AddText($txt4);
$txt5 =new Text("Illumination: $millum%");
$txt5->SetFont(FF_ARIAL,FS_BOLD,8);
$txt5->SetPos(208,276);
$txt5->SetColor( "white");
$graph->AddText($txt5);
// Save the graph
$graph->Stroke();
?>