Moonphase

Hvordan beregne månefaser
bidragsyter: ALAN GRAFF product: {Som Robert Forbes sa til alle på 25 april 94 ...
RF > Alle som har noen anelse om hvordan å lage en algoritme for å RF > beregne phase gitt dato
Her ya go:
TYPE DATETYPE = record dag: WORD;? MÅNED: WORD; ÅR: WORD; dow: ord; ende; product: {============================================ =====================}
Prosedyre GregorianToJulianDN (År, Måned, Dag: Integer; Var JulianDN: LongInt); Var Century, XYear: LongInt;
begin {GregorianToJulianDN} Hvis Måned < = 2 da begynne År: = pred (år); Måned: = måned + 12; ende; Måned: = måned - 3; Århundre: = År div 100; XYear: = År mod 100; Århundre: = (tallet * D1) shr 2; XYear: = (XYear * D0) shr 2; JulianDN: = ((((måned * 153) + 2) div 5) + Day) + D2 + XYear + Century; ende; {GregorianToJulianDN} product: {=========================================== ======================}
Funksjon phase (Dato: Datetype): Fast, plakater (********** ************************************************** ***) (*) (* Bestemmer OMTRENTLIG fase av månen (prosent tent) *) (* 0,00 = Ny måne, 1.00 = Full moon *) (* På grunn av avrunding, fulle verdiene kan muligens aldri nås *) (* Gjelder fra okt femten, 1582-28 februar 4000 *) (* Beregninger og BASIC-programmet finnes i *) (* " 119 Praktisk programmer for TRS-80 Pocket Computer " av *) (* John Clark Craig , TAB Books, 1982 *) (* Konvertering til Turbo Pascal av Alan Graff, Wheelersburg, OH *) (*) (*********************** ****************************************)
Var j: longint; m: real;
Begynn GregorianToJulianDN (Date.Year, Date.Month, Date.Day, J); M: = (J + 4,867) /29,53058; M: = 2 * (M-Int (m)) - 1; Phase: = Abs (M); end;



Previous:
Next Page: