Wohl für 32 Bit.
Code: Alles auswählen
;##############################################
;##############################################
; Diese Zeile weiter unten anpassen:If OpenLibrary(1,"C:\tnp_pur\swedll32.dll")
; Swiss Ephemeris - swedll32.LIB
;
; Interface pour Purebasic 4.0.x
;
; ftp://ftp.astro.com/pub/sweph/
; http://www.astro.com/swisseph/swephprg.htm
;
; ;##############################################
Declare sgn(vo.d)
Declare.d dms(x.d)
Declare donnees()
Declare saisie()
Global StartTime
Global jour
Global mois
Global annee
Global minut.d
Global heure.d
Global latitude
Global latminute
Global longitude
Global longminute
Global lat.d
Global lon.d
Global glat.d
Global glon.d
Global heuregmt.d
Global NS$
Global EO$
#SEFLG_JPLEPH=1
#SEFLG_SWIEPH=2
#SEFLG_MOSEPH=4
#SEFLG_SPEED=256
#SEFLG_HELCTR=8
#SEFLG_TRUEPOS=16
#SEFLG_J2000=32
#SEFLG_NONUT=64
#SEFLG_NOGDEFL=512
#SEFLG_NOABERR=1024
#SEFLG_EQUATORIAL=2048
#SEFLG_XYZ=4096
#SEFLG_RADIANS=8192
#SEFLG_BARYCTR=16384
#SEFLG_TOPOCTR=32768
#SEFLG_SIDERAL=65536
#SEFLG_HELCTR=8
#SEFLG_TRUEPOS=16
#SE_CALC_RISE=1
#SE_CALC_SET=2
#SE_CALC_MTRANSIT=4
#SE_CALC_ITRANSIT=8
#SE_ECL_NUT=-1
Dim x.d(6); déclaration du tableau x
Dim x2.d(6)
Dim cusp.d(13)
Dim ascmc.d(10)
Dim attr.d(20)
Dim tret.d(20)
Dim geopos.d(10)
Dim geoposx.d(10)
Dim xnasc.d(6)
Dim xndsc.d(6)
Dim xperi.d(6)
Dim xaphe.d(6)
Dim Position.d(50)
Dim NomPlanete.s(50)
Dim serr.s(255,0)
hcusps.d=0
pName.s=Space(256)
Enumeration 0 Step 1
#SE_GREG_CAL
#SE_JUL_CAL
#ID
EndEnumeration
#SE_ECL_NUT= -1
#SE_SUN = 0
#SE_MOON =1
#SE_MERCURY = 2
#SE_VENUS= 3
#SE_MARS= 4
#SE_JUPITER =5
#SE_SATURN= 6
#SE_URANUS= 7
#SE_NEPTUNE=8
#SE_PLUTO= 9
#SE_MEAN_NODE = 10
#SE_TRUE_NODE = 11
#SE_MEAN_APOG = 12
#SE_OSCU_APOG = 13
#SE_EARTH= 14
#SE_CHIRON= 15
#SE_PHOLUS= 16
#SE_CERES= 17
#SE_PALLAS= 18
#SE_JUNO= 19
#SE_VESTA= 20
#SE_INTP_APOG= 21
#SE_INTP_PERG= 22
#SE_NPLANETS= 23
#SE_FICT_OFFSET = 40
#SE_NFICT_ELEM= 15
;/* Hamburger Or Uranian "planets" */
#SE_CUPIDO= 40
#SE_HADES= 41
#SE_ZEUS= 42
#SE_KRONOS= 43
#SE_APOLLON =44
#SE_ADMETOS =45
#SE_VULKANUS =46
#SE_POSEIDON =47
;
;/* other fictitious bodies */
;
#SE_ISIS= 48
#SE_NIBIRU= 49
#SE_HARRINGTON =50
#SE_NEPTUNE_LEVERRIER =51
#SE_NEPTUNE_ADAMS =52
#SE_PLUTO_LOWELL =53
#SE_PLUTO_PICKERIN=54
#SE_AST_OFFSET=10000
Enumeration
#SPR_Terre=0
#SPR_OmbreTerre=1
#SPR_Lune=2
#SPR_OmbreLune=3
EndEnumeration
Global Dim nomplanete$(50)
Restore planetes
For n=0 To 22
Read.S NomPlanete$(n)
Next n
;##############################################
Prototype.d SWE_JulDay(annee,mois,jour,heure.d,flag)
Prototype.i SWE_RevJul(juliandate.d,flag,*annee,*mois,*jour,*heure)
Prototype.i SWE_Day_Of_Week(juliandate.d)
Prototype.d SWE_DegNorm(Angle.d)
Prototype.d SWE_date_conversion(annee,mois,jour,heure.d,cal.b,tjd.d)
Prototype.i SWE_Calc_ut(tjd.d,ipl,Iflag,*x,serr.s)
Prototype.i SWE_get_planet_name(ipl,pName.s)
Prototype.d SWE_deltat(tjd.d)
Prototype.i SWE_pheno(tjd.d,ipl,Iflag,*attr,serr.s)
Prototype.i SWE_rise_trans(tjd.d,ipl,starname.s,epheflag,rsmi,*geopos,atpress.d,attemp.d,*tret,serr.s)
Prototype.i SWE_houses_ex(tjd.d,Iflag,geolat.d,geolon.d,ihsy,*cusp,*ascmc)
Prototype.d SWE_sidtime(tjd.d)
Prototype.i SWE_houses_armc(armc.d,geolat.d,eps.d,ihsy,*cusp,*ascmc)
;##############################################
;################### premier mode ###########
If OpenLibrary(1,"C:\tnp_pur\swedll32.dll")
JulDay.SWE_JulDay = GetFunction(1,"_swe_julday@24")
RevJul.SWE_RevJul = GetFunction(1,"_swe_revjul@28")
Day_Of_Week.SWE_Day_Of_Week = GetFunction(1,"_swe_day_of_week@8")
DegNorm.SWE_DegNorm = GetFunction(1,"_swe_degnorm@8")
Date_conversion.SWE_date_conversion = GetFunction(1,"_swe_date_conversion@28")
Calc_ut.SWE_Calc_ut= GetFunction(1,"_swe_calc_ut@24")
get_planet_name.SWE_get_planet_name= GetFunction(1,"_swe_get_planet_name@8")
deltat.SWE_deltat= GetFunction(1,"_swe_deltat@8")
pheno.SWE_pheno= GetFunction(1,"_swe_pheno@24")
rise_trans.SWE_rise_trans= GetFunction(1,"_swe_rise_trans@52")
houses_ex.SWE_houses_ex= GetFunction(1,"_swe_houses_ex@40")
sidtime.SWE_sidtime= GetFunction(1,"_swe_sidtime@8")
houses_armc.SWE_houses_armc= GetFunction(1,"_swe_houses_armc@36")
Else
MessageRequester("Error!","Can't open library!",#MB_ICONERROR)
End
EndIf
Macro myDEBUG(y,m,d,h)
"Le "+RSet(Str(d),2,"0")+"/"+RSet(Str(m),2,"0")+"/"+RSet(Str(y),4,"0")+" à "+StrD(h,2)
EndMacro
Macro DeciMinut(a)
Int(a)+(a-Int(a))*0.60
EndMacro
;################# date actuelle ####################
annee=Year(Date())
jour=Day(Date())
mois=Month(Date())
heure.d=Hour(Date())
minut.d=Minute(Date())
saisie()
Debug ElapsedMilliseconds()
StartTime = ElapsedMilliseconds()
heure.d=heuregmt.d
geopos(0)=glon
geopos(1)=glat
geopos(2)=0
;
Iflag=#SEFLG_SWIEPH +#SEFLG_SPEED
tjd_ut.d=JulDay(annee,mois,jour,heure,#SE_JUL_CAL)
For nplanete=#SE_SUN To #SE_VESTA;#SE_PLUTO
Calc_ut(tjd_ut,nplanete,Iflag,@x.d(0),serr.s); par contre là il faut mettre le tableau ????
Position(nplanete)=x(0)
Debug position(nplanete)
Next nplanete
Debug "zeit"
Debug ElapsedMilliseconds()
;starttime= (ElapsedMilliseconds()-startime)/1000
If ((Position(1)<Position(0) And Position(0)-Position(1)<180) Or (Position(1)>Position(0) And Position(1)-Position(0)>180))
Elong.s=" Ouest"
Else
Elong.s= " Est"
EndIf
tsid.d=sidtime(tjd_ut)
ecart.d=deltat(tjd_ut)
ecart.d=ecart.d*86400
tsid.d=tsid+glon/15
armc.d=tsid*15
pheno(tjd_ut,#SE_MOON,#SEFLG_HELCTR,@attr.d(0),serr.s)
Debug "Angle de Phase "+ StrD(attr(0),2)
Debug "Phase "+StrD(attr(1),2)
Debug "Elongation "+StrD(attr(2),2)+Elong
Debug "Diamètre Apparent "+StrD(attr(3),2)
Debug "Magnitude apparente "+StrD(attr(4),2)
rise_trans(tjd_ut,#SE_SUN,"",#SEFLG_SWIEPH,#SE_CALC_RISE,@geopos.d(0),1013,15,@tret.d(0),serr.s)
RevJul(tret(0), #SE_JUL_CAL,@annee,@mois,@jour,@heure.d)
Debug "lever du soleil "+myDEBUG(annee,mois,jour,DeciMinut(heure))
rise_trans(tjd_ut,#SE_SUN,"",#SEFLG_MOSEPH,#SE_CALC_SET,@geopos.d(),1013,15,@tret.d(0),serr.s)
RevJul(tret(0), #SE_JUL_CAL,@annee,@mois,@jour,@heure.d)
Debug "coucher du soleil "+myDEBUG(annee,mois,jour,DeciMinut(heure))
rise_trans(tjd_ut,#SE_MOON,"",#SEFLG_SWIEPH,#SE_CALC_RISE,@geopos.d(0),1013,15,@tret.d(0),serr.s)
RevJul(tret(0), #SE_JUL_CAL,@annee,@mois,@jour,@heure.d)
Debug "lever de la lune "+myDEBUG(annee,mois,jour,DeciMinut(heure))
rise_trans(tjd_ut,#SE_MOON,"",#SEFLG_MOSEPH,#SE_CALC_SET,@geopos.d(),1013,15,@tret.d(0),serr.s)
RevJul(tret(0), #SE_JUL_CAL,@annee,@mois,@jour,@heure.d)
Debug "coucher de la lune "+myDEBUG(annee,mois,jour,DeciMinut(heure))
Calc_ut(tjd_ut,#SE_ECL_NUT,0,@x.d(0),serr.s)
eps_true.d= x(0)
houses_armc(armc.d,glat.d,eps_true.d,Asc("P"),@cusp.d(0),@ascmc.d(0))
;##############################################
If OpenWindow(#ID, 300, 50, 600, 1000, "Astrologie", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget) = 0
;Or CreateGadgetList(WindowID(#ID)) = 0
End
EndIf
StartDrawing(WindowOutput(#ID))
DrawingMode(1)
For n=0 To 48
FrontColor($E16941)
;If n<20 Or n >39
DrawText(10,50+pas,NomPlanete$(n))
DrawText(85,50+pas,RSet(StrD(dms(Position(n)),4),6," "))
pas+19
; EndIf
Next n
pas=0
For n=1 To 12
DrawText(200,50+pas,"Häuser "+Str(n)+" "+StrD(cusp.d(n),2))
pas+20
Next n
DrawText(200,10,"Placidus")
DrawText(370,10,"jultag "+StrD(tjd_ut))
DrawText(20,20,"Date: "+GetGadgetText(2)+"/"+GetGadgetText(3)+"/"+GetGadgetText(4))
StopDrawing()
;##############################################
Debug " "
jd1.d = JulDay(1988,1, 1,12.23,#SE_JUL_CAL)
Debug jd1
RevJul( jd1, #SE_JUL_CAL, @annee, @mois, @jour, @heure.d)
Debug myDEBUG(annee, mois, jour, heure)
;##############################################
jd2.d = JulDay(2006,2,16,14.00,#SE_GREG_CAL)
Debug jd2
RevJul( jd2, #SE_GREG_CAL, @annee, @mois, @jour, @heure.d)
Debug myDEBUG(annee, mois, jour, heure)
;##############################################
Select Day_Of_Week( jd2 )
Case 0: Debug "Lundi"
Case 1: Debug "Mardi"
Case 2: Debug "Mercredi"
Case 3: Debug "Jeudi"
Case 4: Debug "Vendredi"
Case 5: Debug "Samedi"
Case 6: Debug "Dimanche"
EndSelect
;##############################################
Debug DegNorm(375.33333)
;##############################################
Debug "Zeit"
Debug ElapsedMilliseconds()
done = #False
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
done = #True
Case #PB_Event_MoveWindow
Case #PB_Event_SizeWindow
Default
EndSelect
Until done = #True
CloseWindow(#ID)
DataSection
planetes:
Data.s "Soleil","Lune","Mercure","Venus","Mars","Jupiter","Saturne","Uranus","Neptune","Pluton","Meanod","truenode","Meanapog","Ostuapog","Earth","Chiron","Pholus","Ceres","Pallas","Juno","Vesta","Intpapog","Intperge"
EndDataSection
Procedure.d dms(x.d)
x = SGN(x) * (Int(Abs(x)) + Int((Abs(x + 0.008333) - Int(Abs(x))) * 60) / 100)
ProcedureReturn x
EndProcedure
Procedure sgn(vo.d)
If vo=>0
vo=1
EndIf
If vo<0
vo=-1
EndIf
ProcedureReturn vo.d
EndProcedure
Procedure saisie()
;;######################## defaut ############################
nom$="b"
lieu$="w"
jour=28
mois=6
annee=1948
heure.d=7
minut.d=21
latitude=53
Latminute=29
longitude=8
longminute=27
NS$="N"
EO$="O"
;############################################################
OpenWindow(1,20,150,500,500,"dialogue par (Kernadec)",#PB_Window_SystemMenu)
;CreateGadgetList(WindowID(1))
;######################## NOM ################################
StringGadget(0, 50, 40, 300, 20, nom$)
StringGadget(1, 50, 90, 300, 20, lieu$)
;#############################################################
;########### reste a traite les années bisextile #############
;########### sinon prendre une boite calendier #############
;######################### DATE ##############################
ComboBoxGadget(2,10,140,50,20,#PB_ComboBox_Editable)
;StringGadget(2,10,140,37,20"");40,#PB_ComboBox_Editable)
For x = 1 To 31
AddGadgetItem(2,-1,Str(x)) ;Jour
Next
SetGadgetState(2,jour-1)
ComboBoxGadget(3,60,140,50,20,#PB_ComboBox_Editable)
;StringGadget(3,50,140,37,20,#PB_ComboBox_Editable)
For x = 1 To 12
AddGadgetItem(3,-1,Str(x)) ;mois
Next
SetGadgetState(3,mois-1)
ComboBoxGadget(4,120,140,70,20,#PB_ComboBox_Editable)
For x = 1 To 2300
AddGadgetItem(4,-1,Str(x)) ;année
Next
SetGadgetState(4, Abs(annee-1))
;########################## HEURE ############################
ComboBoxGadget(5,210,140,50,20,#PB_ComboBox_Editable)
For x = 0 To 23
AddGadgetItem(5,-1,Str(x)) ;heure
Next
SetGadgetState(5,Abs(heure-1))
ComboBoxGadget(6,270,140,50,20,#PB_ComboBox_Editable)
For x = 0 To 59
AddGadgetItem(6,-1,Str(x)) ;minute
Next
SetGadgetState(6,Abs(minut-1))
;######################## LATITUDE ###########################
ComboBoxGadget(7,3,180,70,20, #PB_ComboBox_Editable)
For x = 0 To 89
AddGadgetItem(7,-1,Str(x)) ;latitude degrés
Next
SetGadgetState(7,Abs(latitude-1))
ComboBoxGadget(8,80,180,50,20,#PB_ComboBox_Editable)
For x = 0 To 59
AddGadgetItem(8,-1,Str(x)) ;latitude minutes
Next
SetGadgetState(8,Abs(latminute-1))
;######################## radio boutons ######################
FrameGadget(9, 10, 165, 110, 58, "Latitude en degrés")
OptionGadget(10, 19, 203, 45, 17, "&Nord")
OptionGadget(11, 69, 203, 45, 17, "&Sud")
SetGadgetState(10, 1)
;######################### LONGITUDE #########################
ComboBoxGadget(12,140,180,70,20,#PB_ComboBox_Editable)
For x = 0 To 179
AddGadgetItem(12,-1,Str(x)) ;longitude degrés
Next
SetGadgetState(12,Abs(longitude-1))
ComboBoxGadget(13,220,180,50,20,#PB_ComboBox_Editable)
;StringGadget(13,212,180,37,20,"")
For x = 0 To 59
AddGadgetItem(13,-1,Str(x)) ;longitude minutes
Next
SetGadgetState(13,Abs(longminute-1))
;######################## radio boutons ######################
;(si le n° d'optiongadjet est=16 il devient actif bug????)
;pourquoi n°16 = (buttongadjet DEFAUT) cela reste un mystere??
;dans ce cas peut etre mais pas grave il est devenu frame lol
;#############################################################
FrameGadget(16, 147, 165, 115, 58, "Longitude en degrés")
OptionGadget(14, 156, 203, 45, 17, "&Est")
OptionGadget(15, 204, 203, 45, 17, "&Ouest")
SetGadgetState(14, 1)
;#############################################################
;######################## boutons ############################
ButtonGadget(17, 10, 230, 110, 25, "&Annuler")
ButtonGadget(18, 147, 230, 115, 25, "&Confirmer")
;######################## titres #############################
TextGadget(19, 10, 40, 60, 20, "Nom:")
TextGadget(20, 10, 90, 60, 20, "Lieu:")
TextGadget(21, 15, 125, 120, 20, "Jour Mois Année")
TextGadget(22, 185, 125, 120, 20, "Heures Minutes")
TextGadget(23, 155, 143, 30, 20, "GMT:")
;#####################cmd Clavier ############################
AddKeyboardShortcut(1,#PB_Shortcut_Return,18)
AddKeyboardShortcut(1,#PB_Shortcut_C,18)
AddKeyboardShortcut (1,#PB_Shortcut_N,10)
AddKeyboardShortcut(1,#PB_Shortcut_S,11)
AddKeyboardShortcut(1,#PB_Shortcut_E,14)
AddKeyboardShortcut(1,#PB_Shortcut_O,15)
;#############################################################
;#############################################################
Repeat
event=WaitWindowEvent()
If Event = #PB_Event_Gadget Or Event = #PB_Event_Menu
Select EventGadget()
Case 10
SetGadgetState(10, 1)
Case 11
SetGadgetState(11, 1)
Case 14
SetGadgetState(14, 1)
Case 15
SetGadgetState(15, 1)
Case 17
If IsWindow(2)
CloseWindow(2)
EndIf
Case 18
donnees()
Break
OpenWindow(2,400,150,350,270,"resultats",#PB_Window_SystemMenu)
;#####################cmd Clavier ############################
AddKeyboardShortcut(2,#PB_Shortcut_Escape,17)
AddKeyboardShortcut(2,#PB_Shortcut_A,17)
;######################## Affiche ############################
StartDrawing(WindowOutput(2))
DrawingMode(1)
DrawText(2,20,"Nom: "+GetGadgetText(0))
DrawText(2,50,"Lieu: "+GetGadgetText(1))
DrawText(2,80,"Date: "+GetGadgetText(2)+"/"+GetGadgetText(3)+"/"+GetGadgetText(4))
DrawText(2,110,"heure: "+GetGadgetText(5)+"h"+GetGadgetText(6)+"' ")
DrawText(2,140,"Latitude: "+GetGadgetText(7)+"°"+GetGadgetText(8)+"' "+NS$)
DrawText(2,170,"Longitude: "+GetGadgetText(12)+"°"+GetGadgetText(13)+"' "+EO$)
DrawText(2,200,"convers heure : "+StrD(heuregmt,4))
DrawText(2,230,"convers lat: "+StrD(glat.d,4)+" <-> convers long: "+StrD(glon.d,4))
StopDrawing()
Case #PB_Event_CloseWindow
CloseWindow(1)
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
;######################################################################
EndProcedure
Procedure donnees()
; ermittelt den aktuellen Wert
; wartet 1000 Millisekunden
;############### Traitement des données ######################
nom$=GetGadgetText(0)
lieu$=GetGadgetText(1)
jour=ValD(GetGadgetText(2))
mois=ValD(GetGadgetText(3))
annee=ValD(GetGadgetText(4))
heure.d=ValD(GetGadgetText(5))
minut.d=ValD(GetGadgetText(6))
latitude=ValD(GetGadgetText(7))
latminute=ValD(GetGadgetText(8))
longitude=ValD(GetGadgetText(12))
longminute=ValD(GetGadgetText(13))
nom$="b"
lieu$="w"
jour=28
mois=6
annee=1948
heure.d=7
minut.d=21
latitude=53
Latminute=29
longitude=8
longminute=27
NS$="N"
EO$="O"
lat=latitude+(latminute/100)
lon=longitude+(longminute/100)
Debug jour
Debug mois
Debug annee
Debug heure.d
Debug minut.d
If GetGadgetState(10)
NS$="N"
Else
NS$="S"
lat=0-lat
EndIf;
If GetGadgetState(14)
EO$="E"
Else
EO$="O"
lon=0-lon
EndIf
Debug "länge breite"
Debug lon
Debug lat
heuregmt=heure+minut/60+seconde/3600
Debug heuregmt
glon.d=Int(lon)+((lon-Int(lon))*100)/60
glat.d=Int(lat)+((lat-Int(lat))*100)/60
Debug glon.d
Debug glat.d
EndProcedure