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 :

Orienter des points


Sujet :

Algorithmes et structures de données

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Orienter des points
    Bonjour,

    je dispose de cinq ou six points se trouvant dans un même plan (quelconque).
    Je souhaiterai orienter ces points (les trier) dans un sens (trigo ou non, peu importe).

    Je pense que cela peut se généraliser à N points.

    Est ce que quelqu'un aurait une idée ?

    Merci par avance...

  2. #2
    Membre régulier Avatar de Tchaill39
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 110
    Points : 70
    Points
    70
    Par défaut
    Tu te sert d'un tableau dynamique. Tu lui donne 1 dimension dans lequel tu range ton 1° point (par exemple en carthésien un enregistrement point.X point.Y)

    Ce tableau sera ta liste classée. Tu prend ensuite chaque point (n points) que tu classe au fur et à mesure dans ton tableau dynamique avec ton critère de classement.

    Cela nécéssite juste une petite fonction qui t'insère un enregistrement dans ton tableau dynamique et c'est tout

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    Citation Envoyé par Tchaill39
    Tu prend ensuite chaque point (n points) que tu classe au fur et à mesure dans ton tableau dynamique avec ton critère de classement.
    C'est justement ce critère de classement qui me manque.

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Tu veux les trier pour faire quoi ?

    Utiliser la norme euclidienne comme critère ne suffit t-il pas ?

    Si tu veux les orienter selon un angle, il suffit de déterminer l'angle du point.
    Si tu disposes d'un point (x,y) tel que y soit non nul, tu peux avoir l'angle par la formule arctan(x/y). Si y=0, l'angle vaut + ou - pi/2.

  5. #5
    Membre régulier Avatar de Tchaill39
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 110
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par millie
    Si tu veux les orienter selon un angle, il suffit de déterminer l'angle du point.

    Pour que tes points soient parfaitement définis il leur faut cet angle mais aussi la distance par rapport à ton point O référence dans ton repère cylindrique.

    En cartésien tu classe par X croissant et si X égaux, tu range en Y croissant

  6. #6
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Trouver un seul critère revient à établir une bijection de E dans E' avec E l'espace de départ et E' l'espace d'arrivé totalement ordonné.
    Si les coordonnées des points sont entières cela revient à trouver une bijection de NxN vers N.
    Celle ci peut s'obtenir par un parcourt en "zigzag" de NxN.
    Si les coordonnées sont réelles il suffit de déterminer le rang de la plus petite décimale des valeurs et se ramener aux entiers.
    Le problème étant que les valeurs dans l'espace d'arrivé s'accroissent trés vite : de l'ordre du carré de la plus grande des coordonnées.

  7. #7
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Tu pars de l'origine, pour chacun des points, tu calcules l'angle par rapport à un axe et suivant l'angle du effectue un tri classique sur un tableau.

  8. #8
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Tu pars de l'origine, pour chacun des points, tu calcules l'angle par rapport à un axe et suivant l'angle du effectue un tri classique sur un tableau.
    L'angle n'établit pas une bijection car l'application qui a un point associe un angle n'est pas injective : à un angle peut correspondre plusieurs points.

  9. #9
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Oui, à 2Pi près, mais on peut faire l'hypothèse que les points seront entre 0 et 2 Pi. Il faut parfois faire des concessions sur la généralité pour faire une application.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par PRomu@ld
    Oui, à 2Pi près, mais on peut faire l'hypothèse que les points seront entre 0 et 2 Pi. Il faut parfois faire des concessions sur la généralité pour faire une application.
    Je ne pense pas que c'est à ça que pensait seriousme

    Sans autre information que les coordonnées du point, on ne peut que considérer que l'angle est 0 <= angle < 2Pi, sinon comment décider ?

    Il reste quand même qu'à un même angle peuvent correspondre plusieurs points (et même une infinité), c'est la longueur du vecteur correspondant qui changera dans ce cas (ou pas, auquel cas c'est le même point...).

    Un moyen de s'en sortir serait peut-être de faire un tri par l'angle, et ensuite séparer les points ayant le même angle en fonction de la longueur du vecteur.

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    Tu pars de l'origine, pour chacun des points, tu calcules l'angle par rapport à un axe et suivant l'angle du effectue un tri classique sur un tableau.
    Ceci n'est + ou - correct QUE si les points entourent l'origine! si non on obtiendra un classement qui sera certainement pas celui recherché.
    Si on veut classer les points par rapport à une 'Phase', il faut
    1- estimer l'axe ( donc le centre en 2D) de rotation. Cela n'est pas forcément immédiat si les points sont non équi-répartis ou si les points sont sur une courbe non circulaire
    2- se rappeler que ce classement ne sera en aucun cas univoque car l'origine de la mesure de la phase est à priori arbitraire donc si (Xi) i=0..n-1 est une solution
    X{(i+p) modulo n} en sera aussi une quelque soit p


    Il reste pas moins que le classement par la phase peut poser des problèmes comme par exemple
    1- des points sur une spirale ( d' Archimède par exemple ) pour des angles allant de 0 à 4pi par exemple. Ici ranger avec la phase modulo 2pi devient un non-sens
    2- si les points sont sur une lemniscate de Bernoulli, alors il y a un changement de phase de Pi au passe par 0,
    3- et bien d'autres cas...

  12. #12
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    mettons tous le monde d'accord avec une bonne solution :
    - On choisit deux points.
    - On fait passer un plan par ces deux points, de telle sorte que ce nouveau plan est orthogonal au plan contenant les deux points.
    - Ensuite on teste pour savoir si les points restant sont tous du même coté du nouveau plan. C'est facile à l'aide de l'inéquation du plan, en mettant les coordonnées de chaque points dans l'équation du nouveau plan.
    - Si tout les signes sont identiques, alors c'est que nos deux points sont côte à côte.

    Voilou.....

    Merci pour les réponses...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/05/2014, 16h24
  2. créer des graphes orientés à partir des points 2D
    Par syki.mail dans le forum MATLAB
    Réponses: 6
    Dernier message: 27/01/2014, 11h41
  3. Trouver orientation des deux points
    Par info_sara dans le forum Mathématiques
    Réponses: 8
    Dernier message: 28/05/2013, 15h04
  4. Orientation des points de Harris
    Par tedoldi dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 25/01/2011, 11h20
  5. Réponses: 1
    Dernier message: 06/03/2009, 20h08

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