program convert;
uses crt,
math;
var a:real;
b:real;
az: real;
ddmmss: real;
dd: real;
mm: real;
ss: real;
decdeg: real;
dsec: real;
dmin: real;
sec: real;
option: string ;
sdia: real;
ghaoh: real;
gha24h: real;
decloh: real;
decl24h: real;
lat: real;
long: real;
ut1: real;
crm: real;
crs: real;
gha: real;
lha: real;
decl: real;
angle: real;
procedure dms_to_dec (ddmmss: real);
begin
dd:=int(ddmmss);
{writeln('degrees = ', dd:3:2);}
mm:= (frac (ddmmss))*100;
mm:= int(mm);
{writeln ('minutes= ',mm:3:2); }
sec:= (frac(ddmmss*100))*100;
{writeln ('seconds = ',sec:2:2);}
readln;
dsec:=(sec/60)+mm;
dmin:= dsec/60;
decdeg:= dd+(dmin);
{writeln ('decimel deg = ',decdeg:8:6); }
{ readln;}
end;
procedure computelha;
begin
gha:= ghaoh+(gha24h-ghaoh+360)*ut1/24;
lha:=gha-long;
writeln ('lha (dd) = ',lha:8:8);
lha:=degtorad (lha);
writeln ('lha (rad) = ',lha:8:8);
end;
procedure computedecl;
begin
decl:=decloh +(decl24h-decloh)*ut1/24;
writeln ('Decl (dd) = ',decl:8:8);
decl:=degtorad (decl);
writeln ('decl (rad) = ',decl:8:8);
end;
{procedure computeaz (angle); }
begin
{procedure dec_to_dms (decdeg:real);
begin
dd:=int(decdeg);
writeln ('Degrees = ',dd:3:2);
mm:=int(frac(decdeg)*60);
Writeln ('Minutes = ',mm:2:2);
ss:= ((frac(decdeg)*60)-mm)*60;
writeln('seconds = ',ss:2:2);
ddmmss:= dd+(mm/100)+ (ss/10000);
writeln('ddmmss= ',ddmmss:8:4);
readln;
end; }
begin
writeln ('COMPUTING SOLAR/STAR OBSERVATION FOR AZIMUTH');
writeln ('Enter Semidiameter of sun. Enter 0.0 for star data');
readln (sdia);
writeln ('Enter GHA0H');
readln (ghaoh);
writeln ('Enter GHA24H');
read(gha24h);
writeln ('Enter DEC0HR');
readln (decloh);
writeln ('Enter DECH24H');
read(decl24h);
writeln ('Enter UT1 of observation');
readln (ut1);
{writeln('Enter circle reading on mark');
readln (crm);
writeln ('Enter circle reading on sun/star');
readln (crs);}
writeln ('Enter longitude');
read (long);
writeln ('Enter latitude');
readln (lat);
ddmmss:= sdia;
dms_to_dec (ddmmss);
sdia:=decdeg;
ddmmss:= ghaoh;
dms_to_dec (ddmmss);
ghaoh:= decdeg;
ddmmss:=gha24h;
dms_to_dec (ddmmss);
gha24h:= decdeg;
ddmmss:=decloh;
dms_to_dec (ddmmss);
decloh:=decdeg;
ddmmss:=decl24h;
dms_to_dec (ddmmss);
decl24h:=decdeg;
ddmmss:=ut1;
dms_to_dec (ddmmss);
ut1:=decdeg;
ddmmss:=crm;
dms_to_dec (ddmmss);
crm:=decdeg;
ddmmss:=crs;
dms_to_dec (crs);
crs:=decdeg;
ddmmss:=lat;
dms_to_dec (ddmmss);
lat:=decdeg;
ddmmss:=long;
dms_to_dec (ddmmss);
long:=decdeg;
{writeln(sdia:8:4);
writeln (ghaoh:8:4);
writeln (gha24h:8:4);
writeln (decloh:8:4);
writeln (decl24h:8:4);
writeln (ut1:8:4);
writeln (crm:8:4);
writeln (crs:8:4);
readln;}
computelha;
computedecl;
lat:=degtorad (lat);
long:=degtorad (long);
a:=-sin(lha);
b:=(cos(lat)*tan(decl))-(sin(lat)*cos(lha));
az:=arctan (a/b);
az:= radtodeg (az);
if az <0 then az:=360+az;
writeln ('az= ',az:8:5);
readln;
{ Writeln ('input angle in ddd.mmss format.');
readln (ddmmss);
dms_to_dec (ddmmss);
readln;
writeln ('Will convert back to ddd.mm.ss format');
dec_to_dms (decdeg);
readln;}
end;
end.