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

Mathématiques Discussion :

Déterminer si une coordonnée est située dans une région de forme triangulaire


Sujet :

Mathématiques

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut Déterminer si une coordonnée est située dans une région de forme triangulaire
    Bonjour,

    Tout est dans le titre.

    Actuellement j'arrive parfaitement à déterminer si ma coordonnée en entrée est située à l'intérieur d'une région de forme rectangulaire.

    Par contre je n'ai absolument aucune idée pour ce qui est d'une région triangulaire......

    Auriez vous une piste ?

    Merci,
    a plus

    PS : In fine se sera retranscrit en javascript alors faudra pas trop espérer s'appuyer sur le langage.

  2. #2
    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,

    il y a eu plusieurs discussion sur le sujet pour savoir si un point est dans une forme convexe. Fais donc une recherche sur le sujet

    Une méthode très courante et facile est de regarder les signes des angles formés par le point testé et une paire de sommet du polygone.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Points : 682
    Points
    682
    Par défaut
    M appartient au triangle ABC si et seulement si :

    ((A x B) . M > 0) et ((B x C) . M > 0) et ((C x A) . M > 0) ont la même valeur.

    quelques explications :
    'x' désigne le produit en croix soit le produit vectoriel
    '.' désigne le produit en point soit la somme des produits élément par élément

    Au cas ou tu ne le serais pas en 2D projective le produit vectoriel de 2 vecteurs représentants des points de l'espace 2D projective donne un vecteur représentant l'équation de la droite passant pas ses points (et vise et versa)

    Ca donne des équations vachement simple et jolie

    Par exemple
    si ((A x B) . M > 0) alors M est à droit de la droite AB
    si ((A x B) . M = 0) alors M est sur la droite AB
    si ((A x B) . M < 0) alors M est à gauche de la droite AB

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Tu as aussi la solution 'barycentrique'.
    Pour savoir si M est a l'intérieur du triangle ABC Tu résouts le système vectoriel:
    OM=aOA+bOB+cOC
    a+b+c=1
    Qui se ramène à deux équations à 2 inconnues après expression de OC en fonction de OA et OB.
    si a,b,c sont de même signe alors M est à l'intérieur du triangle.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Ahhh c'est magique ! Avec vous c'est simple comme bonjour.


    Mais là j'ai rien compris.... faut que je reprenne mes cours de math..

    ToTo13, désolé, c'est vrai que je n'ai pas fait de recherche...

    Bon aller je vais décrypter tout cela et l'implémenter !

    merci messieurs

    a plus

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Désolé Kaymak !
    On ne le fait pas exprès pour t'embrouiller.
    Ton problème est mathématique par nature.
    Viendrait il à l'idée de quelqu'un qui demande un avis sur une forum de santé, qu'une réponse est trop médicale ?
    Courage ! et n'hésite pas à poser des questions pratiques.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Héhé je sais bien !
    Mais l'aspect simple et magique me laisse quelques espoirs de compréhension

    Pour le reste j'ai surtout un problème de connaissance et d'utilisation des termes.
    Par exemple "Produit Vectoriel" n'a, dans ma bouche, pas beaucoup plus de sens que "hypothalamuse".
    Je sais avec certitude que l'hypothalamuse est située dans le cerveau, et que mon produit vectoriel provoquera quelques multiplications, mais dépasser ces lieux communs de connaissances... je patauges !

    Pour le moment car je compte bien arriver à bout de ces quelques notions mathématiques qui me semblent bien basique.

    a plus et merci

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    cherche dans Google "Point in polygon", si tu ne veux pas des conseils donnés plus haut..

  9. #9
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    cherche dans Google "Point in polygon", si tu ne veux pas des conseils donnés plus haut..
    Ah bon, parce que le 'ray casting' et le 'winding number' cela te paraît plus simple que ce qui a été proposé ?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    c'est l'orage ??

    non je disais ça puisque le PO a l'air dubitatif sur les méthodes exposées...


  11. #11
    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
    Bonsoir,

    Citation Envoyé par kaymak Voir le message
    ToTo13, désolé, c'est vrai que je n'ai pas fait de recherche...


    allé... c'est vraiment mon jour de bonté :p
    Ton triangle a trois points A, B et C. Tu souhaites savoir si ton point M est dans ABC.
    Tu regardes si Angle(MA,MB) = Angle(MB,MC) = Angle(MC,MA). Si c'est le cas, M est dans le triangle, sinon il est dehors

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int Signe(int x) /* Cette fonction calcule le signe de x et renvoi +1, -1 ou 0 */
    	 {
    	 if ( x < 0 ) return -1 ;
    	 if ( x > 0 ) return 1 ;
    	 return 0 ;
    	 }
     
     
    /* Cette fonction prend les coordonnées de deux vecteurs en argument et renvoi le signe de l'angle ainsi formé par ces vecteurs */
    int Angle(int x1, int y1, int x2, int y2)
    	{
    	return Signe(x1*y2-y1*x2) ;
    	}

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Une méthode très courante et facile est de regarder les signes des angles formés
    Citation Envoyé par Zavonen Voir le message
    Tu as aussi la solution 'barycentrique'(...
    Il y a juste le nom qui change car au final les calculs sont exactement les même que les miens

  13. #13
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    c'est l'orage ??

    non je disais ça puisque le PO a l'air dubitatif sur les méthodes exposées...

    Tu me rassures, j'avais un doute... Sinon tout va bien

  14. #14
    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
    Citation Envoyé par ijk-ref Voir le message
    Il y a juste le nom qui change car au final les calculs sont exactement les même que les miens
    Exactement. Tu as détaillé ce que j'avais proposé.

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut Tlm,

    Merci pour toutes ces réponses : ) Plus ou moins pertinentes selon le PO

    bref.

    ToTo13, je dois bien le dire, tu me sauves la vie de traduire ces quelques *insultes* <Angle(MA,MB) = Angle(MB,MC) = Angle(MC,MA)> mathématiques car j'aurai chercher longtemps et bien plus compliqué...

    Merci bien en tout cas ! A vous tous.

    bye

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  2. Réponses: 2
    Dernier message: 28/04/2010, 18h09
  3. Verifier si une chaine de caractere est situe dans une chaine de caractere
    Par gregounnet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2007, 15h31
  4. Réponses: 4
    Dernier message: 28/08/2006, 13h04
  5. [VBA-E] Savoir si une cellule est contenue dans une plage
    Par psych0o0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2006, 14h12

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