PureBasic

Forums PureBasic
Nous sommes le Mar 19/Jan/2021 17:08

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Calcul de la position aux antipodes de sa position
MessagePosté: Jeu 19/Déc/2019 17:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 08/Déc/2019 10:50
Messages: 79
Bonjour,

Petit programme du jour : Calcul de la position aux antipodes de sa propre position
1/ entrer la latitude et la longitude de n'importe quel lieu dans le monde (en degrés décimaux)
2/ appuyer sur CALCULER et les 2 positions antipodiques apparaissent sur 2 cartes distinctes avec la distance les séparant
A refaire autant de fois que vous le souhaiter.

Image

Tout est ici (source, images et exe) pour Windows x64 : https://mijon.pagesperso-orange.fr/Pure ... tipode.zip

Le source (manque l'image)

Code:
; -------------------------------------------------------------------------------------------------------
;          Calcul de l'antipode des coordonnées de départ sur terre (valeurs en degrés décimaux)
;                           et affichage sur deux cartes Openstreetmap
;
;                       Philippe Mjon - décembre 2019 PureBasic 5.71 LTS (x64)
;
;                     Référence de calcul : https://fr.wikipedia.org/wiki/Terre
;                Rayon moyen de la terre  = (2 x rayon equatorial) + rayon polaire / 3
;             Rayon moyen de la terre  = ((2x6378.137)+6356.7523) /3 = 6371.0087890625 km
;
;                           Ex : Paris (lat1 = 48.856667, long1 = 2.350987)
;                           Ex : Lyon (lat2 = 45.767299, long2 = 4.834329)
;
; -------------------------------------------------------------------------------------------------------
dat$ = " déc. 2019"
ver$ = " v1.0"
UsePNGImageDecoder()

Declare Openstreetmap ()

; ---------------------------------------- Boucle principale ---------------------------------------------

If OpenWindow(0, 0, 0, 300, 400, " ANTIPODE     " + Chr(169) + "Ph. Mijon " + dat$ + ver$, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
  SetWindowColor(0, RGB(255, 255 ,255))         ; couleur du fond de la fenetre
 
  If LoadImage(0, "F:\Purebasic\geoide.png")    ; localisation de l'image à adapter suivant votre cas
    ImageGadget(10, 32, 0, 239, 224, ImageID(0)); ImageGadget standard
  EndIf
   
  TextGadget(11, 8, 235,280,15,"Latitude d'un lieu au format décimal")
  StringGadget(12, 8,  250, 280, 20, "48.856667")
  TextGadget(13, 8, 275,280,15,"Longitude d'un lieu au format décimal")
  StringGadget(14, 8,  290, 280, 20, "2.350987")
  TextGadget(15, 8, 315,280,15,"Distance invariable estimée entre les 2 points antipodaux (km)")
  StringGadget(16, 8,  330, 280, 20, "")
  ButtonGadget(17, 60, 355, 80, 40,"CALCULER")
  ButtonGadget(18, 160, 355, 80, 40,"QUITTER")
 
  Repeat 
    Evenement  = WaitWindowEvent()

    Select Evenement
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 17
            Openstreetmap ()
          Case 18
            CloseWindow(0)
            End       
        EndSelect     
    EndSelect
   
  Until Evenement = #PB_Event_CloseWindow
EndIf           

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow

; ------------------------------------------- Procédure -------------------------------------------------

Procedure Openstreetmap ()
; coordonnées décimales de départ
lat1.D = ValD(GetGadgetText(12))
long1.D = ValD(GetGadgetText(14))

; calcul des coordonnées décimales aux antipodes
lat2.D=-lat1
long2.D=long1-180

; calcul invariable de la distance entre les 2 points antipodaux d'une sphère
Rm.f = 6371008.7890625;   Rayon_moyen en m
km = ACos(Sin(Radian(lat1)) * Sin(Radian(lat2)) + Cos(Radian(lat1)) * Cos(Radian(lat2)) * Cos(Radian(long1-long2))) * Rm
resultat$ = StrF((km)/1000,0)

SetGadgetText(16, resultat$)

If OpenWindow(1,410,350,700,700," POSITION DE DEPART              ")
  zoom = 11
  html1$="https://www.openstreetmap.org/?&mlat="+lat1+"&mlon="+long1+"#map="+zoom+"/"+lat1+"/"+long1 ; Openstreetmap
  WebGadget(1,10,10,690,690,html1$)
EndIf

If OpenWindow(2,1440,350,700,700," AUX ANTIPODES              ")
  zoom = 4
  html2$="https://www.openstreetmap.org/?&mlat="+lat2+"&mlon="+long2+"#map="+zoom+"/"+lat2+"/"+long2 ; Openstreetmap
  WebGadget(2,10,10,690,690,html2$)
EndIf

EndProcedure

End


Enjoy !


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 15 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye