papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Calculatrice Équinoxes et Solstices Lun 24 Juin 2019 - 4:55 | |
| - Code:
-
rem ============================================================================ rem Calculatrice Equinoxes et Solstices rem ============================================================================ Init() GUI() end rem ============================================================================ SUB Init() label clic,close dim y,t,year,n19, n20, n21, n22 dim dayStr$, hourStr$, monthStr$, dayNameStr$ dim f%,res%, WB%, url$ degrees END_SUB rem ============================================================================ SUB GUI() dim_local i width 0,700 : height 0,500 shape 10 : shape_rectangle_rounded 10 : top 10,10 : left 10,50 width 10,600 : height 10,30 : color 10,250,150,50 shape 20 : shape_rectangle_rounded 20 : top 20,50 : left 20,50 width 20,600 : height 20,400 : color 20,50,150,250 alpha 30 : top 30,15 : left 30,200 : color 30,255,255,255 : font_color 30,0,0,255 caption 30," Calculatrice Equinoxes et Solstices " application_title " Calculatrice Equinoxes et Solstices " alpha 40 : top 40,80 : left 40,80 : color 40,255,255,255 font_color 40,0,0,255 : caption 40," Années valides : 1900 - 2100 " edit 50 : top 50,77 : left 50,340 : font_bold 50 : width 50,60 : height 50,25 font_color 50,255,0,0 : text 50,date_year button 60 : top 60,80 : left 60,420 : caption 60,"&Calculer" button 70 : top 70,80 : left 70,520 : caption 70,"&Quitter"
button 80 : top 80,120 : left 80,100 : width 80,170 : caption 80,"Année &précédente" button 90 : top 90,120 : left 90,300 : width 90,120 : caption 90,"Cette &année" button 100: top 100,120 : left 100,450 : width 100,150 : caption 100,"Année &suivante" button 110 : top 110,370 : left 110,200 : caption 110,"&Infos" button 120 : top 120,370 : left 120,400 : caption 120,"&Vidéo" : set_focus 120 for i = 30 to 120 step 10 font_name i,"tahoma" : font_bold i : font_size i,12 next i for i = 60 to 120 step 10 : on_click i,clic : next i shape 190 : shape_rectangle_rounded 190 : top 190,180 : left 190,90 width 190, 520 : height 190,160 : color 190,100,250,250 memo 200 : top 200,200 : left 200,100 : width 200,500 : height 200,120 font_bold 200 : font_color 200,0,0,255 : font_size 200,10 : font_name 200,"tahoma" f% = 999 : form f% : width f%,600 : top f%,100 : height f%,400 : left f%,750 hide f% : on_close f%,close END_SUB rem ============================================================================ Clic: if numeric(text$(50)) = 0 Erreur1() : text 50,date_year : Calculer() : return end_if if (val(text$(50)) < 1900) or (val(text$(50)) > 2100) Erreur2() : text 50,date_year : Calculer() : return end_if select number_click case 060 : Calculer() case 070 : if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1 then terminate case 080 : text 50,val(text$(50)) - 1 if (val(text$(50)) < 1900) or (val(text$(50)) > 2100) Erreur2() : text 50,date_year end_if case 090 : text 50,date_year : Calculer() case 100 : text 50,val(text$(50)) + 1 if (val(text$(50)) < 1900) or (val(text$(50)) > 2100) Erreur2() : text 50,date_year end_if case 110 : Infos() case 120 : url$ = "https://www.youtube.com/watch?v=gpJaalcC8k8" ' url$ = "https://youtu.be/273fv8bancY" Creer_Browser(url$) end_select Calculer() return rem ============================================================================ Close: res% = dll_call1("WB_Delete",WB%) dll_off hide f% active 120 return rem ============================================================================ SUB Erreur2() message "!!! Année non valide !!!" + chr$(13) + "Veuillez indiquer une année entre 1900 et 2100" END_SUB rem ============================================================================ SUB Erreur1() message "!!! ERREUR !!!" + chr$(13) + "Valeur numérique, SVP !" END_SUB rem ============================================================================ SUB Infos() dim_local t$ t$ = "" t$ = t$ + "Equinoxes et Solstices" + chr$(13)+ chr$(13) t$ = t$ + "Au cours de l'année, la déclinaison du Soleil, à savoir l'angle entre le Soleil et l'équateur céleste (projection de l'équateur terrestre sur la sphère céleste)" + chr$(13) t$ = t$ + "varie entre +23,5° et -23,5°, qui correspondent respectivement aux latitudes des tropiques du Cancer, dans l'hémisphère nord, et du Capricorne, dans l'hémisphère sud." + chr$(13) + chr$(13) t$ = t$ + "Les équinoxes caractérisent les moments de l'année où la déclinaison apparente du Soleil est nulle." + chr$(13) t$ = t$ + "Autrement dit, le Soleil est précisément à la verticale au-dessus de l'équateur de la Terre." + chr$(13) t$ = t$ + "Quant aux solstices, ils définissent le passage du Soleil directement à la verticale au-dessus du tropique du Cancer ou du tropique du Capricorne," + chr$(13) t$ = t$ + "soit une déclinaison de + ou -23,5°." + chr$(13) + chr$(13) t$ = t$ + "La durée du jour, une caractéristique des équinoxes et des solstices." + chr$(13) + chr$(13) t$ = t$ + "Ces événements astronomiques se produisent deux fois par an et sont inversés, comme les saisons, 4 dans les hémisphères nord et sud." + chr$(13) t$ = t$ + "Ainsi, les équinoxes ont lieu une première fois entre le 20 et le 22 mars,une seconde fois entre le 21 et 23 septembre." + chr$(13) t$ = t$ + "Dans nos régions, l'équinoxe de mars est l'équinoxe de printemps (ou équinoxe vernal),celle de septembre est l'équinoxe d'automne." + chr$(13) + chr$(13) t$ = t$ + "Pendant les équinoxes, le Soleil se lève presque exactement à l'est et se couche presque exactement à l'ouest." + chr$(13) t$ = t$ + "Étant au-dessus de l'équateur, il éclaire les hémisphères nord et sud de façon symétrique sur toute sa trajectoire." + chr$(13) t$ = t$ + "Les équinoxes se traduisent par une durée égale du jour et de la nuit (12 h), mais en pratique, le jour reste toujours un peu plus long," + chr$(13) t$ = t$ + "à cause notamment de la réfraction des rayons du Soleil par l'atmosphère, ceci même après qu'il ait basculé sous l'horizon." + chr$(13) + chr$(13) t$ = t$ + "Les solstices se produisent une première fois le 20 ou le 21 juin, une seconde fois le 21 ou le 22 décembre. Dans nos régions, le solstice de juin marque le solstice d'été." + chr$(13) t$ = t$ + "Le Soleil passe au zénith au-dessus du tropique du Cancer et éclaire l'hémisphère nord pendant une durée maximale : c'est donc le jour le plus long de l'année pour cette partie du globe." + chr$(13) t$ = t$ + "Le solstice de décembre correspond quant à lui au solstice d'hiver et au jour le plus court." message t$ END_SUB rem ============================================================================ SUB Creer_Browser(url$) show f% inactive 120 dll_on "kgf" : ' <---- Adapter le chemin WB% = dll_call1("WB_Create",handle(f%)) res% = dll_call5("WB_Locate",WB%,20,20,width_client(f%)-50,height_client(f%)-50) res% = dll_call2("WB_Url",WB%,adr(url$)) END_SUB rem ============================================================================ SUB Calculer() year = val(text$(50)) ComputeSeasons(year) END_SUB rem ============================================================================ SUB ComputeSeasons(year) clear 200 y = (year - 2000) / 1000 item_add 200, string$(14,"*") + " DATES DES SAISONS POUR L'ANNEE " + str$(year) + " " + string$(14,"*") item_add 200,"" item_add 200, " Solstice du Printemps : " + Spring$() + " TU" item_add 200, " Equinoxe d'Eté ........... : " + Summer$() + " TU" item_add 200, " Solstice d'Automne .... : " + Autumn$() + " TU" item_add 200, " Equinoxe d'Hiver ........ : " + Winter$() + " TU" END_SUB rem ============================================================================ FNC s() dim_local x x = 485*cos(324.96 + 1934.136*T) x = x + 203*cos(337.23 + 32964.467*T) x = x + 199*cos(342.08 + 20.186*T) x = x + 182*cos(27.85 + 445267.112*T) x = x + 156*cos(73.14 + 45036.886*T) x = x + 136*cos(171.52 + 22518.443*T) x = x + 77*cos(222.54 + 65928.934*T) x = x + 74*cos(296.72 + 3034.906*T) x = x + 70*cos(243.58 + 9037.513*T) x = x + 58*cos(119.81 + 33718.147*T) x = x + 52*cos(297.17 + 150.678*T) x = x + 50*cos(21.02 + 2281.226*T) x = x + 45*cos(247.54 + 29929.562*T) x = x + 44*cos(325.15 + 31555.956*T) x = x + 29*cos(60.93 + 4443.417*T) x = x + 18*cos(155.12 + 67555.328*T) x = x + 17*cos(288.79 + 4562.452*T) x = x + 16*cos(198.04 + 62894.029*T) x = x + 14*cos(199.76 + 31436.921*T) x = x + 12*cos(95.39 + 14577.848*T) x = x + 12*cos(287.11 + 31931.756*T) x = x + 12*cos(320.81 + 34777.259*T) x = x + 9*cos(227.73 + 1222.114*T) x = x + 8*cos(15.45 + 16859.074*T) result x END_FNC rem ============================================================================ FNC March() dim_local w,dl,JDE0,marchT JDE0 = 2451623.80984 + 365242.37404*y + 0.05169*y*y - 0.00411*y*y*y - 0.00057*y*y*y*y T = (JDE0 - 2451545.0)/36525.0 W = 35999.373*T - 2.47 dL = 1.0 + 0.0334*cos(W) + 0.0007*cos(2*W) marchT = JDE0 + (0.00001*S())/dL - (66.0 + (year-2000)*1.0)/86400.0 result marchT END_FNC rem ============================================================================ FNC June() dim_local w,dl,JDE0,juneT JDE0 = 2451716.56767 + 365241.62603*y + 0.00325*y*y + 0.00888*y*y*y - 0.00030*y*y*y*y T = (JDE0 - 2451545.0)/36525.0 W = 35999.373*T - 2.47 dL = 1.0 + 0.0334*cos(W) + 0.0007*cos(2*W) juneT = JDE0 + (0.00001*S())/dL - (66.0 + (year-2000)*1.0)/86400.0 result juneT END_FNC rem ============================================================================ FNC September() dim_local w,dl,JDE0,septemberT JDE0 = 2451810.21715 + 365242.01767*y - 0.11575*y*y + 0.00337*y*y*y + 0.00078*y*y*y*y T = (JDE0 - 2451545.0)/36525.0 W = 35999.373*T - 2.47 dL = 1.0 + 0.0334*cos(W) + 0.0007*cos(2*W) septemberT = JDE0 + (0.00001*S())/dL - (66.0 + (year-2000)*1.0)/86400.0 result septemberT END_FNC rem ============================================================================ FNC December() dim_local w,dl,JDE0,decemberT JDE0 = 2451900.05952 + 365242.74049*y - 0.06223*y*y - 0.00823*y*y*y + 0.00032*y*y*y*y T = (JDE0 - 2451545.0)/36525.0 W = 35999.373*T - 2.47 dL = 1.0 + 0.0334*cos(W) + 0.0007*cos(2*W) decemberT = JDE0 + (0.00001*S())/dL - (66.0 + (year-2000)*1.0)/86400.0 result decemberT END_FNC rem ============================================================================ SUB Caldat(JD) dim_local hour,day,month,year dim_local b,c,d,e,f,jd0,diff,mn,st$ JD0 = int(JD + 0.5) B = int((JD0-1867216.25)/36524.25) C = JD0 + B - int(B/4) + 1525.0 D = int((C-122.1)/365.25) E = 365.0*D + int(D/4) F = int((C-E)/30.6001) day = int(C-E+0.5) - int(30.6001*F) dayStr$ = "" + str$(day)
if day < 10 then dayStr$ = " " + dayStr$ month = f - 1 - 12 * int(f/14) year = D - 4715 - int((7+month)/10) hour = 24.0*(JD + 0.5 - JD0) diff = abs(hour) - int(abs(hour)) mn = int((diff*60.0)+0.5) if mn = 60 then mn = 0 : hour = hour + 1 if mn > 9 then st$ = ":" : else : st$ = ":0" hourStr$ = str$(int(hour)) + st$ + str$(mn) if int(hour) < 10 then hourStr$ = " " + hourStr$ monthStr$ = MonthString$(month) dayNameStr$ = DayString$(JD)
END_SUB rem ============================================================================ FNC MonthString$(m) dim_local monthArray$(12) monthArray$(0) = "Janvier" : monthArray$(1) = "Février" monthArray$(2) = "Mars" : monthArray$(3) = "Avril" monthArray$(4) = "Mai" : monthArray$(5) = "Juin" monthArray$(6) = "Juillet" : monthArray$(7) = "Août" monthArray$(8) = "Septembre" : monthArray$(9) = "Octobre" monthArray$(10) = "Novembre" : monthArray$(11) = "Décembre" if m < 1 result "mois = " + str$(m) else result monthArray$(m-1) end_if END_FNC rem ============================================================================ FNC DayString$(JD) dim_local num,dayArray$(8) dayArray$(1) = "Lundi" : dayArray$(2) = "Mardi" dayArray$(3) = "Mercredi" : dayArray$(4) = "Jeudi" dayArray$(5) = "Vendredi" : dayArray$(6) = "Samedi" dayArray$(7) = "Dimanche" num = int(jd + 0.5) num = num - int(num/7)*7 + 1 result dayArray$(int(num)) END_FNC rem ============================================================================ FNC Spring$() Caldat(march()) if dayStr$ = "19" then n19 = n19 + 1 if dayStr$ = "20" then n20 = n20 + 1 if dayStr$ = "21" then n21 = n21 + 1 if dayStr$ = "22" then n22 = n22 + 1 result dayNameStr$ + ", " + dayStr$ +" " + monthStr$ + " " + str$(year) + " à " + hourStr$ END_FNC rem ============================================================================ FNC Summer$() Caldat(june()) result dayNameStr$ + ", " + dayStr$ +" " + monthStr$ + " " + str$(year) + " à " + hourStr$ END_FNC rem ============================================================================ FNC Autumn$() Caldat(september()) result dayNameStr$ + ", " + dayStr$ +" " + monthStr$ + " " + str$(year)+ " à " + hourStr$ END_FNC rem ============================================================================ FNC Winter$() Caldat(december()) result dayNameStr$ + ", " + dayStr$ +" " + monthStr$ + " " + str$(year)+ " à " + hourStr$ END_FNC rem ============================================================================ rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FIN &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ============================================================================
| |
|