Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment calculer l'aire des deux parties

    11 avril 2021 à 11:00:44

    Bonjour 

    Quelqu'un sait comment calculer l'aire des deux parties sur python. Sachant que je n'ai pas de fonction pour les courbes. Juste les coordonnées des points du contour. Merci

    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2021 à 11:48:55

      En comptant les pixels peut-être ?
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        11 avril 2021 à 18:39:40

        Dans quoi se trouvent les coordonnées des points?
        Comme l'a suggéré josmiley, il faut organiser les points pour faire un balayage sur les lignes ou les colonnes
        tu essaies de diviser tes espaces en rectangles ou parallèlogrammes et tu calcules les aires partielles et tu les cumules.
        Il se peut que tu aies des triangles aux deux extrémités.
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          11 avril 2021 à 18:42:04

          Je pensais plutôt à un A*.
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            11 avril 2021 à 18:51:41

            S'il y a un dessin, je ne le vois pas. :)
            Est-ce que ce sont des données expérimentales? Il faudra peut-être faire de l'interpolation.
            Je ne connais pas la méthode A*
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              11 avril 2021 à 19:04:22

              C'est une forme quelconque dont on connaît le contour. Je pensais qu'en remplissant la forme en comptant les pixels... Faut juste déterminer un point de départ à l'intérieur de la forme.
              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

                11 avril 2021 à 20:43:06

                Si la forme est convexe , et si on suppose qu'on sait calculer l'aire d'un triangle donné par trois points (à l'aide de leurs coordonnées (*)), je propose la méthode suivante.

                Je note \( A_0 \), \( A_1 \), ..., \( A_N \) les N sommets du polygone avec \( A_0 = A_N \) (pour fermer le polygone). Je calcule son centre de gravité G. Alors l'aire du polygone est égale à la somme des aires de tous les triangles \( GA_iA_{i+1} \) pour i allant de 0 à N-1.

                (Si le polygone n'est pas tout à fait convexe mais presque, ça peut marcher. Il faut que tous les triangles soient parcourus dans le même sens.) (Sinon on découpe le polygone en parties convexes et on calcule l'aire de chaque partie convexe.)

                -------

                (*) Pour un triangle ABC :

                \( {\cal A} = \dfrac{1}{2} \det \left( \vec{AB}, \vec{AC} \right) = \dfrac{1}{2} \left( (x_B-x_A)(y_C-y_A) - (x_C-x_A)(y_B-y_A) \right) \)

                -
                Edité par robun 11 avril 2021 à 21:36:33

                • Partager sur Facebook
                • Partager sur Twitter
                  12 avril 2021 à 7:01:25

                  Bonjour.

                  En divisant chacune des parties 1 et 2 par une droite perpendiculaire au segment vertical, on peut faire la différence des intégrales de la "courbe haute" et de la "courbe basse". Après il faut déterminer l'équation de chacune de ces courbes qui peut etre l'union de plusieurs sections de courbes. En écumant les modules scientifiques, il y a peut-être possibilité de s'en sortir sans trop de difficultés.

                  Après la solution de déterminer cette surface par la somme de différents polygones est sans doute moins complexe à mettre en oeuvre.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  PB68

                    12 avril 2021 à 9:50:08

                    Chercher une équation de courbe passant par plusieurs points, c'est de l'interpolation. L'interpolation polynomiale permettrait en effet le calcul des deux intégrales puisqu'on sait toujours trouver la primitive d'un polynôme. Mais ça me paraît largement plus compliqué (il faut écrire le calcul des N coefficients du polynôme d'interpolation, puis le calcul des primitives...) Mais ce serait peut-être plus précis ? (L'aire d'un polynôme convexe sous-estimera l'aire réelle.)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 avril 2021 à 12:26:58

                      est-ce que pour chaque x, tu as les 2 valeurs des y ? si oui, ça peut revenir à quelque chose comme la somme des delta(y) pour chaque x (la partie 1 étant pour les x<0; et la partie 2 pour les x>0 si on en croit ton dessin
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 avril 2021 à 12:56:51

                        umfred a écrit:

                        est-ce que pour chaque x, tu as les 2 valeurs des y ? si oui, ça peut revenir à quelque chose comme la somme des delta(y) pour chaque x (la partie 1 étant pour les x<0; et la partie 2 pour les x>0 si on en croit ton dessin


                        Bien vu. Ça revient à mon idée des différences d'intégrales en beaucoup plus simplifié !!!

                        -
                        Edité par PB68 12 avril 2021 à 12:57:05

                        • Partager sur Facebook
                        • Partager sur Twitter

                        PB68

                          12 avril 2021 à 13:07:47

                          PB68 a écrit:

                          umfred a écrit:

                          est-ce que pour chaque x, tu as les 2 valeurs des y ? si oui, ça peut revenir à quelque chose comme la somme des delta(y) pour chaque x (la partie 1 étant pour les x<0; et la partie 2 pour les x>0 si on en croit ton dessin


                          Bien vu. Ça revient à mon idée des différences d'intégrales ont beaucoup plus simplifié !!!


                          En fait, ça revient au même, mais en version géométrique. Pour compléter, ma réponse, ça serait de faire la somme de la surface de rectangle compris entre 2 valeurs de x: (x1,y11,y12),(x2,y21,y22) => (y22-y21)+2*(x2-x1)+(y12-11) donnent la surface (approximative mais d'autant plus proche que x1 et x2 sont proches) délimitée par les 4 points (on peut améliorer en calculant la vraie distance (x1,y11) et (x2,y21) et entre (x1,y12) et (x2,y22)  soit (Racine((x2-x1)² + (y21-y11)²))
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 avril 2021 à 23:20:56

                            Merci à tous, j'ai finalement diviser en rectangle et sommé les petits rectangles, mais je sous estime l'aire en faisant cela
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 avril 2021 à 2:19:12

                              J'avais parlé de triangles et de parallèlogrammes pour les bords. Il faut peut-être regarder de ce côté.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Le Tout est souvent plus grand que la somme de ses parties.

                                18 avril 2021 à 6:07:41

                                Au risque de me répéter, si les dimensions sont en cm et les points du contour vraisemblablement en px (sinon je ne vois pas ce que ferait ce sujet sur le forum python), on se retrouve avec une densité de type pixels/cm². Donc, ne suffirait-il pas, à l'aide d'un algo de remplissage, de compter les pixels et de faire la convention ?

                                -
                                Edité par josmiley 18 avril 2021 à 6:10:39

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Python c'est bon, mangez-en. 

                                  18 avril 2021 à 6:39:58

                                  Au risque de me répéter :) je ne vois pas le dessin.
                                  Peut-on délimiter des lignes horizontales bornées aux deux extrémités?
                                  Si c'est le cas, on peut effectivement compter le nombre de pixels pour chaque ligne et faire la somme.
                                  On associe une unité de surface (cm² comme dit josmiley) ou autre et on multiplie par le nombre de pixels.
                                  On se croierais au primaire ...
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Le Tout est souvent plus grand que la somme de ses parties.

                                    18 avril 2021 à 7:10:31

                                    Le dessin c'est genre un lac vu du ciel, une surface non géométrique en fait sur une échelle en cm. D'façon la seule donnée est une liste de points contiguës qui forment une boucle, donc la forme générale de la surface on s'en tamponne 😛

                                    -
                                    Edité par josmiley 18 avril 2021 à 7:27:42

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Python c'est bon, mangez-en. 

                                      18 avril 2021 à 7:27:56

                                      Si JulesGass nous disait comment il a obtenu ou généré son dessin, on pourrait l'aider un peu plus.
                                      Si c'est un scan d'une surface, on a tous les pixels, donc les extrémités à chaque ligne.
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Le Tout est souvent plus grand que la somme de ses parties.

                                        18 avril 2021 à 12:23:49

                                        Non, il a juste les coordonnées des points du contour.

                                        Sa méthode est bonne je trouve : définir des petits rectangles et sommer les aires. En effet ça va donner une valeur sous-estimée. Il faudrait faire un deuxième calcul en ajoutant des petits rectangles qui contiennent le contour, ce qui donnera une valeur surestimée. Si on augmente le nombre de rectangles (de plus en plus fins), les deux calculs convergeront.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 avril 2021 à 18:26:00

                                          Et si on faisait des interpolations pour savoir à quel endroit chaque segment de droite coupe chaque ligne?
                                          Parce que si ce sont des coordonnées, il n'y a pas vraiment de "courbe".
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Le Tout est souvent plus grand que la somme de ses parties.

                                          Comment calculer l'aire des deux parties

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown