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
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.
Le Tout est souvent plus grand que la somme de ses parties.
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*
Le Tout est souvent plus grand que la somme de ses parties.
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.
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.)
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.
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.)
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
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é !!!
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)²))
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 ?
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 ...
Le Tout est souvent plus grand que la somme de ses parties.
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 😛
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.
Le Tout est souvent plus grand que la somme de ses parties.
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.
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".
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.
Python c'est bon, mangez-en.
Le Tout est souvent plus grand que la somme de ses parties.
Python c'est bon, mangez-en.
Le Tout est souvent plus grand que la somme de ses parties.
Python c'est bon, mangez-en.
PB68
PB68
Le Tout est souvent plus grand que la somme de ses parties.
Python c'est bon, mangez-en.
Le Tout est souvent plus grand que la somme de ses parties.
Python c'est bon, mangez-en.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.