avkLab

Polygones

Nov 8th, 2023 (edited)
582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.07 KB | Science | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. #----------------------------------------------------------------------------
  4. # Created by  : Alain Van Kerckhoven
  5. # Created Date: 08/11/2023
  6. # Licence     : GPL
  7. # Version     : 1.1
  8. # ---------------------------------------------------------------------------
  9. """
  10. Calcule le périmètre, l'aire, l'angle interne, l'apothème, la plus grande
  11. diagonale et le rayon du cercle circonscrit d'un polygone régulier convexe.
  12. """
  13. # ---------------------------------------------------------------------------
  14.  
  15.  
  16. import math
  17. import sympy as sp # Afin de résoudre les erreurs de précision dûs à la virgule flottante.
  18.  
  19. noms_polygones = {
  20.     3: "Triangle",
  21.     4: "Quadrilatère",
  22.     5: "Pentagone",
  23.     6: "Hexagone",
  24.     7: "Heptagone",
  25.     8: "Octogone",
  26.     9: "Ennéagone",
  27.     10: "Décagone",
  28.     11: "Hendécagone",
  29.     12: "Dodécagone",
  30.     13: "Tridécagone",
  31.     14: "Tétradécagone",
  32.     15: "Pentadécagone",
  33.     16: "Hexadécagone",
  34.     17: "Heptadécagone",
  35.     18: "Octadécagone",
  36.     19: "Ennéadécagone",
  37.     20: "Icosagone",
  38.     21: "Icosiunagone",
  39.     22: "Icosidigone",
  40.     23: "Icositrigone",
  41.     24: "Icosiquatragone",
  42.     25: "Icosipentagone",
  43.     26: "Icosihexagone",
  44.     27: "Icosiheptagone",
  45.     28: "Icosioctagone",
  46.     29: "Icosiennéagone",
  47.     30: "Triacontagone",
  48.     31: "Triacontiunagone",
  49.     32: "Triacontidigone",
  50.     33: "Triacontitrigone",
  51.     34: "Triacontiquatragone",
  52.     35: "Triacontipentagone",
  53.     36: "Triacontihexagone",
  54.     37: "Triacontiheptagone",
  55.     38: "Triacontioctagone",
  56.     39: "Triacontiennéagone",
  57.     40: "Quadragone",
  58.     41: "Quadracote",
  59.     42: "Quadravingtigone",
  60.     43: "Quadragintatrigone",
  61.     44: "Quadragintaquattuorigone",
  62.     45: "Quadragintapentagone",
  63.     46: "Quadragintahexagone",
  64.     47: "Quadragintaheptagone",
  65.     48: "Quadragintaoctagone",
  66.     49: "Quadragintaennéagone",
  67.     50: "Pentacontagone",
  68.     51: "Pentacontiunagone",
  69.     52: "Pentacontidigone",
  70.     53: "Pentacontitrigone",
  71.     54: "Pentacontiquatragone",
  72.     55: "Pentacontipentagone",
  73.     56: "Pentacontihexagone",
  74.     57: "Pentacontiheptagone",
  75.     58: "Pentacontioctagone",
  76.     59: "Pentacontiennéagone",
  77.     60: "Hexacontagone",
  78.     61: "Hexacontiunagone",
  79.     62: "Hexacontidigone",
  80.     63: "Hexacontitrigone",
  81.     64: "Hexacontiquatragone",
  82.     65: "Hexacontipentagone",
  83.     66: "Hexacontihexagone",
  84.     67: "Hexacontiheptagone",
  85.     68: "Hexacontioctagone",
  86.     69: "Hexacontiennéagone",
  87.     70: "Heptacontagone",
  88.     71: "Heptacontiunagone",
  89.     72: "Heptacontidigone",
  90.     73: "Heptacontitrigone",
  91.     74: "Heptacontiquatragone",
  92.     75: "Heptacontipentagone",
  93.     76: "Heptacontihexagone",
  94.     77: "Heptacontiheptagone",
  95.     78: "Heptacontioctagone",
  96.     79: "Heptacontiennéagone",
  97.     80: "Octacontagone",
  98.     81: "Octacontiunagone",
  99.     82: "Octacontidigone",
  100.     83: "Octacontitrigone",
  101.     84: "Octacontiquatragone",
  102.     85: "Octacontipentagone",
  103.     86: "Octacontihexagone",
  104.     87: "Octacontiheptagone",
  105.     88: "Octacontioctagone",
  106.     89: "Octacontiennéagone",
  107.     90: "Enneacontagone",
  108.     91: "Enneacontiunagone",
  109.     92: "Enneacontidigone",
  110.     93: "Enneacontitrigone",
  111.     94: "Enneacontiquatragone",
  112.     95: "Enneacontipentagone",
  113.     96: "Enneacontihexagone",
  114.     97: "Enneacontiheptagone",
  115.     98: "Enneacontioctagone",
  116.     99: "Enneacontiennéagone",
  117.     100: "Hectogone",
  118. }
  119.  
  120.  
  121. while True:
  122.     n = int(input("Entrez le nombre de côtés du polygone régulier convexe : "))
  123.     if n>2:
  124.         break
  125.     else:
  126.         print("Un polygone a au moins trois côtés. Veuillez réessayer.")
  127.  
  128.  
  129. # Demander la longueur d'un côté
  130. cote = sp.Rational(input("Entrez la longueur d'un côté du polygone : "))
  131.  
  132. # Calculer le périmètre du polygone
  133. perimetre = n * cote
  134.  
  135. # Calculer l'aire du polygone régulier
  136. if n==4:
  137.     aire = cote*cote # Pour éviter les décimales inutiles dues à la tangeante
  138. else:
  139.     aire = (n * cote**2) / (4 * sp.tan(math.pi / n))
  140.  
  141. # Calculer la longueur de la plus grande diagonale
  142. if n > 3:
  143.     diagonale = cote * sp.sqrt(2 * (1 - sp.cos((2 * math.pi) / n)))
  144. else:
  145.     diagonale = 0
  146.  
  147. # Calculer l'angle interne du polygone
  148. angle_interne = (n - 2) * 180 / n
  149.  
  150. # Calculer l'apothème (distance du centre au milieu d'un côté)
  151. apotheme = cote / (2 * sp.tan(math.pi / n))
  152.  
  153. # Calculer le rayon du cercle circonscrit (du centre au sommet)
  154. rayon = cote / (2 * sp.sin(math.pi / n))
  155.  
  156. # Déterminer le nom du polygone en français
  157. if n in noms_polygones:
  158.     nom_du_polygone=noms_polygones[n]
  159. else:
  160.     nom_du_polygone=f"polygone à {n} côtés"
  161.  
  162. # Afficher les résultats
  163. print("")
  164. print(f"Caractéristiques d'un {nom_du_polygone} de côté {cote} :")
  165. print(f"Périmètre : {perimetre}")
  166. print(f"Aire : {aire}")
  167. print(f"Angle interne : {angle_interne} degrés")
  168. print(f"Apothème : {apotheme}")
  169. print(f"Rayon du cercle circonscrit : {rayon}")
  170. if diagonale > 0:
  171.     print(f"Longueur de la plus grande diagonale : {diagonale}")
  172. else:
  173.     print(f"Un {nom_du_polygone} n'a pas de diagonale.")
  174.  
Tags: math geometry
Advertisement
Add Comment
Please, Sign In to add comment