<?php // Some routines generated from Astronomical Algorithms (2nd edition) by Jean Meeus function JulianDay( $theyear, $themonth, $theday) { // See Meeus page 60 $Y= $theyear; $M= $themonth; $D= $theday; if ( $M < 3 ) { $Y= $Y - 1; $M= $M +12; } $A= (int)( $Y / 100 ); $B= 2 - $A + (int)( $A / 4); return( (int)(365.25*($Y+4716)) + (int)(30.6001*($M+1)) + $D + $B - 1524.5); } function thedate2J( $thedate) { return( JulianDay( substr( $thedate, 0, 4), substr( $thedate, 4, 2), substr( $thedate, 6, 2))); } function CarringtonRotation( $thejulianday) { // See Meeus 29.1, page 191 // Meeus says this can be off by 0.16 days // there is a corrective formula (29.2) in the book, if this turns out to be a problem. return (int) (($thejulianday - 2398140.227 ) / 27.2752316); } function cr2J( $thecr) { $theJ= 2398140.2270 + 27.2752316 * $thecr; $Mdeg= 281.96 + 26.882476 * $thecr; $Mrad= ( 3.14159265358979323846 * $Mdeg ) / 180.0; $theJ= $theJ + 0.1454 * sin( $Mrad); $theJ= $theJ - 0.0085 * sin( 2 * $Mrad); $theJ= $theJ - 0.0141 * cos( 2 * $Mrad); return( $theJ); } function J2cr( $thejul) { return CarringtonRotation( $thejul); } function J2date( $thejul) { $Z= (int) ( $thejul + 0.5 ); $F= ( $thejul + 0.5 ) - $Z; if ( $Z < 2299161 ) $A= $Z; else { $alpha= (int) ( ( $Z - 1867216.25 ) / 36524.25 ); $A= $Z + 1 + $alpha - (int) ( $alpha / 4); } $B= $A + 1524; $C= (int) ( ( $B - 122.1 ) / 365.25 ); $D= (int) ( 365.25 * $C ); $E= (int) ( ( $B - $D ) / 30.6001 ); $theday= $B - $D - (int) (30.6001 * $E ) + $F; if ( $E < 14 ) $themonth= $E - 1; else $themonth= $E - 13; if ( $themonth > 2 ) $theyear= $C - 4716; else $theyear= $C - 4715; return sprintf( "%04d%02d%02d", $theyear, $themonth, $theday); } function CRstartdate( $thecr) { return( J2date( cr2J( $thecr))); } function CRenddate( $thecr) { return( J2date( cr2J( $thecr+1)-1)); } ?>