Allez, hop!
Je remonte ce topic. (Enfin... y a pas besoin de le remonter, puisqu'il ne descend pas, vu qu'il est en post-it. Mais bon... Je me comprend!)
J'ai commencé à faire un petit fichier de macros regroupant les différentes formules pour le calcul de périmètres, surfaces, volumes, et
tout ce qui concerne la géométrie en général.
J'ai à peu près tout piqué dans l'aide, et j'ai aussi essayé d'ajouter des calculs qui découlent des "standards", comme par exemple, calculer la longueur d'un rectangle par rapport à sa surface et à sa hauteur. Enfin, bref, des choses de ce genre, quoi.
Mais bon. Comme les maths et moi, on est un peu en froid depuis quelques années, je vous met le code ici, et si vous trouvez des erreurs ou des méthodes plus simple, vous pourrez toujours les modifier.
Code : Tout sélectionner
#RadToDeg = 180.0 / #PI
#RadToGrd = 200.0 / #PI
#DegToRad = #PI / 180.0
#DegToGrd = 200 / 180.0
#GrdToRad = #PI / 200.0
#GrdToDeg = 180 / 200.0
;{- Conversions d'Angles (Macros sauvagement piquées à Dr. Dri)
;/ An = Angle
;-
Macro DegToRad(An) ; Degrés en Radians
((An) * #DegToRad)
EndMacro
Macro DegToGrd(An) ; Degréss en Grades
((An) * #DegToGrd)
EndMacro
Macro RadToDeg(An) ; Radians en Degrés
((An) * #RadToDeg)
EndMacro
Macro RadToGrd(An) ; Radians en Grades
((An) * #RadToGrd)
EndMacro
Macro GrdToRad(An) ; Grades en Radians
((An) * #GrdToRad)
EndMacro
Macro GrdToDeg(An) ; Grades en Degrés
((An) * #GrdToDeg)
EndMacro
;}
;{- Carré
;/ Co = Longueur du côté
;/ Di = Longueur de la diagonale
;/ Su = Surface
;/ Pe = Périmètre
;-
Macro Peri_Carre(Co) ; Périmètre du carré
Co*4
EndMacro
Macro Surf_Carre(Co) ; Surface du carré
Co*Co
EndMacro
Macro Diag_Carre(Co) ; Diagonale du carré
Co*Sqr(2)
EndMacro
Macro CoteFromSurf(Su) ; Longueur du côté par rapport à la surface
Sqr(Su)
EndMacro
Macro CoteFromDiag(Di) ; Longueur du côté par rapport à la diagonale
Di/Sqr(2)
EndMacro
Macro CoteFromPeri(Pe) ; Longueur du côté par rapport au périmètre
Pe/4
EndMacro
;}
;{- Rectangle
;/ Lo = Longueur
;/ La = Largeur
;/ Hy = Hypoténuse
;/ Su = Surface
;/ Pe = Périmètre
;/ Ca = Longueur du côté adjacent à l'hypoténuse
;/ Ln = Longueur d'un côté quelconque (sauf hypoténuse)
;-
Macro Peri_Rect(Lo, La) ; Périmètre du rectangle
(Lo + La) * 2
EndMacro
Macro Surf_Rect(Lo, La) ; Surface du rectangle
Lo * La
EndMacro
Macro Diag_Rect(Lo, La) ; Calcul de l'hypoténuse
Sqr(Pow(Lo, 2) + Pow(La, 2))
EndMacro
Macro Angle_Rect(Ca, Hy) ; Calcul des angles
ACos(Ca/Hy)/0.0174533
EndMacro
Macro L_Rect(Hy, Ln) ; Calcul de la largeur ou de la longueur par rapport à l'hypoténuse
Sqr(Pow(Hy, 2) - Pow(Ln, 2))
EndMacro
;}
;{- Cercle
;/ Ra = Rayon
;/ Di = Diamètre
;/ Su = Surface
;/ La = Longueur de l'arc
;-
Macro Peri_Cercle_R(Ra) ; Périmètre du cercle par rapport au rayon
2 * #PI * Ra
EndMacro
Macro Peri_Cercle_D(Di) ; Périmètre du cercle par rapport au diamètre
#PI * Di
EndMacro
Macro Surf_Cercle_R(Ra) ; Surface du cercle par rapport au rayon
#PI * (Pow(Ra, 2))
EndMacro
Macro Surf_Cercle_D(Di) ; Surface du cercle par rapport au diamètre
#PI/4 * Pow(Di, 2)
EndMacro
Macro Ra_Cercle_S(Su) ; Rayon du cercle par rapport à sa surface
Sqr(Su / #PI)
EndMacro
Macro Di_Cercle_S(Su) ; Diamètre du cercle par rapport à sa surface
Sqr(Su / (#PI/4))
EndMacro
Macro Peri_Cercle_S(Su) ; Perimètre du cercle par rapport à sa surface
#PI * Sqr(Su / (#PI/4))
EndMacro
Macro Lng_Arc_Cercle(Ra, An) ; Longueur d'un arc de cercle
#PI * Ra * (An / 180)
EndMacro
Macro Lng_Crd_Cercle(Ra, An) ; Longueur de la corde
2 * Ra * Sin(DegToRad(An)/2)
EndMacro
Macro Surf_Arc_Cercle(Di, An) ; Surface d'un arc de cercle
#PI * Pow(Di,2) * An /1440
EndMacro
Macro Surf_Arc_From_LArc(La, Ra) ; Surface d'un arc de cercle par rapport à la longueur de l'arc
La * Ra / 2
EndMacro
;}
;{- Parallelogramme
;/ Lo = Longueur
;/ Ha = Hauteur
;/ La = Largeur
;/ Su = Surface
;/ Pe = Périmètre
;-
Macro Peri_Para(Lo, La) ; Périmètre du parallelogramme
Lo*2 + La*2
EndMacro
Macro Surf_Para(Lo, Ha) ; Surface du parallelogramme
Lo * Ha
EndMacro
;}
;{- Trapeze
;/ Gb = Grande Base
;/ Pb = Petite Base
;/ Ha = Hauteur
;/ Su = Surface
;/ Pe = Périmètre
;/ C1 = Côté 1
;/ C2 = Côté 2
;-
Macro Surf_Trapeze(Gb, Pb, Ha) ; Surface du trapèze
((Gb + Pb) * Ha) / 2
EndMacro
Macro Peri_Trapeze(Gb, Pb, C1, C2); Périmètre du trapèze
Gb + Pb + C1 + C2
EndMacro
;}
;/ Tests
Debug "--- Angles ---"
Debug DegToRad(180)
Debug DegToGrd(180)
Debug RadToDeg(#PI)
Debug RadToGrd(#PI)
Debug GrdToRad(200)
Debug GrdToDeg(200)
Debug ""
Debug "--- Carré ---"
Debug Peri_Carre(10)
Debug Surf_Carre(10)
Debug Diag_Carre(10)
Debug CoteFromSurf(100)
Debug CoteFromDiag(14.1421356)
Debug CoteFromPeri(40)
Debug ""
Debug "--- Rectangle ---"
Debug Peri_Rect(30, 40)
Debug Surf_Rect(30, 40)
Debug Diag_Rect(30, 40)
Debug Angle_Rect(40, 50)
Debug L_Rect(50, 40)
Debug ""
Debug "--- Cercles ---"
Debug Peri_Cercle_R(50)
Debug Peri_Cercle_D(100)
Debug Surf_Cercle_R(50)
Debug Surf_Cercle_D(100)
Debug Ra_Cercle_S(7853.98193359375)
Debug Di_Cercle_S(7853.98193359375)
Debug Peri_Cercle_S(7853.98193359375)
Debug Lng_Arc_Cercle(50, 180)
Debug Lng_Crd_Cercle(50, 180)
Debug Surf_Arc_Cercle(100, 180)
Debug Surf_Arc_From_LArc(157.0796, 50)
Debug ""
Debug "--- Parallelogrammes ---"
Debug Peri_Para(100, 60)
Debug Surf_Para(100, 60)
Debug ""
Debug "--- Trapèze ---"
Debug Surf_Trapeze(100, 90, 80)
Debug Peri_Trapeze(100, 90, 85, 85)