Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Räkna ut månfas för ett givet datum
|
Kategori: Matematik
Inlagt: 2004-10-23
Läst: 1527
Inlagt av: Staffan Berg
|
Beskrivning |
Detta trevliga exempel returnerar aktuell månfas för ett angivet datum. Se vidare beskrivning under Function MoonPhase.
|
Kod |
TYPE DATETYPE = record day:WORD; MONTH:WORD; YEAR:WORD; dow:word; end; {=================================================================} Procedure GregorianToJulianDN(Year, Month, Day:Integer; var JulianDN :LongInt); var Century, XYear : LongInt; begin //GregorianToJulianDN If Month <= 2 then begin Year := pred(Year); Month := Month + 12; end; Month := Month - 3; Century := Year div 100; XYear := Year mod 100; Century := (Century * D1) shr 2; XYear := (XYear * D0) shr 2; JulianDN := ((((Month * 153) + 2) div 5) + Day) + D2 + XYear + Century; end; //GregorianToJulianDN //================================================================= Function MoonPhase(Date:Datetype):Real; //Determines APPROXIMATE phase of the moon (percentage lit) // 0.00 = New moon, 1.00 = Full moon //Due to rounding, full values may possibly never be reached //Valid from Oct. 15, 1582 to Feb. 28, 4000 var j:longint; m:real; Begin GregorianToJulianDN(Date.Year,Date.Month,Date.Day,J); M:=(J+4.867)/ 29.53058; M:=2*(M-Int(m))-1; MoonPhase:=Abs(M); end;
|
|
|