2009-04-02, 16:14
  #1
Medlem
Oddishs avatar
Om någon vet hur man räknar ut månfaser skulle jag vara väldigt tacksam för en liten förklaring eller kanske en bra länk.

Exempel: http://www.dinstartsida.se/kalender-manfaser.asp
Citera
2009-04-02, 16:28
  #2
Medlem
micaeles avatar
Vill du veta hur man skriver det för webben? PHP, Javascript, HTML, Perl, CGI, C, Python?
Eller vill du bara ha själva algoritmen för hur månfaser fungerar - 29.5 dagar är vad det tar att gå igenom alla faser.
Citera
2009-04-02, 17:10
  #3
Medlem
fatattacks avatar
http://www.voidware.com/moon_phase.htm
Citera
2009-04-02, 20:21
  #4
Medlem
Oddishs avatar
Citat:
Ursprungligen postat av fatattack
http://www.voidware.com/moon_phase.htm
Tackar för den! Jag kör php men det där ska jag nog kunna översätta.
Citera
2009-04-03, 10:00
  #5
Medlem
Oddishs avatar
Alright, nu har jag gjort ett försök att översätta till PHP men har stött på syntax jag inte greppar. Det gäller de bortkommenterade raderna i koden nedan, alltså:

++m

Vad är motsvarigheterna till ovan rad i PHP?

$b = $b & 7

Denna rad fungerar som den är, men jag vill gärna förstå vad den gör. Ampersand används väl för att tilldela en variabel ett värde "by reference"? Typ: &$foo men vad har ampersanden för funktion i det här fallet?

[PHP]function moonPhase($y=2009, $m=4, $d=2) {

if ($m < 3) {
$y--;
$m += 12;
}

//++m;

$c = 365.25 * $y;
$e = 30.6 * $m;
$jd = $c + $e + $d - 694039.09; // jd is total days elapsed
$b = (int)jd; // int(jd) -> b, take integer part of jd
$jd -= $b; // subtract integer part to leave fractional part of original jd

$b = $jd * 8 + 0.5; // scale fraction from 0-8 and round by adding 0.5
//$b = $b & 7; // 0 and 8 are the same so turn 8 into 0

return $b;
}[/PHP]

Default-värdena till funktionen är endast för att testa ett datum som "ger utslag".
Citera
2009-04-03, 10:09
  #6
Medlem
Oddishs avatar
Hittade för övrigt följande som verkar sjyst:
http://jivebay.com/2008/09/07/calculating-the-moon-phase/
Citera
2009-04-03, 10:16
  #7
Medlem
Wobins avatar
Citat:
Ursprungligen postat av Oddish
$b = $b & 7

Enligt beskrivningen: 0 and 8 are the same so turn 8 into 0 så borde man kunna ersätta den med:
Kod:
$b = $b % 8
Citera
2009-04-03, 10:46
  #8
Medlem
Oddishs avatar
Men det var väl själva fan då... Den här funktionen ger helt sjuka värden. Den påstår att det är fullmåne fyra dagar i rad (8-11 april) medan samtliga andra kalendrar jag tittar på säger endast 9 april.

Jag tror jag skiter i det här och matar in manuellt från http://aa.usno.navy.mil/data/docs/MoonPhase.php#y2009 istället.

Så här ser månfaserna ut i april enligt funktionen:

1 april Quarter Moon (2)
2 april Quarter Moon (2)
3 april Quarter Moon (2)
4 april Waxing Gibbous Moon (3)
5 april Waxing Gibbous Moon (3)
6 april Waxing Gibbous Moon (3)
7 april Waxing Gibbous Moon (3)
8 april Full Moon (4)
9 april Full Moon (4)
10 april Full Moon (4)
11 april Full Moon (4)
12 april Waning Gibbous Moon (5)
13 april Waning Gibbous Moon (5)
14 april Waning Gibbous Moon (5)
15 april Last Quarter Moon (6)
16 april Last Quarter Moon (6)
17 april Last Quarter Moon (6)
18 april Last Quarter Moon (6)
19 april Waning Crescent Moon (7)
20 april Waning Crescent Moon (7)
21 april Waning Crescent Moon (7)
22 april Waning Crescent Moon (7)
23 april New Moon (0)
24 april New Moon (0)
25 april New Moon (0)
26 april New Moon (0)
27 april Waxing Crescent Moon (1)
28 april Waxing Crescent Moon (1)
29 april Waxing Crescent Moon (1)
30 april Quarter Moon (2)
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in