# Board index » delphi » HELP: Algorithm or equation for determining sunrise/set and moonrise/set

## HELP: Algorithm or equation for determining sunrise/set and moonrise/set

If anyone knows how to do this or can direct me in the right

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

In article <3322e817.7232711@news>, Karl Sudar <ksu...@erols.com> writes

##### Quote
>If anyone knows how to do this or can direct me in the right

in 1991 I wrote an algo to determine SS SR for any latitude and day of
year, I implemented it in Fortran, Pascal and C

I worked it out from first principles and it may have been needlesly
complex, but it worked

I will try to dig it out.. I have not used it since then and I will NOT
be trying to re-design it!

Cheers, Jim

NOTE      Remove the 's' from swandana to email me

Jim Barr        Machine Conversation
http://www.wandana.demon.co.uk/
Best is the enemy of good enough
Leaves rustle,   blades turn,    water moves

Barrs Law of Recursive futility:---
If you are smart enough to use one of these.....
.....you can probably manage without one!

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

##### Quote
ksu...@erols.com (Karl Sudar) wrote:
>If anyone knows how to do this or can direct me in the right

it is art of the SysTools sold by TurboPower
http://www.turbopower.com
Paul

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

##### Quote
Karl Sudar wrote:

> If anyone knows how to do this or can direct me in the right
> direction, please post a reply.  Thanks.

Hello,

Try TurboPower software SysTools. Its got that and lots more.

Luck,
Jim
--
Communications Analysis Prediction Wizard
http://www.wtrt.net/~ku5s/
CAPMan HF Propagation Prediction & System Analysis Software
http://ourworld.compuserve.com/homepages/KU5S

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

On Mon, 10 Mar 1997 20:36:49 -0600, James Lee Tabor <k...@wtrt.net>
wrote:

##### Quote
>Hello,

>Try TurboPower software SysTools. Its got that and lots more.

Thanks for the suggestion, but I don't have \$150 to spend on a
component.  I was hoping someone might actually know how to do it.

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

##### Quote
Karl Sudar wrote:
> Thanks for the suggestion, but I don't have \$150 to spend on a
> component.  I was hoping someone might actually know how to do it.

Try these for a start:

Sun or Moon Position Computation
http://www.auslig.gov.au/geodesy/astro/smpos.htm

Astronomy Software for Personal Computers
http://www.skypub.com/software/software.html

Jim
--
Communications Analysis Prediction Wizard
http://www.wtrt.net/~ku5s/
CAPMan HF Propagation Prediction & System Analysis Software
http://ourworld.compuserve.com/homepages/KU5S

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

In article <3322e817.7232711@news>, Karl Sudar <ksu...@erols.com> writes

##### Quote
>If anyone knows how to do this or can direct me in the right

Two astronomy books you could try are:

(i)Practical Astronomy with Your Calculator 3rd ed
Peter Duffett-Smith Pub:Cambridge University Press
ISBN 0-521-36699-7

(ii)Astronomical Algorithms
Jean Meeus Pub:???

You could also try Sky & Telescope magazine (Sky Publishing Corp), I
seem to remember them having a small competition (last year/year
before?) to write a small program to do this. Failing that, they sell
the Meeus book. I have (i) and it's so so, (ii) is widely quoted and
seems to be the one to go for but I haven't seen it.

Just a guess but a nautical navigation/alamanac might give you the same
info. Sounds like time for a trip to the library, best of luck.
--
Vincent Kolosowski
A hairy mug or just a fur cup?

## Re:HELP: Algorithm or equation for determining sunrise/set and moonrise/set

Here is a BASIC program I found.. maybe someone can port it to pascal?

10 '         Sunrise-Sunset
20 GOSUB 300
30 INPUT "Lat, Long (deg)";B5,L5
40 INPUT "Time zone (hrs)";H
50 L5=L5/360: Z0=H/24
60 GOSUB 1170: T=(J-2451545)+F
70 TT=T/36525+1: ' TT = centuries
80 '               from 1900.0
90 GOSUB 410: T=T+Z0
100 '
110 '       Get Sun's Position
120 GOSUB 910: A(1)=A5: D(1)=D5
130 T=T+1
140 GOSUB 910: A(2)=A5: D(2)=D5
150 IF A(2)<A(1) THEN A(2)=A(2)+P2
160 Z1=DR*90.833: ' Zenith dist.
170 S=SIN(B5*DR): C=COS(B5*DR)
180 Z=COS(Z1): M8=0: W8=0: PRINT
190 A0=A(1): D0=D(1)
200 DA=A(2)-A(1): DD=D(2)-D(1)
210 FOR C0=0 TO 23
220 P=(C0+1)/24
230 A2=A(1)+P*DA: D2=D(1)+P*DD
240 GOSUB 490
250 A0=A2: D0=D2: V0=V2
260 NEXT
270 GOSUB 820: '  Special msg?
280 END
290 '
300 '        Constants
310 DIM A(2),D(2)
320 P1=3.14159265: P2=2*P1
330 DR=P1/180: K1=15*DR*1.0027379
340 S\$="Sunset at  "
350 R\$="Sunrise at "
360 M1\$="No sunrise this date"
370 M2\$="No sunset this date"
380 M3\$="Sun down all day"
390 M4\$="Sun up all day"
400 RETURN
410 '     LST at 0h zone time
420 T0=T/36525
430 S=24110.5+8640184.813*T0
440 S=S+86636.6*Z0+86400*L5
450 S=S/86400: S=S-INT(S)
460 T0=S*360*DR
470 RETURN
480 '
490 '  Test an hour for an event
500 L0=T0+C0*K1: L2=L0+K1
510 H0=L0-A0: H2=L2-A2
520 H1=(H2+H0)/2: '  Hour angle,
530 D1=(D2+D0)/2: '  declination,
540 '                at half hour
550 IF C0>0 THEN 570
560 V0=S*SIN(D0)+C*COS(D0)*COS(H0)-Z
570 V2=S*SIN(D2)+C*COS(D2)*COS(H2)-Z
580 IF SGN(V0)=SGN(V2) THEN 800
590 V1=S*SIN(D1)+C*COS(D1)*COS(H1)-Z
600 A=2*V2-4*V1+2*V0: B=4*V1-3*V0-V2
610 D=B*B-4*A*V0: IF D<0 THEN 800
620 D=SQR(D)
630 IF V0<0 AND V2>0 THEN PRINT R\$;
640 IF V0<0 AND V2>0 THEN M8=1
650 IF V0>0 AND V2<0 THEN PRINT S\$;
660 IF V0>0 AND V2<0 THEN W8=1
670 E=(-B+D)/(2*A)
680 IF E>1 OR E<0 THEN E=(-B-D)/(2*A)
690 T3=C0+E+1/120: ' Round off
700 H3=INT(T3): M3=INT((T3-H3)*60)
710 PRINT USING "##:##";H3;M3;
720 H7=H0+E*(H2-H0)
730 N7=-COS(D1)*SIN(H7)
740 D7=C*SIN(D1)-S*COS(D1)*COS(H7)
750 AZ=ATN(N7/D7)/DR
760 IF D7<0 THEN AZ=AZ+180
770 IF AZ<0 THEN AZ=AZ+360
780 IF AZ>360 THEN AZ=AZ-360
790 PRINT USING ",  azimuth ###.#";AZ
800 RETURN
810 '
820 '   Special-message routine
830 IF M8=0 AND W8=0 THEN 870
840 IF M8=0 THEN PRINT M1\$
850 IF W8=0 THEN PRINT M2\$
860 GOTO 890
870 IF V2<0 THEN PRINT M3\$
880 IF V2>0 THEN PRINT M4\$
890 RETURN
900 '
910 '   Fundamental arguments
920 '     (Van Flandern &
930 '     Pulkkinen, 1979)
940 L=.779072+.00273790931*T
950 G=.993126+.0027377785*T
960 L=L-INT(L): G=G-INT(G)
970 L=L*P2: G=G*P2
980 V=.39785*SIN(L)
990 V=V-.01000*SIN(L-G)
1000 V=V+.00333*SIN(L+G)
1010 V=V-.00021*TT*SIN(L)
1020 U=1-.03349*COS(G)
1030 U=U-.00014*COS(2*L)
1040 U=U+.00008*COS(L)
1050 W=-.00010-.04129*SIN(2*L)
1060 W=W+.03211*SIN(G)
1070 W=W+.00104*SIN(2*L-G)
1080 W=W-.00035*SIN(2*L+G)
1090 W=W-.00008*TT*SIN(G)
1100 '
1110 '    Compute Sun's RA and Dec
1120 S=W/SQR(U-V*V)
1130 A5=L+ATN(S/SQR(1-S*S))
1140 S=V/SQR(U):D5=ATN(S/SQR(1-S*S))
1150 R5=1.00021*SQR(U)
1160 RETURN
1165 '
1170 '     Calendar --> JD
1180 INPUT "Year, Month, Day";Y,M,D
1190 G=1: IF Y<1583 THEN G=0
1200 D1=INT(D): F=D-D1-.5
1210 J=-INT(7*(INT((M+9)/12)+Y)/4)
1220 IF G=0 THEN 1260
1230 S=SGN(M-9): A=ABS(M-9)
1240 J3=INT(Y+S*INT(A/7))
1250 J3=-INT((INT(J3/100)+1)*3/4)
1260 J=J+INT(275*M/9)+D1+G*J3
1270 J=J+1721027+2*G+367*Y
1280 IF F>=0 THEN 1300
1290 F=F+1: J=J-1
1300 RETURN
1310 '
1320 '   This program by Roger W. Sinnott calculates the times of
sunrise
1330 '   and sunset on any date, accurate to the minute within several
1340 '   centuries of the present.  It correctly describes what
happens in the
1350 '   arctic and antarctic regions, where the Sun may not rise or
set on
1360 '   a given date.  Enter north latitudes positive, west
longitudes
1370 '   negative.  For the time zone, enter the number of hours west
of
1380 '   Greenwich (e.g., 5 for EST, 4 for EDT).  The calculation is
1390 '   discussed in Sky & Telescope for August 1994, page 84.