
-----------------------------------
nikelblue
06 Noi 2006 19:19

Formula de calcul pentru rasaritul Soarelui
-----------------------------------
Buna,

Sunt programator si am nevoie intr-una din aplicatiile mele de formulele de calul ale rasaritului si apusului soarelui. Fiind un forum dedicat am sperat ca ma puteti ajuta cu un titlu de carte sau un link unde as putea gasi aceste informatii.

Imi cer scuze daca acest subiect nu face parte din topicul acestui forum.

Va multumesc.

-----------------------------------
cris
07 Noi 2006 09:53


-----------------------------------
http://www.moonstick.com/sunriseset.htm

-----------------------------------
Doru Dragan
07 Noi 2006 11:45


-----------------------------------
Un program BASIC care face calculul rasaritului si apusului de Soare.
Instructiunile cred ca sunt suficient de clare pentru a fi portate in orice alt limbaj. Ce urmeaza dupa apostrof sunt comentarii. Trebuie sa inlocuiesti latitudinea si longitudinea locului. Cele din program sunt de la Timisoara :D 

PI=4*ATN(1): DR=PI/180:RD=180/PI
B5=45.77                                                    'Latitudinea locului
L5=21.30                                                    'Longitudinea locului
H=-2:B5=DR*B5
INPUT "DATA (ZIUA,LUNA, ANUL):"; ZI,LU,AN
anul=an
ziua=zi
luna=lu
N=INT(275*luna/9)-2*INT((luna+9)/12)+ziua-30      'Numarul zilei din an
L0=4.8771+.0172*(N+.5-L5/360)             'Longitudinea medie m Soarelui
C=.03342*SIN(L0+1.345)
C2=RD*(ATN(TAN(L0+C))-ATN(.9175*TAN(L0+C))-C)     'Ecuatia timpului
SD=0.3978*SIN(L0+C)
CD=SQR(1-SD*SD)
SC=(SD*SIN(B5)+.0145)/(COS(B5)*CD)
IF ABS(C)>1 THEN GOTO 9
C3=RD*ATN(SC/SQR(1-SC*SC))                          'Refractia atmosferica
R1=6-H-(L5+C2+C3)/15
HR$=str$(INT(R1))
MR$=str$(INT((R1-val(HR$))*60))
S1=18-H-(L5+C2-C3)/15
HS$=str$(INT(S1))
MS$=str$(INT((S1-val(HS$))*60))
? "Soarele rasare: "+HR$+":"+MR$
? "      si apune: "+HS$+":"+MS$
END

9 IF SC>1 THEN ?"SOARELE SUS TOATA ZIUA"
   IF SC<-1 THEN ?"SOARELE JOS TOATA ZIUA"

-----------------------------------
nikelblue
07 Noi 2006 13:26


-----------------------------------
Multumesc mult pentru ambele raspunsuri. Cred ca voi alege calea cea mai simpla pentru mine: conversia din limbajul BASIC. Algoritmul nu va fi folosit in scopuri comerciale iar in documentatie voi specifica sursa acestuia. Daca exista restrictii de utilizare ale algoritmului va rog sa le specificati.

-----------------------------------
Doru Dragan
07 Noi 2006 13:33


-----------------------------------
Eu am preluat si adaptat algoritmul dintr-o revista Ciel et space asa ca "dar din dar se face rai" :) Poti sa-l folosesti cum crezi de cuviinta. M-as bucura daca l-ai folosi in scopuri comerciale. Atunci as cere si eu un procent. :D

-----------------------------------
nikelblue
07 Noi 2006 13:51


-----------------------------------
Atunci, daca se va ajunge la scopuri comerciale va voi contacta pentru negocieri  :)  (dupa cum ati spus: "dar din dar se face rai").

-----------------------------------
Abel Cavași
28 Apr 2007 09:35


-----------------------------------
Un program BASIC care face calculul rasaritului si apusului de Soare.
Instructiunile cred ca sunt suficient de clare pentru a fi portate in orice alt limbaj. Ce urmeaza dupa apostrof sunt comentarii. Trebuie sa inlocuiesti latitudinea si longitudinea locului. Cele din program sunt de la Timisoara :D 

PI=4*ATN(1): DR=PI/180:RD=180/PI
B5=45.77                                                    'Latitudinea locului
L5=21.30                                                    'Longitudinea locului
H=-2:B5=DR*B5
INPUT "DATA (ZIUA,LUNA, ANUL):"; ZI,LU,AN
anul=an
ziua=zi
luna=lu
N=INT(275*luna/9)-2*INT((luna+9)/12)+ziua-30      'Numarul zilei din an
L0=4.8771+.0172*(N+.5-L5/360)             'Longitudinea medie m Soarelui
C=.03342*SIN(L0+1.345)
C2=RD*(ATN(TAN(L0+C))-ATN(.9175*TAN(L0+C))-C)     'Ecuatia timpului
SD=0.3978*SIN(L0+C)
CD=SQR(1-SD*SD)
SC=(SD*SIN(B5)+.0145)/(COS(B5)*CD)
IF ABS(C)>1 THEN GOTO 9
C3=RD*ATN(SC/SQR(1-SC*SC))                          'Refractia atmosferica
R1=6-H-(L5+C2+C3)/15
HR$=str$(INT(R1))
MR$=str$(INT((R1-val(HR$))*60))
S1=18-H-(L5+C2-C3)/15
HS$=str$(INT(S1))
MS$=str$(INT((S1-val(HS$))*60))
? "Soarele rasare: "+HR$+":"+MR$
? "      si apune: "+HS$+":"+MS$
END

9 IF SC>1 THEN ?"SOARELE SUS TOATA ZIUA"
   IF SC<-1 THEN ?"SOARELE JOS TOATA ZIUA"
Doru, cred că ar fi mai ușor de utilizat acest program dacă l-ai transforma într-o foaie de calcul în ale cărei celule să pui formulele corespunzătoare.
Așa ar putea fi folosit și de cineva care nu știe să programeze. 
Aș fi transformat eu programul, dar, necunoscând prea bine problema, s-ar putea să greșesc formulele de calcul.

-----------------------------------
Andi
06 Ian 2008 11:49


-----------------------------------
Am "ronțăit" programul și cred că linia
IF ABS(C)>1 THEN GOTO 9
trebuie scrisă
IF ABS(SC)>1 THEN GOTO 9
Precizia programului este de circa 1 minut.

-----------------------------------
Doru Dragan
06 Ian 2008 18:21


-----------------------------------
Cred ca ai dreptate. Am mai "sapat" si eu pe net si am gasit ceva care seamana destul de bine cu ce am eu:
http://pagesperso-orange.fr/ymasse/gnomon/coulev.htm

-----------------------------------
Andi
06 Ian 2008 19:02


-----------------------------------
Splendid, "merci beaucoup" pentru adresă!
Programul dădea eroare dacă latitudinea locului trecea de cercul polar nord sau sud.
Poate adunăm programe într-un topic separat?
