RETROGICIEL
PLANAIRES OU POLAIRES
RETROGICIEL
PLANAIRES OU POLAIRES
⇩. Présentation
Les coordonnées planaires (ou cartésiennes) la position décrivent un point du plan à l’aide de l'abscisse pour la position horizontale, et l'ordonnée pour la position verticale. Elles repèrent donc directement un point par sa projection sur deux axes perpendiculaires.
Les coordonnées polaires, elles, décrivent la position un point par rapport à sa distance du point à l’origine et l’angle de sa la direction par rapport à l’axe horizontal. Elles sont particulièrement utiles pour décrire des phénomènes circulaires ou radiaux.
Conversion polaires vers planaires :
- abscisse = rayon fois cosinus de l’angle
- ordonnée = rayon fois sinus de l’angle
Conversion planaires vers polaires :
- distance = racine carrée de la somme des carrés des coordonnées
- angle = arc tangente de l'ordonnée divisée par l’abscisse, en tenant compte du quadrant.
⇩. Consignes
Le programme doit :
demander s'il doit trouver des coordonnées polaires ou planaires ;
demander l'abscisse et l'ordonnée puis calculer les coordonnées polaires ou ;
demander l'angle et la distance puis calculer les coordonnées plainaires ;
afficher les résultats ;
demander si l'utilisateur souhaite faire une autre conversion ou ;
quitter le programme.
D'abord, faite-le fonctionner. Ensuite, faite-le beau. Enfin, faite-le performant.
Amusez-vous bien !
Télécharger RETROGICIEL - Planaires ou polaires.
Cette présentation nécessite que Python 3 soit installé sur votre machine.
Après avoir téléchargé le fichier Planaires ou polaires.7z, décompressez-le dans le répertoire de votre choix.
Ouvrez le répertoire qui vient d'être créé.
Lancez le fichier Retrogiciel.py.
Cliquez sur l'onglet RUN et testez le programme.
Créez votre propre script dans un des langages proposés ou un autre de votre choix.
Le répertoire contient aussi :
- Python.py, l'exemple en PYTHON sans tkinter ;
- Tkinter.py, l'exemple en PYTHON avec tkinter ;
- Qb84.bas, l'exemple en QBASIC avec qb64 ;
- Bbc.bas, l'exemple en BBC BASIC avec bbc sdl.
# --- Origine Nerd ---
# --- RETROGICIEL - PYTHON ---
# --- Planaires ou polaires ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
import math
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
# --- Conversion de coordonnées polaire vers planaires ---
def FNC_Planaires ( ) :
try :
kangle = float ( input ( "entrez l'angle en degrés ... " ) )
klongueur = float ( input ( "Entrez la distance sans unité ... " ) )
except :
print ( "Erreur de saisie !" )
return
kabscisse = math.cos ( math.radians ( kangle ) ) * klongueur
kordonnee = math.sin ( math.radians ( kangle ) ) * klongueur
print ( f"Abscisse du point : {kabscisse:.4f} unité(s)." )
print ( f"Ordonnée du point : {kordonnee:.4f} unité(s)." )
# --- Conversion de coordonnées planaires vers polaires ---
def FNC_Polaires ( ) :
try :
kabscisse = float ( input ( "entrez l'abscisse ... " ) )
kordonnee = float ( input ( "entrez l'ordonnée ... " ) )
except :
print ( "Erreur de saisie !" )
return
kangle = math.degrees ( math.atan2 ( kordonnee , kabscisse ) )
klongueur = ( ( kabscisse ** 2 ) + ( kordonnee ** 2 ) ) ** .5
print ( f"Direction du vecteur : {kangle:.4f} degré(s)." )
print ( f"Distance à l'origine : {klongueur:.4f} unité(s)." )
# --- MODULE PRINCIPAL ---
# --- PRESENTATION ---
print ( "PLANAIRES OU POLAIRES" )
print ( "Convertisseur de coordonnées." )
# --- BOUCLE PRINCIPALE ---
while True :
print ( "Voulez-vous convertir des coordonnées : " )
print ( "A. planaires vers polaires ; " )
print ( "B. polaires vers planaires ; " )
print ( "Q. pour quitter." )
kchoix = input ( "Votre choix (A ou B ou Q ) ... " )
if kchoix.upper ( ) == "A" : FNC_Polaires ( )
elif kchoix.upper ( ) == "B" : FNC_Planaires ( )
elif kchoix.upper ( ) == "Q" : break
else : print ( "ERREUR : Choix non valide ! " )
print ( )
# --- FIN DU PROGRAMME ---
print ( "Au revoir" )
# --- Programme : JFB ---
# --- Novembre 2025 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON sans tkinter.
# --- Origine Nerd ---
# --- RETROGICIEL - TKINTER ---
# --- Planaires ou polaires ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
# --- Modules de la bibliothèque standard ---
import tkinter
import math
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
# --- Conversion de coordonnées polaire vers planaires ---
def FNC_Planaires ( ) :
try :
kangle = float ( TKV_Angle.get ( ) )
kdistance = float ( TKV_Distance.get ( ) )
except :
TKV_Message.set ( "Erreur de données !" )
TKV_Abscisse.set ( "" )
TKV_Ordonnee.set ( "" )
return
TKV_Message.set ( "..." )
kabscisse = math.cos ( math.radians ( kangle ) ) * kdistance
kordonnee = math.sin ( math.radians ( kangle ) ) * kdistance
TKV_Abscisse.set ( f"{kabscisse:.4f}" )
TKV_Ordonnee.set ( f"{kordonnee:.4f}" )
# --- Conversion de coordonnées planaires vers polaires ---
def FNC_Polaires ( ) :
try :
kabscisse = float ( TKV_Abscisse.get ( ) )
kordonnee = float ( TKV_Ordonnee.get ( ) )
except :
TKV_Message.set ( "Erreur de données !" )
TKV_Angle.set ( "" )
TKV_Distance.set ( "" )
return
TKV_Message.set ( "..." )
kangle = math.degrees ( math.atan2 ( kordonnee , kabscisse ) )
kdistance = ( ( kabscisse ** 2 ) + ( kordonnee ** 2 ) ) ** .5
TKV_Angle.set ( f"{kangle:.4f}" )
TKV_Distance.set ( f"{kdistance:.4f}" )
# --- CREATION DE L'INTERFACE GRAPHIQUE ---
# --- Création de la fenêtre principale ---
TKI_Principal = tkinter.Tk ( )
TKI_Principal.title ( "RETROGICIEL - Planaires ou polaires" )
# --- Création des variables de controles ---
TKV_Abscisse = tkinter.StringVar ( )
TKV_Angle = tkinter.StringVar ( )
TKV_Distance = tkinter.StringVar ( )
TKV_Ordonnee = tkinter.StringVar ( )
TKV_Message = tkinter.StringVar ( )
# --- Mise en place des controles (anonymes et nommés) dans la fenêtre principale ---
tkinter.Label ( TKI_Principal , text = "abscisse" ).grid ( row = 0 , column = 1 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "ordonnée" ).grid ( row = 0 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Planaires" ).grid ( row = 1 , column = 0 , sticky = "nesw" )
tkinter.Entry ( TKI_Principal , textvariable = TKV_Abscisse , width = 8 ).grid ( row = 1 , column = 1 , sticky = "nesw" )
tkinter.Entry ( TKI_Principal , textvariable = TKV_Ordonnee , width = 8 ).grid ( row = 1 , column = 2 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).grid ( row = 2 , column = 0 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u21ca" , command = FNC_Polaires ).grid ( row = 2 , column = 1 , sticky = "nesw" )
tkinter.Button ( TKI_Principal , text = "\u21c8" , command = FNC_Planaires ).grid ( row = 2 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "Polaires" ).grid ( row = 3 , column = 0 , sticky = "nesw" )
tkinter.Entry ( TKI_Principal , textvariable = TKV_Angle , width = 8 ).grid ( row = 3 , column = 1 , sticky = "nesw" )
tkinter.Entry ( TKI_Principal , textvariable = TKV_Distance , width = 8 ).grid ( row = 3 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "angle" ).grid ( row = 4 , column = 1 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , text = "distance" ).grid ( row = 4 , column = 2 , sticky = "nesw" )
tkinter.Label ( TKI_Principal , textvariable = TKV_Message ).grid ( row = 5 , column = 0 , columnspan = 3 , sticky = "nesw" )
# --- Mise à jour de controle ---
TKV_Message.set ( "..." )
# --- DEBUT DU PROGRAMME ---
TKI_Principal.mainloop ( )
# --- Programme : JFB ---
# --- Novembre 2025 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON avec tkinter.
' --- Origine Nerd propose pour ---
' --- RETROGICIEL - QB64 ---
' --- Planaires ou polaires ---
' --- DEBUT DU PROGRAMME ---
PRINT "PLANAIRES OU POLAIRES"
PRINT "Convertisseur de coordonneees."
VIEW PRINT 5 TO 20
' --- BOUCLE PRINCIPALE ---
DO
PRINT "Voulez-vous convertir des coordonnees : "
PRINT "A. planaires vers polaires ; "
PRINT "B. polaires vers planaires ; "
PRINT "Q. pour quitter."
INPUT "Votre choix (A ou B ou Q ) ... ", kchoix$
CLS
SELECT CASE UCASE$(kchoix$)
CASE "A": FNC_Polaires
CASE "B": FNC_Planaires
CASE "Q": EXIT DO
CASE ELSE: PRINT "ERREUR : Choix non valide ! "
END SELECT
LOOP UNTIL 1 = 2
' --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
' --- DEFINITION DES FONCTIONS PERSONNALISEES ---
' --- Conversion de coordonnées polaire vers planaires ---
SUB FNC_Polaires
INPUT "Entrez l'angle en degres ..."; kangle#
INPUT "Entrez la distance sans unite ..."; klongueur#
kabscisse# = COS(_D2R(kangle#)) * klongueur#
kordonnee# = SIN(_D2R(kangle#)) * klongueur#
PRINT USING "& #####.#### &"; "Abscisse du point :"; kabscisse#; "unite(s)."
PRINT USING "& #####.#### &"; "Ordonnee du point :"; kordonnee#; "unite(s)."
END SUB
' --- Description de la fonction ---
SUB FNC_Planaires
INPUT "Entrez l'abscisse ..."; kabscisse#
INPUT "Entrez l'ordonnee ..."; kordonnee#
kangle# = _R2D(_ATAN2(kordonnee#, kabscisse#))
klongueur# = ((kabscisse# ^ 2) + (kordonnee# ^ 2)) ^ .5
PRINT USING "& #####.#### &"; "Direction du vecteur :"; kangle#; "degre(s)."
PRINT USING "& #####.#### &"; "Distance a l'origine :"; klongueur#; "unite(s)."
END SUB
' --- Programme : JFB ---
' --- Novembre 2025 ---
' --- Fin ---
Pour mieux comprendre l'exemple en QB64.
REM --- Origine Nerd propose pour ---
REM --- RETROGICIEL - BBC BASIC ---
REM --- Planaires ou polaires ---
REM --- DEBUT DU PROGRAMME ---
PRINT "PLANAIRES OU POLAIRES."
PRINT "Convertisseur de coordonneees."
VDU 28 , 0 , 25 , 80 , 4
@% = &0102040A : REM - Formate l'affichage des nombres avec 4 chiffres après la virgule
REM --- BOUCLE PRINCIPALE ---
REPEAT
PRINT "Voulez-vous convertir des coordonnees :"
PRINT "A. planaires vers polaires ;"
PRINT "B. polaires vers planaires ;"
PRINT "Q. pour quitter."
INPUT "Votre choix (A ou B ou Q ) ... ", kchoix$
CLS
CASE kchoix$ OF
WHEN "A" , "a" : PROC_Polaires
WHEN "B" , "b" : PROC_Planaires
WHEN "Q" , "q" : EXIT REPEAT
OTHERWISE : PRINT "ERREUR : Choix non valide ! "
ENDCASE
UNTIL FALSE
REM --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
REM --- DEFINITION DES FONCTIONS PERSONNALISEES ---
REM --- Conversion de coordonnSTR$LENes polaire vers planaires ---
DEF PROC_Polaires
INPUT "Entrez l'angle en degres ... " ; kangle
INPUT "Entrez la distance sans unite ... " ; klongueur
kabscisse = COS( RAD( kangle ) ) * klongueur
kordonnee = SIN( RAD( kangle ) ) * klongueur
PRINT "Abscisse du point : " ; kabscisse ; " unite(s)."
PRINT "Ordonnee du point : " ; kordonnee ; " unite(s)."
ENDPROC
REM' --- Description de la fonction ---
DEF PROC_Planaires
INPUT "Entrez l'abscisse ... " ; kabscisse
INPUT "Entrez l'ordonnee ... " ; kordonnee
IF kabscisse = 0 THEN
IF kordonnee > 0 THEN kangle = PI * .5
IF kordonnee < 0 THEN kangle = PI * -.5
IF kordonnee = 0 THEN kangle = 0
ELSE
kangle = ATN( kordonnee / kabscisse )
IF kabscisse < 0 THEN kangle += PI
ENDIF
klongueur = ( ( kabscisse ^ 2 ) + ( kordonnee ^ 2 ) ) ^ .5
PRINT "Direction du vecteur : " ; DEG( kangle ) ; " degre(s)."
PRINT "Distance a l'origine : " ; klongueur ; " unite(s)."
ENDPROC
REM --- Programme : JFB ---
REM --- Novembre 2025 ---
REM --- Fin ---
Pour mieux comprendre l'exemple en BBC BASIC.