IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algo qui calcule une aire


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Salut !!

    * d'abord ma forme est vraiment quelconque (concave ou convexe) voire une forme de pomme de terre, jamais un "huit"
    * ensuite je cherche l'aire en comptant mon nombre de points inclus dans cette forme
    si je prends mon image ligne à ligne je peux avoir :
    * 0 points (pas de contour)
    * 1 point (sommet du contour)
    * 2 points (interieur du contour)
    * 2*n points (si partie convexe)
    M... c'est ce que je voulais expliquer !!

    Mais l'algo de jp mignot me plaît bien !!! ça a l'air sympa !

    A+

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Ben comme il dit, l'avantage, c'est que sauf courbe complètement débile (avec beaucoup de circonvolutions), c'est plus en O(n) qu'en O(n²). C'est marrant, je ne m'étais jamais dit que la formule de Stokes pouvait EFFECTIVEMENT servir

  3. #3
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    je vous engage alors à revoir vos equations de maxwell et tout l'electromagnétisme, calcul de flux, ...!
    l'analyse vectorielle y est reine.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Si je veux !

    Ce n'est pas exactement ce que j'entendais par "servir".

    Je sais très bien à quoi sert la formule de Stokes, c'est juste que je l'ai apprise dans un cadre beaucoup plus théorique (variétés différentielles, forme différentielle, et tout le bataclan, qui ne m'a jamais vraiment passionné) et c'est amusant de se rendre compte qu'elle sert, bien sûr sous sa forme la plus simple. J'ai étudié tellement de choses qui ont peu d'applications.

  5. #5
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    j'aime beaucoup la methode proposee par j.p.mignot, tres propre et efficace. bien joué

    je ne m'attendais pas non plus a voir ressurgir Stokes

  6. #6
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    1- Je tiens à m'excuser de ma réaction un peu vive à l'encontre de 'Le Furet'. Je suis moi-même passionné de math et de physique ( modélisation ) et ai réagit un peu vite.
    Au vu des autres mails de ce correspondant je ne doute pas qu'il ait les bases mathématiques pour maîtriser des outils de base.
    2- "étudié bien des choses qui ont peu d'application" ... oui et non : on utilise bien des outils dont on "oublie" faute de temps les fondements et dont l'exactitude dépend de "vérité" bien + profondes: on les utilises donc sans s'en rendre toujours compte! Je trouve que, malheureusement, on utilise de + en + des "formules" quasi "magiques" sans + prendre vraiment le temps d'en vérifier ni l'origine ni même les domaines d'applications. D'autre part par manque de réflexion sur les bases même de l'édifice des mathématiques, il y a de + en + de problèmes qui sont abordés sur 1 aspect numérique via des computer de + en + puissant sans même se rendre compte qu'une solution analytique est possible ( =>perte de temps, perte des conclusions qu'une équation apporte quant aux comportements, stabilités, ... ) ceci même dans le cadre de programmes réputés "professionnels". - j'ai des exemples frappants dans les équations différentielles -
    Mais je suis, par la force des choses, dans le même dilemme que notre interlocuteur: J'ai aussi appris bien des choses en prépa, grandes écoles, 3eme cycle qui ne sont plus que de la culture que j'essaie de maintenir mais dont je n'ai plus réellement le temps de me préoccuper.
    3- Pour en revenir à Stokes et Ostrogradsky, trouver un champ vectoriel ( resp scalaire) qui ramène de 2D à 1D ( resp. 3D à 2D) représente un gain de temps + que considérable. Cela représente entre autre l'1 des avantages de la modélisation BEM ( Boudry Element Method ) avec la FEM ( Finite Element Method ).
    Calculer une aire revient à calculer le flux de k à travers la surface ( du plan i,j) donc pour appliquer Stokes il faut trouver A tel que rot(A) = k. ceci trouve facilement 1 solution ( voir mail + haut ). On remarquera un intérêt encore + accru d'appliquer stokes pour la calcul du flux à travers des courbes non planaires si div (A)=0 ( flux concervatif) !
    de façon + générale trouver A tel que rot(A) = fi(x,y,z)i + fj(x,y,z)j + fk(x,y,z)k amène à des équations différentielles partielles en général non linéaire... Mais même comme cela une solution numérique à ce système permet utiliser Stokes ( avec moins d'efficacité qu'en présence d'une solution analytique ) mais certainement plus d'efficacité que d'essayer de traiter le problème 2D. Ces remarques se reportent avec Ostrograsky et le passage 3D->2D

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut
    Bonsoir,

    j'ai pu tester le petit algo pour calculer l'aire avec Stokes et c'est vrai que c'est vraiment pratique et en plus ca marche !!!

    Mais le probleme se complique un peu, en fait ma surface definie par les points est incluse dans un tableau de 2 dimensions
    le but est que tous les points inclus dans la surface doivent etre égal à 1 et ceux en dehors égaux à zero.
    dans la fonction je lui passe un tableau qui va donc se remplir au fur et à mesure suivant que les points appartiennent ou non a la surface

    J'espere que je me suis bien fait comprendre.

    En clair, j'aurai besoin d'une fonction de remplissage de tableau en fonction de la position du point

    merci

  8. #8
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Non vous ne vous êtes pas fait comprendre! soyez plus précis SVP!
    Le problème du calcul d'aire ne se compliquera pas seul l'invoquation de l''algorithme pourra être affectée ( légèrement )
    D'autre part à mon avis tout a été + ou - dit sur ce sujet et je vous suggère de le noter comme [résolu]. Je ne pense pas que vous puissiez raisonnablement en attendre + d'infos.

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut
    OK
    je vais essayer de faire le plus clair

    je connais ma liste de points de contour (x,y) inclus dans une image de taille (taille_X, taille_Y)
    je voudrais mettre dans une table de dimension identique (taille_X,taille_Y) des "1" ou des "0" suivant que le points correspond à la surface ou non !

    voila espere que c'est plus simple

  10. #10
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Il ne s'aggit STRICTEMENT PLUS d'un problème de calcul d'aire. Cela pose des problèmes de nature TRES différentes, par ailleurs sensiblement plus difficiles à formuler de façon unnivoque. Pouvez-vous préciser les hypotèses que l'on peut admettre pour considerer un point ( élément de la matrice ) comme etant sur le contour ( continuité, dérivabilité, arrondi, ... )
    Je maintiens
    1- Clore le topic " calul d'aire"
    2- ouvir un nouveau thème de discussion " Comment savoir si un point est situé dans la surface sous-tentue par une courbe fermée"

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut
    Je sais qu'il ne s'agit plus d'un probleme de calcul d'aire mais ca devient un probleme de remplissage
    mes points sont connus par des coordonnées (x,y)
    je connais ma limite en x et y que j'appelle taille_X et taille_Y (par exemple taille_X = 5000, taille_Y=6000)
    mes coordonnees de points sont par exemple (1251,1687) (1252,1687) ...

    Donc pour tous les points de contour et tous les points inclus dans ce contour je voudrais mettre une valeur 1 dans un tableau correspondant aux memes coordonées de ces points et 0 ailleurs

  12. #12
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    le_nardo --> Bah... L'algo que tu décrivais me semblait approprié non ?

    Sinon tu as moults algos de remplissage, tu n'as que l'embarras du choix... Un bien efficace et surtout rapide est la croissance par régions, si tant est que tu puisses connaître au moins un point à l'intérieur de ta région... Sinon il y en a plein d'autres, dont celui que tu citais...

    A+

  13. #13
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Je ne pense pas que cela soit aussi simple. Preuve en est le nombre de fois où le remplissage est incomplet ou, au contraire "fuit" dans des soft tout de même robuste comme photoshop.
    Peuvent se poser des problèmes comme
    1- discontinuité de la fronzière du au manque de points
    2- apparente fermeture car la pixelisation a contuit à un étranglement de la forme qui "cache" la suite du dessin.

    Il doit être possible de trouver sans trop de difficulté des solutions à se probléme
    il faut affecter une variable d'état à chaque pixel le notant comme "non traité", "dans la surface"," Hors de la surface" ou "sur la courbe définitiant la frontière"
    je dirais de faire
    a- ajouter une ligne de plus "en haut et en bas de la matrice" ainsi qu'1 colone de plus "à gauche et à droite de la matrice" afin d'assurer que dans ce nouveau cadre la frontière ne touche aucun bord.
    b- clore la courbe par adjonction des pixels manquant.
    c- marquer les pixel de la courbe comme "sur la courbe définitiant la frontière"
    d- Faire diffuser l'info " Hors de la surface" depuis un coin.
    e- recherche des étranglements.
    si aucun alors marquer tous les points non traités comme "dans la surface"
    f- si non
    - tant qu'il y a des points de la courbe hors des positions d'étranglement qui cotoient à la fois des points marqués comme "hors..." et des points marqué come "non traité", aller sur le point " non traité" et faire diffuer l'info "dans la courbe"
    - tant qu'il y a des points de la courbe hors des positions d'étranglement qui cotoient à la fois des points marqués comme "Dans la surface..." et des points marqué come "non traité", aller sur le point " non traité" et faire diffuer l'info "Hors la courbe"

    Ceci n'est qu'une idée et n'est ni testé ni même vérifié quant à l'exactitude de l'approche.

    Je n'ai pas encore réfléchit à une détection automatique des occlusions mais je ne pense pas que cela soit difficile à mettre sur pied. Il faut aussi analyser le cas des courbes qui se croissent comme 8 ou projection des fenêtres de viviani. Ici à l'intersection les pentes diffèrent alors que sur une occlusion, les tangentes sont identiques mais les sens de déplacement sont inverses.

  14. #14
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Ton idée est certes plus robuste (et donc plus longue), mais apparemment le_nardo dispose de tous les points de frontière, auquel cas il ne peut y avoir de fuites....

  15. #15
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Tu peux regarder du côté du remplissage de trous (si ton image est binaire (enfin on peut l'adapter sinon)):
    http://www.developpez.net/forums/vie...419&highlight=

    L'algo remplir toutes les formes fermés d'une image binaire (utile s'il y a des risques de goulot d'étranglement dans ta forme). Puis y'a plus qu'à compter le nombre de pixels de la surface en question (il suffit de connaître un point de la surface).
    S'il n'y a pas de goulot d'étranglement, le simple algo de remplissage d'une surface (du milieu de la page du lien) suffit puis après compter les pixels de ta surface (algo similaire)

  16. #16
    Membre émérite
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Par défaut
    Certaines réponses mixent encore le problème de "remplissage" et de "calcul d'aire"...
    Je réitère ma suggestion auprès de l'auteur de cette rubrique: Ouvrir un deuxième thème de débat. Cela sera bien plus clair pour ceux qui cherchent des réponses. A mon avis le problème du calcul de l'aire est clos tandis que celui du remplissage peu encore suggérer des commentaires éclairés. Et continuer à vouloir calculer l'aire à partir du remplissage des formes ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/10/2014, 22h09
  2. [Macro Excel] Fonction qui calcule une formule dans une cellule
    Par Enthau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2008, 16h31
  3. [Erreur] algorithme qui calcul une moyenne
    Par quaresma dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 24/04/2008, 20h58
  4. algo qui manipule une matrice carré
    Par do_key_120 dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 21/10/2007, 01h42
  5. methode qui calcul une moyenne du traffic
    Par siry dans le forum Développement
    Réponses: 7
    Dernier message: 05/05/2005, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo