Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quarantedeux plus soixante et onze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

yoshi
29-12-2013 11:07:30

Bonjour,

Suite à la discussion ouverte par glofcea http://www.bibmath.net/forums/viewtopic … 597#p43597, je suis parti sur cette base angulaire de conventions de gestion :
131229105557783338.jpg             131229105754836519.jpg
En conséquence, une entrée comme Pol_To_Cart(120,50,1) est considérée comme incorrecte et corrigée en 120,130,1 :
* 120° de gisement signifie que x<0 et y>0
* 50° de site : mesure choisie à partir du 0° et ne peut exister que si le point visé se trouve dans la moitié est de l'hémisphère nord, or 120°
de gisement n'est possible que si le point visé est dans la moitié ouest.
Et ce bien sûr, sur la base des règles de mesure que je me suis fixées :

Pol_To_Cart(120,50,1) --> x = -0.321393804843 y = 0.556670399226 z =  0.766044443119
Cart_To_Pol(x,y,z) --> 120.0 130.0 1.0

et donc :

Pol_To_Cart(120,130,1) --> x = -0.321393804843 y = 0.556670399226 z =  0.766044443119
Cart_To_Pol(x,y,z) --> 120.0 130.0 1.0

Il en est de même pour l'hémisphère sud avec site exprimé négativement de -180° à 0°, avec avertissement entre -135° et - 45° : ezone non couverte...

from math import sqrt,pi,cos,sin,atan

def Pol_To_Cart(gisement, site, distance):
    gisement,site=gisement*pi/180,site*pi/180
    if site>pi/2:
         site=pi-site
    elif site<-pi/2:
        site=-pi-site  
    lg=abs(distance*cos(site))
    x = lg*cos(gisement)
    y = lg*sin(gisement)
    z = distance*sin(site)
    return x,y,z

def Cart_To_Pol(x,y,z):
    if x==0:
        x=0.001
    if y==0:
        y=0.001
    distance = sqrt(x*x+y*y+z*z)
    gisement = atan(y/x)
    if x<0 and y>0:
        gisement+=pi
    elif x<0 and y<0:
        gisement+=-pi
    if abs(gisement)>175*pi/180:
        print "! WARNING ! Zone non couverte !"
    site     = atan(z/sqrt(x*x+y*y))
    if z>=0:
        if x<0:
            site=pi-site
    else:
        if x<0 and -pi/2<=site<0:
            site=-pi-site
        if -3*pi/4<site<-pi/4:
            print "! WARNING ! Zone non couverte !"                        
    return gisement*180/pi, site*180/pi,distance

print "Pol_To_Cart(120,130,1) -->",
x,y,z=Pol_To_Cart(120,130,1)
print "x =",x,"y =",y,"z = ",z
print "Cart_To_Pol(x,y,z) -->",
gisement, site,distance=Cart_To_Pol(x,y,z)
print gisement, site,distance

Cela dit, si ces conventions de mesure ne conviennent pas, je peux rectifier...

@+

Pied de page des forums