Active TopicsActive Topics  Display List of Forum MembersMemberlist  Search The ForumSearch  HelpHelp
  RegisterRegister  LoginLogin
PowerHome Programming
 PowerHome Messageboard : PowerHome Programming
Subject Topic: Moonphase VBS in PH Post ReplyPost New Topic
Author
Message << Prev Topic | Next Topic >>
krommetje
Super User
Super User
Avatar

Joined: December 29 2004
Location: Netherlands
Online Status: Offline
Posts: 695
Posted: March 15 2010 at 10:38 | IP Logged Quote krommetje

Hey guys,

Here I am again... I've found this little thing:

Code:

' Moonphase.vbs
' 3/16/2002
' Copyright Paul R. Sadowski <aa089(at)bfn.org>
'===============================================
option explicit
MoonAge(Date)

Sub MoonAge(strDate)
dim tmp, arrtmp, strmonth, strday, stryear, strsep
dim yy, y, m, d, p2, mm, k1, k2, k3, l, j, v, ip, ag, dp, di, la
dim lo, po, rp, np, phase, thisphase

Tmp = InStr(1, strDate, "/")
if Tmp <> 0 then
strSep = "/"
else
Tmp = InStr(1, strDate, "-")
strSep = "-"
end if

arrTmp = Split(strDate, strSep,3)
strMonth = arrTmp(0)
strDay = arrTmp(1)
strYear = arrTmp(2)

Y = strYear
M = strMonth
D = strDay
P2=2*3.14159

YY=Y-int((12-M)/10)
MM=M+9
if MM>=12 then
MM=MM-12
end if
K1=int(365.25*(YY+4712))
K2=int(30.6*MM+.5)
K3=int(int((YY/100)+49)*.75)-38

' JD for dates in Julian calendar
J=K1+K2+D+59
if J>2299160 then
' For Gregorian calendar
J=J-K3
end if

' J is the Julian date at 12h UT on day in question

' Calculate illumination (synodic) phase
V=(J-2451550.1)/29.530588853
V=V-int(V)
if V<0 then
V=V+1
end if
IP=V

' Moon's age in days
AG=IP*29.53

' Convert phase to radians
IP=IP*P2

' Calculate distance from anomalistic phase
V=(J-2451562.2)/27.55454988
V=V-int(V)
if V<0 then
V=V+1
end if
DP=V
DP=DP*P2: ' Convert to radians
DI=60.4-3.3*COS(DP)-.6*COS(2*IP-DP)-.5*COS(2*IP)

' Calculate latitude from nodal (draconic) phase
V=(J-2451565.2)/27.212220817
V=V-int(V)
if V<0 then
V=V+1
end if
NP=V

' Convert to radians
NP=NP*P2
LA=5.1*SIN(NP)

' Calculate longitude from sidereal motion
V=(J-2451555.8)/27.321582241
' Normalize values to range 0 to 1
V=V-int(V)
if V<0 then
V=V+1
end if

RP=V
LO=360*RP+6.3*SIN(DP)+1.3*SIN(2*IP-DP)+.7*SIN(2*IP)

' phases from
'http://home.hiwaay.net/~krcool/Astro/moon/moonphase/
Phase = Array ( "new", "waxing crescent", "in its first quarter", _
"waxing gibbous", "full", "waning gibbous", _
"in its last quarter", "waning crescent" )
select case int(AG)
case 0, 29
ThisPhase = 0
case 1, 2, 3, 4, 5, 6
ThisPhase = 1
case 7
ThisPhase = 2
case 8, 9, 10, 11, 12, 13
ThisPhase = 3
case 14
ThisPhase = 4
case 15, 16, 17, 18, 19, 20, 21
ThisPhase = 5
case 22
ThisPhase = 6
case 23, 24, 25, 26, 27, 28
ThisPhase = 7
end select


wscript.echo "Moon's age (days): " & Int(AG)
wscript.echo "Moon's phase: " & Phase(ThisPhase)
wscript.echo "Distance (Earth radii): " & FormatNumber(DI,2)
wscript.echo "Ecliptic latitude (degrees): " & FormatNumber(LA,2)
wscript.echo "Ecliptic longitude (degrees): " & FormatNumber(LO,2)

End Sub


How can I get this into PH as a macro which stores the output in the VBS as a GV?

or do any of you guys have a macro already in use?
Peter


Edited by krommetje - March 15 2010 at 10:44
Back to Top View krommetje's Profile Search for other posts by krommetje Visit krommetje's Homepage
 

If you wish to post a reply to this topic you must first login
If you are not already registered you must first register

  Post ReplyPost New Topic
Printable version Printable version

Forum Jump
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot delete your posts in this forum
You cannot edit your posts in this forum
You cannot create polls in this forum
You cannot vote in polls in this forum