Výpočet východů a západů slunce
Výpočet východů a západů slunce
Ahoj lidi,
prosím o pomoc s algoritmem pro výpočet východů a západů slunce. Moje idea je napsat skript pro jednočipový procesor, který mi vypočte podle zadané polohy a aktuálního data čas východu a západu slunce.
Nevím nic o astronomii a matika taky není moje silná stránka, ale našel jsem tady na fóru odkaz na nějaký polopatický algoritmus výpočtu na adrese http://williams.best.vwh.net/sunrise_su ... orithm.htm .
Není tam bohužel příliš podrobný popis ani příklad výpočtu. Zkusil jsem ty vzorečky převést do excelu, ale vychází mi z toho nějaký hausnumera.
Chtěl bych poprosit někoho znalého, jestli by na to nemohl hodit očko, kde je bota
Odkaz na soubor: http://lehcivzduchu.cz/astro/astro.xlsx
Předem díky za pomoc
Tomáš
prosím o pomoc s algoritmem pro výpočet východů a západů slunce. Moje idea je napsat skript pro jednočipový procesor, který mi vypočte podle zadané polohy a aktuálního data čas východu a západu slunce.
Nevím nic o astronomii a matika taky není moje silná stránka, ale našel jsem tady na fóru odkaz na nějaký polopatický algoritmus výpočtu na adrese http://williams.best.vwh.net/sunrise_su ... orithm.htm .
Není tam bohužel příliš podrobný popis ani příklad výpočtu. Zkusil jsem ty vzorečky převést do excelu, ale vychází mi z toho nějaký hausnumera.
Chtěl bych poprosit někoho znalého, jestli by na to nemohl hodit očko, kde je bota
Odkaz na soubor: http://lehcivzduchu.cz/astro/astro.xlsx
Předem díky za pomoc
Tomáš
Výpočet východů a západů slunce
Ještě jsem objevil na stránce https://gist.github.com/Tafkas/4742250# ... sunrise-js kód napsaný v JavaScriptu podle tohoto příkladu, tak jsem to zkusil zadat s těmito údaji pro Prahu:
longitude = 14.433271;
latitude = 50.069815;
zenith = 96;
den v roce: 184 (14.6.)
Ale stejně vychází nějaký nesmysl, viz. http://www.lehcivzduchu.cz/astro/test.html
Vypocet vychodu slunce:
6.317537463501806
Vypocet zapadu slunce:
16.05236319962266
Skript: http://www.lehcivzduchu.cz/astro/computeSunrise.js
longitude = 14.433271;
latitude = 50.069815;
zenith = 96;
den v roce: 184 (14.6.)
Ale stejně vychází nějaký nesmysl, viz. http://www.lehcivzduchu.cz/astro/test.html
Vypocet vychodu slunce:
6.317537463501806
Vypocet zapadu slunce:
16.05236319962266
Skript: http://www.lehcivzduchu.cz/astro/computeSunrise.js
Kód: Vybrat vše
function computeSunrise(day, sunrise) {
/*Sunrise/Sunset Algorithm taken from
http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
inputs:
day = day of the year
sunrise = true for sunrise, false for sunset
output:
time of sunrise/sunset in hours */
//lat, lon for Praha
var longitude = 14.433271;
var latitude = 50.069815;
var zenith = 96;
var D2R = Math.PI / 180;
var R2D = 180 / Math.PI;
// convert the longitude to hour value and calculate an approximate time
var lnHour = longitude / 15;
var t;
if (sunrise) {
t = day + ((6 - lnHour) / 24);
} else {
t = day + ((18 - lnHour) / 24);
};
//calculate the Sun's mean anomaly
M = (0.9856 * t) - 3.289;
//calculate the Sun's true longitude
L = M + (1.916 * Math.sin(M * D2R)) + (0.020 * Math.sin(2 * M * D2R)) + 282.634;
if (L > 360) {
L = L - 360;
} else if (L < 0) {
L = L + 360;
};
//calculate the Sun's right ascension
RA = R2D * Math.atan(0.91764 * Math.tan(L * D2R));
if (RA > 360) {
RA = RA - 360;
} else if (RA < 0) {
RA = RA + 360;
};
//right ascension value needs to be in the same qua
Lquadrant = (Math.floor(L / (90))) * 90;
RAquadrant = (Math.floor(RA / 90)) * 90;
RA = RA + (Lquadrant - RAquadrant);
//right ascension value needs to be converted into hours
RA = RA / 15;
//calculate the Sun's declination
sinDec = 0.39782 * Math.sin(L * D2R);
cosDec = Math.cos(Math.asin(sinDec));
//calculate the Sun's local hour angle
cosH = (Math.cos(zenith * D2R) - (sinDec * Math.sin(latitude * D2R))) / (cosDec * Math.cos(latitude * D2R));
var H;
if (sunrise) {
H = 360 - R2D * Math.acos(cosH)
} else {
H = R2D * Math.acos(cosH)
};
H = H / 15;
//calculate local mean time of rising/setting
T = H + RA - (0.06571 * t) - 6.622;
//adjust back to UTC
UT = T - lnHour;
if (UT > 24) {
UT = UT - 24;
} else if (UT < 0) {
UT = UT + 24;
}
//convert UT value to local time zone of latitude/longitude
localT = UT + 1;
//convert to Milliseconds
//return localT * 3600 * 1000;
return UT;
}
Výpočet východů a západů slunce
Ahoj, dívám se na to jen zběžně (do těch javascriptů), protože někam vyjíždím. Ale zdá se mně, že je tam víc problémů...
1. Parametr zenith = Sun's zenith for sunrise/sunset. Má být ne 96, to je hodnota pro občanský soumrak, ale těch 90 degrees 50' (tedy cca 90.83)...
2. Zdá se mně, že parametr "day" nemůže být pro dnešek 184, ať počítám jak počítám...
3. Každopádně ten parametr dne nějak někde vstupuje do výpočtu nešťastně. Když vložím "0", tak vyjde hezký výsledek pro 1. leden. Ale pro hodnotu 80 (kolem jarní rovnodennosti), už ne... Určitě se na ten parametr podívej, jestli s ním zacházíš stejně jako je v originálním kódu. Třeba ale někdo chytřejší tam objeví chybu na první pohled. Jinak se na to podívám večer.
Standa
1. Parametr zenith = Sun's zenith for sunrise/sunset. Má být ne 96, to je hodnota pro občanský soumrak, ale těch 90 degrees 50' (tedy cca 90.83)...
2. Zdá se mně, že parametr "day" nemůže být pro dnešek 184, ať počítám jak počítám...
3. Každopádně ten parametr dne nějak někde vstupuje do výpočtu nešťastně. Když vložím "0", tak vyjde hezký výsledek pro 1. leden. Ale pro hodnotu 80 (kolem jarní rovnodennosti), už ne... Určitě se na ten parametr podívej, jestli s ním zacházíš stejně jako je v originálním kódu. Třeba ale někdo chytřejší tam objeví chybu na první pohled. Jinak se na to podívám večer.
Standa
Výpočet východů a západů slunce
V tom Excelovském souboru máš chyby v tom, že předáváš goniometrickým i cyklometrickým funkcím argumenty ve stupních. Tyto funkce ale pracují s radiány!
Edit: Druhá chyba: V řádce 28 místo dělení patnácti odečítáš.
Na řádce 22 pak nemáš obecně platnou opravu do rozsahu 0-360° ale zrovna pro dnešek to nevadí.
Po těchto opravách to již funguje. Pouze čas západu vyjde záporný a je třeba přičíst 24h a nezapomenout, že je to v UT
Edit: Druhá chyba: V řádce 28 místo dělení patnácti odečítáš.
Na řádce 22 pak nemáš obecně platnou opravu do rozsahu 0-360° ale zrovna pro dnešek to nevadí.
Po těchto opravách to již funguje. Pouze čas západu vyjde záporný a je třeba přičíst 24h a nezapomenout, že je to v UT
Výpočet východů a západů slunce
Ještě jde o to, k čemu ten výpočet a s jakou přesností potřebuješ.
lepší rada žádná než špatná
milantos(šnek)centrum(puntík) cz
milantos(šnek)centrum(puntík) cz
Výpočet východů a západů slunce
Cau lidi,
diky za rady! Co se tyka tech vypoctu, tak tem opravdu nerozumim, asi jako kdyby mi nekdo nadaval ::). V podstate mi slo o to v nejakym srozumitelnym jazyce zprovoznit spravny vypocet, abych se mel ceho chytit a spravne pak rozchodit takovyto vypocet v jednocipovem mikroprocesoru. V podstate pro me je vyuziti takove, jako treba zapinat a vypinat osvetleni podle vypocteneho casu a k tomu nejake dalsi funkce. Takze ta presnost ani nemusi byt nijak zvlast precizni.
Nicmene se mi nakonec podarilo diky vasim radam odhalit botu v tom JavaScriptu. Jednak jsem tam mel spatne zadany cislo dne v roce a pak tam byla chyba v uhlu slunce pod horizontem.
Ted jsem to poupravil a vysledek pro zadane parametry celkem spravny:
Vychod slunce v UTC
2:52
Zapad slunce v UTC
19:13
Ale jeste to budu muset otestovat pro ruzne souradnice a data.
Tady prikladam funkcni skript v html dokumentu, treba se to bude nekomu hodit
diky za rady! Co se tyka tech vypoctu, tak tem opravdu nerozumim, asi jako kdyby mi nekdo nadaval ::). V podstate mi slo o to v nejakym srozumitelnym jazyce zprovoznit spravny vypocet, abych se mel ceho chytit a spravne pak rozchodit takovyto vypocet v jednocipovem mikroprocesoru. V podstate pro me je vyuziti takove, jako treba zapinat a vypinat osvetleni podle vypocteneho casu a k tomu nejake dalsi funkce. Takze ta presnost ani nemusi byt nijak zvlast precizni.
Nicmene se mi nakonec podarilo diky vasim radam odhalit botu v tom JavaScriptu. Jednak jsem tam mel spatne zadany cislo dne v roce a pak tam byla chyba v uhlu slunce pod horizontem.
Ted jsem to poupravil a vysledek pro zadane parametry celkem spravny:
Vychod slunce v UTC
2:52
Zapad slunce v UTC
19:13
Ale jeste to budu muset otestovat pro ruzne souradnice a data.
Tady prikladam funkcni skript v html dokumentu, treba se to bude nekomu hodit
Kód: Vybrat vše
<html>
<head>
<title>Test2</title>
</head>
<body>
<script type="text/javascript">
document.write("Vychod slunce v UTC<BR>");
document.write(computeSunrise("sunrise"));
document.write("<BR><BR>Zapad slunce v UTC<BR>");
document.write(computeSunrise(""));
function computeSunrise(sunrise) {
//lat, lon for Praha
var day = 165
var longitude = 14.433271;
var latitude = 50.069815;
var zenith = 90.833333333;
var D2R = Math.PI / 180;
var R2D = 180 / Math.PI;
// convert the longitude to hour value and calculate an approximate time
var lnHour = longitude / 15;
var t;
if (sunrise) {
t = day + ((6 - lnHour) / 24);
} else {
t = day + ((18 - lnHour) / 24);
};
//calculate the Sun's mean anomaly
M = (0.9856 * t) - 3.289;
//calculate the Sun's true longitude
L = M + (1.916 * Math.sin(M * D2R)) + (0.020 * Math.sin(2 * M * D2R)) + 282.634;
if (L > 360) {
L = L - 360;
} else if (L < 0) {
L = L + 360;
};
//calculate the Sun's right ascension
RA = R2D * Math.atan(0.91764 * Math.tan(L * D2R));
if (RA > 360) {
RA = RA - 360;
} else if (RA < 0) {
RA = RA + 360;
};
//right ascension value needs to be in the same qua
Lquadrant = (Math.floor(L / (90))) * 90;
RAquadrant = (Math.floor(RA / 90)) * 90;
RA = RA + (Lquadrant - RAquadrant);
//right ascension value needs to be converted into hours
RA = RA / 15;
//calculate the Sun's declination
sinDec = 0.39782 * Math.sin(L * D2R);
cosDec = Math.cos(Math.asin(sinDec));
//calculate the Sun's local hour angle
cosH = (Math.cos(zenith * D2R) - (sinDec * Math.sin(latitude * D2R))) / (cosDec * Math.cos(latitude * D2R));
var H;
if (sunrise) {
H = 360 - R2D * Math.acos(cosH)
} else {
H = R2D * Math.acos(cosH)
};
H = H / 15;
//calculate local mean time of rising/setting
T = H + RA - (0.06571 * t) - 6.622;
//adjust back to UTC
UT = T - lnHour;
if (UT > 24) {
UT = UT - 24;
} else if (UT < 0) {
UT = UT + 24;
}
//convert UT value to local time zone of latitude/longitude
//localT = UT + 1;
//prevod na hodiny
var hrs = parseInt(Number(UT));
var min = Math.round((Number(UT)-hrs) * 60);
return hrs+':'+min;
}
</script>
</body>
</html>
Výpočet východů a západů slunce
V podstate pro me je vyuziti takove, jako treba zapinat a vypinat osvetleni podle vypocteneho casu
Na to perfektně funguje soumrakový spínač se světelnou sondou. (Ale proč to dělat jednoduše, když by to šlo udělat složitěji...)
Na to perfektně funguje soumrakový spínač se světelnou sondou. (Ale proč to dělat jednoduše, když by to šlo udělat složitěji...)
UL 6", UL 14", Meopta AD, 70/900, CZ 8x30, 7x50,
okulary: ATC 32/8/4, Cz 10/16/20, GSO 30, SPL25, TV Radian 18/10/6, TS 8,Vixen LV 4/2,5
filtr: O Ill, UHC, H-beta, solar
http://planety.g6.cz/
http://www.boto.cz
http://elon254.rajce.idnes.cz/
okulary: ATC 32/8/4, Cz 10/16/20, GSO 30, SPL25, TV Radian 18/10/6, TS 8,Vixen LV 4/2,5
filtr: O Ill, UHC, H-beta, solar
http://planety.g6.cz/
http://www.boto.cz
http://elon254.rajce.idnes.cz/
Výpočet východů a západů slunce
Jasne, v hodne pripadech si vystacis se soumrakovym spinacem. A pak mas treba pripad, ze uz neni mozne natahnout dalsi kabel do rozvadece pro centralni rizeni, nebo potrebujes neco rozsvitit se soumrakem a chces, aby se to ve dve rano vypnulo, ale treba jen od pondelka do patku atd.. potrebujes tam dalsi funkce, podminky, zavislosti, ma to s necim komunikovat a tak.. Muzes to kombinovat s dalsima prvkama, delat harakiri.. Proste, potom nastava otazka co je jednoduse a co je slozite .
Výpočet východů a západů slunce
No, ale soumrak je velmi proměnlivá veličina , pokud jde o jeho délku ( léto -zima), takže bych nevycházel z času západu /východu, ale z doby , kdy dosáhne Slunce určité hranice pod obzorem- potom by mělo být osvětlení krajiny stejné. Možná, že vyhovuje přesně onen občanský soumrak, kdy je Slunce horním okrajem 6°pod obzorem - čili tak nějak, jak jsi to měl na začátku -zenitová vzdálenost Slunce cca 96°
lepší rada žádná než špatná
milantos(šnek)centrum(puntík) cz
milantos(šnek)centrum(puntík) cz
Výpočet východů a západů slunce
Presne tak. To uz je pak jen vec aktualniho nastaveni. Obcansky soumrak, nebo par minut pred tim.. to je hracka, kdyz uz se vzorecky doberou toho ceho maji
Lidi, jeste jednou dekuju za pomoc !
Lidi, jeste jednou dekuju za pomoc !
- Psion
- Příspěvky: 11571
- Registrován: 02. 01. 2001, 05:03
- Bydliště: Praha
- Věk: 61
- Kontaktovat uživatele:
Výpočet východů a západů slunce
On je i rozdíl, zda je zataženo, nebo jasno a samozřejmě taky záleží na místě, kde je umístěno čidlo apod., takže soumrakový spínač je v tomto podle mě lepší.