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 :

Equation d'ellipse


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut Equation d'ellipse
    Bonjour,
    J'ai une image représentée par un tableau et je cherche à dessiner une ellipse dans cette image... le problème c'est que je ne suis pas très fort en maths, alors les équations d'ellipse... Sauriez-vous comment utiliser une équation d'ellipse afin d'en dessiner une sur une image?
    En cherchant sur le net j'ai trouvé cette équation :
    Ellipse : x = a.cos t , y = b.sin t
    Savez vous comment l'utiliser?
    merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Manipule et dessine dans tes images avec une bibliothèque dédiée.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    En fait je cherche plus précisement à selectionner tous les points qui ne se trouvent à l'interieur d'une ellipse dans une image. Je ne souhaite pas utiliser de bibliothèque dédiée au dessin.

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Eh bien c'est un problème d'algorithmie alors, le C++ n'y étant pour rien.
    Je déplace vers le bon forum.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    désolé

  6. #6
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    tu regardes les coordonnees des points, et la diference dans chaque direction par rapport au centre de l'ellipse.
    ensuite tu testes si le point est dans l'ellipse av"ec la relation suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dx = (x-x0);
    dy = (y-y0);
    if (dx*dx/a/a + dy*dy/b/b < 1){
        // on est dans l'ellispe
    }else{
        // on est en dehors
    }
    ca marche par contre qu'avec els ellipse dont les axec sont pralleles aux axes principaux.

    A+

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    merci beaucoup j'essaye ça tout de suite

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    ça me dessine une croix à la place d'une ellipse

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    Voici mon code :
    En considérant l'équationde l'ellipse :
    ((X-X0)/A)² + ((Y-Y0)/B)² = 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    w2 = image->_w >> 1;//Division par deux de la largeur(décalage de 1 sur la droite)  
      h2 = image->_h >> 1;//Division par deux de la hauteur(décalage de 1 sur la droite)  
      axe_h_ellipse = (8*h2/10); //Correspond à A : on prend 8 dixieme de la moitié de la hauteur de l'image 
      axe_w_ellipse = (8*w2/10); //Correspond à B : on prend 8 dixieme de la moitié de la largeur de l'image 
      centre_x = w2 ;  //X0 
      centre_y = h2 ;  //Y0 
      for(int l = 0; l < image->_h; l++) 
      { 
         for(int c = 0; c < image->_w; c++)   
          {    
             ind = c + l * image->_w; //Permet de parcourir le tableau des pixels de l'image 
             recentre_x = (int)((c - centre_x)/ axe_w_ellipse);  // (X - X0)/A 
             recentre_y = (int)((l - centre_y)/ axe_h_ellipse);  // (Y - Y0)/B 
             distance_au_centre = recentre_x * recentre_x + recentre_y * recentre_y; //((X - X0)/A)² + ((Y - Y0)/B)² 
             // POUR FAIRE UNE ELLIPSE NOIRE SUR L'IMAGE   
             if( distance_au_centre <= 1) //SI ((X - X0)/A)² + ((Y - Y0)/B)² <=1 alors on est dans l'ellipse 
                image->_norme[ind] = 0.0; //norme contient les pixels de l'image  
          } 
      }

  10. #10
    Membre éprouvé Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Par défaut
    tu fais quoi ? tu parcours tous les pixels et tu regardes si le pixel est dedans l'ellipse.
    je pencherais pour un problème de cast.

  11. #11
    Membre éclairé
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Par défaut
    Salut,


    Je n'ai pas détaillé complètement ton algorithme, mais je crois que tu devrais conserver ((X - X0)/A) en tant que nombre flottant car avec un entier tu n'as peut-être plus grand chose à cause de la précision. De plus tu peux réduire les bornes de ta boucles pour ne parcourir que le rectangle anglobant de l'ellipse ( de taille 2*A par 2*B et centré sur le centre de l'ellipse ) avec peut-être une marge de 1 à cause des arrondis liés aux pixels.

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    Avec ou sans cast, j'ai exactement le même résultat : même si je déclare toutes mes variables en flottants, c'est la même chose

  13. #13
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par défaut
    il me restait une variable déclarée en int... c'est à cause de ça que j'avais une jolie croix à la plce d'une ellipse!
    merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tracé d'une ellipse à partir d'une equation cartesienne.
    Par ThibaudFITOS dans le forum Mathématiques
    Réponses: 1
    Dernier message: 13/01/2010, 12h46
  2. [TP] Equation d'une ellipse
    Par Sufart dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 01/04/2008, 20h48
  3. Ellipse d'un tube pivotant
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 18/03/2004, 21h49
  4. résolution de equation 2nd degré
    Par isidore dans le forum C
    Réponses: 30
    Dernier message: 29/02/2004, 10h46
  5. résolution d'equation f(x) = 0
    Par magicien dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 16h06

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