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 :

Calcul d'angle entre deux segments pour algo de Jarvis


Sujet :

Mathématiques

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut Calcul d'angle entre deux segments pour algo de Jarvis
    Bonjour,

    J'essaye d'implanter l'algorithme de Jarvis pour détecter un contour extérieur.

    Le but est de calculer l'angle entre deux segments, connaissant les points de ces segments.


    A(xa,ya)
    AO(xa,yaO) Ao est sur le même axe X que A

    A(xa,ya)
    B(xb,yb)


    Si quelqu'un à une formule rapide pour pouvoir déterminer l'angle entre deux segments a partir des points définis ci-dessus .

    Sa fait très longtemps que j'ai pas travailler avec les vecteur et les recherche sur le net ne m'ont pas données les résultats espérés.

    Merci d'avance!

    Bonne journée

    Nicolas

  2. #2
    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
    Le produit scalaire divisé par le produit des normes te donne le cosinus. Le déterminant divisé par le produit des normes te donne le sinus.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    merci de ta réponse cependant j'ai une petite question comment on calcul le produit scalaire entre deux points?

    Par rapport au déterminant?


    Désoler si mes questions paraissent trivial mais sa fait 10ans que j'ai pas fait de maths désoler

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    J'ai vu mais comment je transforme sa avec mes points parce que sa explique largement mais pas précisément avec les coordonnées x y ?

  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
    merci de ta réponse cependant j'ai une petite question comment on calcul le produit scalaire entre deux points?
    Le produit scalaire est une opération avec des vecteurs, pas des points.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Merci et je suis d'accord mais comment faire le lien entre les vecteurs(2points) et les coordonnées de ces mêmes points?

    Encore désoler mais ces notions sont très vielle pour moi...

    Pour la norme je vois c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqrt(power((Xb-Xa),2)+power((Yb-Ya),2))
    Mais pour le calcul du produit vectoriel je bloque

  8. #8
    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
    Mais pour le calcul du produit vectoriel je bloque
    Il n'y a pas de produit vectoriel ici.
    Il y a des produits scalaires et des déterminants.
    Le p.v. est une opération pour les vecteurs de l'espace.
    Si tu demandes à Google 'produit scalaire' et 'déterminant' tu auras tout ce que tu veux.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    merci Zavonen mais ...

    Citation Envoyé par Zavonen Voir le message
    Le produit scalaire divisé par le produit des normes te donne le cosinus.
    j'ai besoin de mon produit scalaire pour connaitre mon cosinus nan?


    Pour le determinant je prend les arguments des deux points exterieur a l'angle par

    Suis je sur la bonne piste?

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Niko_de_bordo Voir le message
    Suis je sur la bonne piste?
    Il faut d'abord construire les vecteurs AO et AB. Ensuite seulement tu pourras calculer leur produit scalaire.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Ok si on prend l'angle AOB

    A(3,4)
    O(1,1)
    B(5,2)

    vecteur AO=(x0-xA;y0-yA)
    AN:
    vecteur AO=(-2;-3)

    vecteur OB=(xB-xO;yB-yO)
    AN:
    vecteur OB=(4;1)

    produit scalaire_AO.OB=4*-2+-2*3
    produit scalaire_AO.OB=-14

    Pour le produit des normes:
    Produit norme=sqrt((x0-xA)²+(y0-yA)²) * sqrt((xB-xO)²+(yB-yO)²)

    Pour le determinant:
    Det=(-2*1)-(-3*4)




    cos(angle AOB) = produit scalaire_AO.OB / Produit norme
    sin(angle AOB) = Det/ produit norme

    Est ce que mon raisonnent est bon?

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    A quelques erreurs de calculs près, c'est ca.

    O(1,1)
    A(3,4)
    B(5,2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     |
    4|   A
    3|
    2|     B
    1| O   
     |________
       1 3 5 7
    OA(2,3)
    OB(4,1)

    OA.OB = 2*4 + 3*1 = 11
    |OA| = sqrt(2²+3²) = sqrt(13)
    |OB| = sqrt(4²+1²) = sqrt(17)

    OA.OB = |OA| * |OB| * cos(AOB)

    => cos(AOB) = 11/(sqrt(13)*sqrt(17)) ~= 0.740

    => AOB ~= +/- 42°
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    merci pour ta réponse

    Pour le determinant:
    Det=(-2*1)-(-3*4)
    sin(angle AOB) = Det/ produit norme

    c'est bien sa?

  14. #14
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Niko_de_bordo Voir le message
    merci pour ta réponse

    Pour le determinant:
    Det=(-2*1)-(-3*4)
    sin(angle AOB) = Det/ produit norme

    c'est bien sa?
    OA(2,3)
    OB(4,1)
    det(OA,OB) = (2*1) - (4*3) = -10

    effectivement, on peut en déduire le sinus. Mais comme le produit scalaire nous donne déjà le cosinus, on a l'angle au signe près. Et pour connaitre le signe, il suffit de regarder si le determinant est positif ou négatif (car la division par les normes ne changera pas le signe).

    determinant positif => sinus positif => angle entre 0 et 180°
    determinant négatif => sinus négatif => angle entre 0 et -180°

    Dans notre cas, le determinant est négatif donc l'angle est AOB ~= - 42°
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Merci à tous sa marche nikel

Discussions similaires

  1. Calculer l'angle entre deux lignes
    Par pc152 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 08/08/2013, 15h13
  2. calculer l'angle entre deux segments
    Par Riham Darine dans le forum Mathématiques
    Réponses: 5
    Dernier message: 22/04/2011, 00h39
  3. [GLSL] Calculer un angle entre deux vecteurs.
    Par who_knows dans le forum OpenGL
    Réponses: 5
    Dernier message: 05/05/2010, 17h40
  4. Calcul d'angle entre deux vecteurs
    Par feynman dans le forum Fortran
    Réponses: 8
    Dernier message: 22/09/2007, 13h59
  5. [Requete] Calcul Somme entre deux temps pour chaque jour
    Par nico33307 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/03/2006, 00h58

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