Horizontal sundial calculations: Difference between revisions

m
(→‎[[Horizontal_sundial_calculations#ALGOL 68]]: Task: Scientific calculations example)
 
Line 22:
> Simon
-->
<lang algol68>BEGIN
REAL lat, slat, lng, ref;
print ( "Enter latitude => " ); read (lat);
print ( "Enter longitude => " ); read (lng);
print ( "Enter legal meridian => " ); read (ref);
new line(stand out);
 
slat := sin(lat*2*3.1416pi/360) ;
print ( (new line, new line) ) ;
print ( ("sin latitude: sine of latitude: ", float(slat,8,2,1), new line ) );
print ( ("diff long: diff longitude: ", fixed((lng - ref),0,3), new line, new line ) );
 
print ( ("*------------Hour, Horizontalsun Dialhour ------------*angle, dial hour line angle from 6am to 6pm", new line) ));
print ( ("www.illustratingshadows.com hdial.a68", new line) );
print ( ("Algol 68 from:", new line) );
print ( (" www.xs4all.nl/~jmvdveer/algol.html", new line) );
print ( ("*----------- Algol 68 June 2009 ----------*", new line) );
 
print ( (new line, new line) ) ;
 
REAL lat, slat;
print ( "Enter latitude " );
read ( lat ) ;
 
slat := sin(lat*2*3.1416/360) ;
print ( ("sin latitude: ", float(slat,8,2,1), new line ) );
 
REAL lng ;
print ( "Enter longitude " );
read (lng);
 
REAL ref ;
print ( "Enter legal meridian " );
read (ref);
 
print ( ("diff long: ", (lng - ref), new line ) );
 
# test data: 0 8.25 17.35 28.41 43.14 63.65 90 for l=32.75 lng=ref #
print ( (new line, new line) ) ;
print (( "e-2 means divide by 100, e-1 means divide by 10, e+0 means asis"));
print ( (new line, new line) ) ;
 
print ( ("Hour, sun hour angle, dial hour line angle from am to pm", new line ) ) ;
 
FOR h FROM -6 TO 6
DO
REAL hra , hla ; # define hour angle and hour line angle #
hra := 15 * h ; # hour angle is 15 times the hour #
hra := hra - (lng - ref); # but correct for longitude difference #
hla := atanarc tan ( slat * tan(hra*2*3.1416pi/360) ) * 360 / ( 2*3.1416pi) ;
# page 132 of a68gdoc.pdf documentationfile #
print ( ("HR=",+whole(h, 3)+" ; HRA=",float+fixed(hra,8,2,13), +" ; HLA=",float+fixed(hla,8,2,13), new line) ) ;
new line(stand out)
OD
 
END</lang>
Output: