Section_A: Polygone (caractéristiques géométriques)

Soyez le premier à donner votre avis sur cette source.

Vue 2 fois

Description

Bonjour,

▼▼ Bug CCM-CS: voir ci-dessous ▼▼

Il s'agit d'une section délimitée par une ligne polygonale fermée.
Les caractéristiques géométriques calculées sont:
- Aire: A=∫dA
- Moments statiques: Sx=∫y·dA, Sy=∫x·dA
- Centre de gravité: Xg=Sy/A, Yg=Sx/A
- Moments d'inertie axiaux: Ix=∫y²·dA, Iy=∫x²·dA
- Moment d'inertie polaire: Ip=Ix+Iy

Ces valeurs sont principalement utilisées en Physique et en Résistance des Matériaux.

Le produit d'inertie (Ixy) sera introduit dans une prochaine version.
 

Editeur

Cette première version d'un programme évolutif permet de:
- Représenter graphiquement le polygone.
- Zoom et Move sans scintillement.
- Afficher ou cacher une fenêtre de texte (bouton Edit visible).
- Faire une mise en page "agréable" (bouton Vue tot).
- Déplacer le polygone (bouton Centrer) sur son centre de gravité.
- Tourner le polygone de 90° autour de l'origine (bouton Rot 90°).
- Ecrire les coordonnées des points dans la fenêtre Edit (bouton Ecri.Crd).
- Lire des points pour former un nouveau polygone (bouton Lire Crd).
- Calculer les caractéristiques du polygone et les écrire dans Edit (bouton Calcul).

Les moments d'inertie sont souvent appelés moments quadratiques.
 

Objet Polygone

struct Polygone { // Basé sur des arrays
  uint N=0;     // Nombre de points
  double *X,*Y; // Arrays de coordonnées des points (sommets)
  double A;     // Aire: A=∫dA
  double Sx,Sy; // Moments statiques: Sx=∫y·dA, Sy=∫x·dA
  double Xg,Yg; // Centre de gravité: Xg=Sy/A, Yg=Sx/A
  double Ix,Iy; // Moments d'inertie axiaux: Ix=∫y²·dA, Iy=∫x²·dA
                // Moment d'inertie polaire: Ip=Ix+Iy
  // ...
  void CalculSeg(double xx,double yy,double x,double y) {
    double sx=x+xx,sy=y+yy,pv=xx*y-yy*x;
    A+=pv;  Sx+=pv*sy; Sy+=pv*sx; // 2*A, 6*Sx, 6*Sy
    Ix+=pv*(yy*yy+sy*y); Iy+=pv*(xx*xx+sx*x); // 12*Ix, 12*Iy
  }
  void Calcul() {
    double sx,sy,x,y,xx=X[N-1],yy=Y[N-1];
    A=Sx=Sy=Ix=Iy=0;
    for (uint n=0; n<N; ++n) {CalculSeg(xx,yy,x=X[n],y=Y[n]); xx=x; yy=y;}
    if (A) {A/=2; Sx/=6; Sy/=6; Xg=Sx/A; Yg=Sy/A; Ix/=12; Iy/=12;}
  }
  // ...
}

La fonction CalculSeg(XX,YY,X,Y) calcule les apports de chaque segment (XX,YY)→(X,Y) et Calcul() en fait la somme.
Les formules suivants sont "controlées" numériquement avec (XX=17,YY=8) et (X=5,Y=13).

Rectangle: (0,0)(X,0)(X,Y)(0,Y)
$ 0 0
$ 5 0
$ 5 13
$ 0 13
A  = ∫dA = X·Y = 5·13 = 65
Sx = A·Yg = X·Y·Y/2 = X·Y²/2 = 5·13²/2 = 422.5
Sy = A·Xg = X·Y·X/2 = X²·Y/2 = 5²·13/2 = 162.5
Ix = ∫y²·dA = [y:0→Y]∫y²·X·dy = [y:0→Y]X·y³/3 = 5·13³/3 = 3661.667
Iy = ∫x²·dA = [x:0→X]∫x²·Y·dx = [x:0→X]Y·x³/3 = 13·5³/3 = 541.667
A   =         65.000
Sx  =        422.500
Sy  =        162.500
Xg  =          2.500
Yg  =          6.500
Ix  =       3661.667
Iy  =        541.667

Triangle: (0,0)(X,0)(X,Y) avec x = X/Y·y, y=Y/X·x
$ 0 0
$ 5 0
$ 5 13
A  = ∫dA = [y:0→Y]∫(X-x)·dy = [y:0→Y]∫(X-X/Y·y)·dy
   = [y:0→Y](X·y-X/Y/2·y²) = (X·Y-X·Y/2) = X·Y/2 = 5·13/2 = 32.5
Sx = ∫y·dA = [y:0→Y]∫y·(X-x)·dy = [y:0→Y]∫(X·y-X/Y·y²)·dy
   = [y:0→Y](X/2·y²-X/Y/3·y³) = X·Y²/2-X·Y²/3 = X·Y²/6 = 5·13²/3 = 140.833
Sy = ∫x·dA = [x:0→X]∫x·y·dx = [x:0→X]∫Y/X·x²·dx
   = [x:0→X]Y·X²/3 = Y·X²/3 = 13·5·5/3 = 108.333
Ix = ∫y²·dA = [y:0→Y]∫y²·(X-x)·dy = [y:0→Y]∫(X·y²-X/Y·y³)·dy
   = [y:0→Y](X/3·y³-X/Y/4·y⁴) = X·Y³/3-X·Y³/4 = X·Y³/12 = 5·13³/12 = 915.417
Iy = ∫x²·dA = [x:0→X]∫x²·y·dx = [x:0→X]∫Y/X·x³·dx
   = [x:0→X]Y·X³/4 = Y·X³/4 = 13·5³/4 = 406.25
A   =         32.500
Sx  =        140.833
Sy  =        108.333
Xg  =          3.333
Yg  =          4.333
Ix  =        915.417
Iy  =        406.250

Profil I
$ 0 0
$ 60 0
$ 60 10
$ 34 10
$ 34 90
$ 60 90
$ 60 100
$ 0 100
$ 0 90
$ 26 90
$ 26 10
$ 0 10
Lire ces coordonnées (Lire Crd), Centrer, Vue tot, Calcul.
A   =       1840.000
Sx  =          0.000
Sy  =          0.000
Xg  =          0.000
Yg  =          0.000
Ix  =    2781333.333
Iy  =     363413.333

Quart de cercle (r = 100, n = 100 segments sur l'arc)
$   100.000     0.000
$    99.970     2.454
$    99.880     4.907
$    99.729     7.356
$    99.518     9.802
$    99.248    12.241
$    98.918    14.673
$    98.528    17.096
$    98.079    19.509
$    97.570    21.910
$    97.003    24.298
$    96.378    26.671
$    95.694    29.028
$    94.953    31.368
$    94.154    33.689
$    93.299    35.990
$    92.388    38.268
$    91.421    40.524
$    90.399    42.756
$    89.322    44.961
$    88.192    47.140
$    87.009    49.290
$    85.773    51.410
$    84.485    53.500
$    83.147    55.557
$    81.758    57.581
$    80.321    59.570
$    78.835    61.523
$    77.301    63.439
$    75.721    65.317
$    74.095    67.156
$    72.425    68.954
$    70.711    70.711
$    68.954    72.425
$    67.156    74.095
$    65.317    75.721
$    63.439    77.301
$    61.523    78.835
$    59.570    80.321
$    57.581    81.758
$    55.557    83.147
$    53.500    84.485
$    51.410    85.773
$    49.290    87.009
$    47.140    88.192
$    44.961    89.322
$    42.756    90.399
$    40.524    91.421
$    38.268    92.388
$    35.990    93.299
$    33.689    94.154
$    31.368    94.953
$    29.028    95.694
$    26.671    96.378
$    24.298    97.003
$    21.910    97.570
$    19.509    98.079
$    17.096    98.528
$    14.673    98.918
$    12.241    99.248
$     9.802    99.518
$     7.356    99.729
$     4.907    99.880
$     2.454    99.970
$     0.000   100.000
$     0.000     0.000
A   =       7853.193
Sx  =     333283.136
Sy  =     333283.136
Xg  =         42.439
Yg  =         42.439
Ix  =   19631011.789
Iy  =   19631011.789
On s'approche des valeurs du quart de cercle: A = 7853.982
Xg = Yg = 4r/3π = 42.441, Sx = Sy = A*Xg = 333333.333, Ix = Iy = πR⁴/16 = 19634954.085

Remarques:
1) La fonction Lire Crd ne considère que les lignes de la fenêtre Edit qui commencent par '$' et qui contiennent en plus deux nombres.
2) Pour obtenir facilement le profil I de la figure de capture, copiez/collez dans le fenêtre Edit les 12 points des Profil I, puis cliquez sur le bouton Lire.
3) Essayez également les autres profils proposés, tout en changeant certaines valeurs.
4) Les segments doivent tourner dans le sens positif (contraire montre), sinin l'aire sera négative (trou).
 

Evolutions possibles

- Baser les points sur un cycle (boucle fermée) qui facilite ajout et retrait.
- Utilisation de paramètres.
- Ajout et suppression de points sur le graphique.
- Modification interactive des points sur le graphique.
- Coder d'autres Constructions tels que Rectangle (voir Polygone.h).
- Construction à l'aide de symétries et des symétries miroir.
- Calculer aussi Ixy, appelé Produit d'inertie (Product of Inertia), et les axes principaux.
- Utilisation de cercles et d'arrondis.
- Sections composées (plusieurs parties et trous).
- Merci de me faire part de vos propres désirs ou suggestions.
- ...
 
 
Bonne lecture ...
 
 

Liens

CodeS-SourceS: GDI+B: Move et Zoom avec la souris
CodeS-SourceS: GDI+C: Dessin sans scintillement
CodeS-SourceS: Polygones
WikipédiA: Moment quadratique
Caractéristiques géométriques des sections planes
FORMULES de PHYSIQUE
 
 

Bug CCM-CS: Charger une image

Depuis le 14 oct. 2017, personne ne peut déposer un code avec une image comme on est pourtant invité à le faire (voir par exemple: Liste des derniers codes sources).
A mon avis, ces images de capture sont très importantes !

En attendant, je mets cette image à disposition dans le fichier Capture.jpg du Zip, et demande au lecteur de m'excuser pour cette complication.

Je me permets de signaler ici ce bug d'une manière peu conventionnelle, car malgré bien des demandes, les "responsables" sont restés muets (voir: Discussion: Charger une image).

Dans tous les articles, j'enlèverai toute référence à ce bug dès qu'il sera de nouveau possible de charger une image (de capture) pour les articles existants et nouveaux.
 
 

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de William VOIROL

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.