Welcome Guest, you are in: Login

wiki.crowe.co.nz

RSS RSS

Navigation





Search the wiki
»

PoweredBy

SunPosa

RSS
Modified on Monday, 23 September 2013 13:03 by Administrator Categorized as Uncategorized


  • Script updated on 21 April 2009
  • original script written by Breitling (http://meteo.aerolugo.com/)
  • Thanks to input from Forum-members we added sunpath for 21 June and 21 December
  • http://www.weather-watch.com/smf/index.php/topic,39197.0.html
  • changing colors: By Jim McMurry from Juneau County Weather (http://www.jcweather.us/)
  • changed the way the calculation is done(21 April 2009)
  • it should be ok now within two arc-minutes
  • Added sunrise/sunset/length of day: Chuck McGill from Westford Weather (http://www.westfordweather.net)

  • // allow viewing of generated source

  • if ( isset($_REQUEST'sce') && strtolower($_REQUEST'sce') == 'view' ) { //self downloader $filenameReal = FILE; $download_size = filesize($filenameReal); header('Pragma: public'); header('Cache-Control: private'); header('Cache-Control: no-cache, must-revalidate'); header("Content-type: text/plain"); header("Accept-Ranges: bytes"); header("Content-Length: $download_size"); header('Connection: close'); readfile($filenameReal); exit; }

    //Start of Script FORMATTER ERROR (Malformed List) /* GLOBAL VARIABLES */ $lat = 60.829; //Note! longitude is west negative $lon = -135.194; $zenith = 90.83333; $SITE'TZ' = "America/Whitehorse"; // set your timezone $dtstring = "d M Y H:i T"; // format for the date & time $daycolor = 'lightskyblue'; $ctlcolor = 'skyblue:0.6'; // Civil Twilight $ntlcolor = 'skyblue:0.6'; // Nautical Twilight $atlcolor = 'midnightblue:0.9'; // Astronomical Twilight $nightcolor = 'midnightblue:0.7'; $dawncolor = 'lightskyblue:0.4'; FORMATTER ERROR (Malformed List) /* FUNCTIONS */ 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,$info0,$info1); 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);

    FORMATTER ERROR (Malformed List) 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 FORMATTER ERROR (Malformed List) 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";

    FORMATTER ERROR (Malformed List) $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">0"> = $pos[0; $he">1"> = $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">0"> = $pos[0; $he0">1"> = $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">0"> = $pos[0; $he3">1"> = $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">0"> = $pos[0; $he1">1"> = $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 = $clientrawextra558; $millum = $clientrawextra560;

    /* 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); $az20 = $pos0; $he20 = $pos1;

    // 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 ($az20 == 180) { $skyword = 'Solar Noon'; } else if ($az20 == 360) { $skyword = 'Solar Midnight'; $graph->SetBackgroundGradient('black',$nightcolor,GRAD_HOR,BGRAD_PLOT); } else if ($he20 <= 3 && $he20 > -1) { // Seems to work out about right $suncolor = "darkorange"; $graph->SetBackgroundGradient('brown',$dawncolor,GRAD_HOR,BGRAD_PLOT); if ($he20 >= 0) { // Not sunrise or sunset if ($az20 > 180) { $skyword = 'Dusk'; } else { $skyword = 'Dawn'; } } } else if ($he20 == -1) { $suncolor = "darkorange"; $graph->SetBackgroundGradient('brown',$dawncolor,GRAD_HOR,BGRAD_PLOT); if ($az20 > 180) { $skyword = 'Sunset'; } else { $skyword = 'Sunrise'; } } else if ($he20 > 0) { if ($az20 > 180) { $skyword = 'Afternoon'; } else { $skyword = 'Morning'; } } else if ($he20 >= -6) { // Civil Twilight $graph->SetBackgroundGradient('darkorange',$ctlcolor,GRAD_HOR,BGRAD_PLOT); $skyword = 'Civil Twilight'; } else if ($he20 >= -12) { // Nautical Twilight $graph->SetBackgroundGradient('black',$ntlcolor,GRAD_HOR,BGRAD_PLOT); $skyword = 'Nautical Twilight'; } else if ($he20 >= -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( true,true); $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: $az20° Zenith: $zen Sun EL: $he20°"); $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("Daylight: $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 ($he20 == -1) $he20++; // 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($he20>-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: $he50°"); $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);

    // Display the graph $graph->Stroke();

    ?>

    ScrewTurn Wiki version 3.0.4.560. Some of the icons created by FamFamFam.