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 :

obtenir des points d'inflexions avec précision


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut obtenir des points d'inflexions avec précision
    Bonsoir,
    J'ai une courbe admettant des points d'inflexions (changements de concavité/convexité). J'ai comme données d'entrée une matrice représentant les valeurs de X et Y.

    Je veux obtenir ces points d'inflexions avec précision.
    Note: Je ne possède pas de fonction pour obtenir la courbe, je possède des coordonnées des points de la courbe dans une matrice.

    Je vous transmets 2 courbes en fichier joint, les points que je cherche à trouver sont en rouge.

    Merci d'avance
    Images attachées Images attachées   

  2. #2
    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 orland Voir le message
    Je vous transmets 2 courbes en fichier joint, les points que je cherche à trouver sont en rouge.
    hum... Ca ne m'a pas l'air d'être toujours des points d'inflexions. Ni même des maximum de courbures. Comment as-tu fais pour savoir où mettre les croix ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonsoir,
    pour la detection des points :
    la courbe demeure constante puis elle change de concavité. je cherche à determiner ce point ou elle change de concavité.
    Ici je commence l’étude de la courbe de droite à gauche, donc la courbe semble comme une droite horizontale au début puis elle change de concavité.
    Enfin je cherche determiner le dernier point de la courbe ; le plus haut point de la courbe(ici ça n'a rien avoir avec les points d'inflexions).

    Merci d'avance de m'aidez, ça fait des jours que je cherche sans avoir avancer

    Cordialement B.H

  4. #4
    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
    Sur l'image de gauche, je ne vois vraiment pas pourquoi les croix représentent les seules "inflexions" de la courbe.

    A la rigueur, celle en index=400 pourrait être un max de courbure. Mais il y en a plein d'autre.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    et oui vs avez raison y'en a encore d'autres points d'inflexions. Mais j'ai besoin de detecter que les pentes ayant la forme présenter en fichier joint.
    ma question toujours est commet detecter ce genre de point sachant que j'ai pa une fonction qui me permet d'obtenir la courbe.
    Images attachées Images attachées  

  6. #6
    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 orland Voir le message
    et oui vs avez raison y'en a encore d'autres points d'inflexions. Mais j'ai besoin de detecter que les pentes ayant la forme présenter en fichier joint.
    ma question toujours est commet detecter ce genre de point sachant que j'ai pa une fonction qui me permet d'obtenir la courbe.
    Si tu connais à priori la "forme" de ta courbe, tu peux la modéliser par une équation (paramétrique ou cartésienne) dans laquelle il y a des paramètres/coefficients inconnus.

    Avec les points de mesure dont tu disposes, tu peux utiliser des méthodes de régression pour évaluer ces paramètres. Tu obtiens alors l'équation de ta courbe. Tu peux alors faire l'analyse fonctionnelle et trouver les infos qui t'intéressent.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par orland Voir le message
    et oui vs avez raison y'en a encore d'autres points d'inflexions. Mais j'ai besoin de detecter que les pentes ayant la forme présenter en fichier joint.
    ma question toujours est commet detecter ce genre de point sachant que j'ai pa une fonction qui me permet d'obtenir la courbe.
    En dehors de la réponse de pseudocode, je me demande si en fait tu ne cherches pas un changement de courbure, mais un point à parti duquel la pente passe en dessous d'un certain seuil (ou de certains seuils). Auquel cas le calcul est bcp plus asé..

    Est-ce le cas ??
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    oui je connais à priori que ma courbe va avoir une certaine "forme", mais je connais pas le nombre de point d'inflexions.
    Je vous explique mon cas:
    j'étudie la répartition des objets dans l'espace de 2-dimensions. mon data-frame contient un très grand nombre d'objets (>2000 objets). La repartition des objets a une distribution uniforme, le cas précis que j'etudie est lorsque ces objets sont reparties dans l'espace sur 3 "régions" ou "classes" où chaque classe a une densité differente. Donc les pentes ou les points d'inflexions dans ma courbe represente le "passage" d'une densites des points à une autre. Mon but est de détecter ces point la, pour me compendre veuillez voir le fichier joint "tt1" où il y'a un point qui represente le passage d'une densité à une autre et un autre point celui qui a comme ordonnée=max(y).
    j'ai les coordonnées de ces objets.
    j'espere que c'est clair ma problématique.
    En dehors de la réponse de pseudocode, je me demande si en fait tu ne cherches pas un changement de courbure, mais un point à parti duquel la pente passe en dessous d'un certain seuil (ou de certains seuils). Auquel cas le calcul est bcp plus asé..

    Est-ce le cas ??
    oui je crois que ceci que je suis en train de le chercher

  9. #9
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Désolé, ton exposé n'est toujours pas clair ...

    Citation Envoyé par orland Voir le message
    La repartition des objets a une distribution uniforme, le cas précis que j'etudie est lorsque ces objets sont reparties dans l'espace sur 3 "régions" ou "classes" où chaque classe a une densité differente.
    y'a comme une contradiction là

    Fais un effort pour expliquer ton problème parce que on ne comprend pas vraiment..

    Un petit exemple serait le bienvenu..


    Citation Envoyé par orland Voir le message
    oui je crois que ceci que je suis en train de le chercher
    C'est pas encore très clair...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonsoir,
    Ok j'explique encore mon problème dans un petit exepmle:
    j'ai un data frame qui contient un très grand nombre d'objets. ces objets sont réparties sur 2 classes. la densité des objets dans ces classes sont différentes; une ayant une très grande densité et l'autre une densité plus petite comme c'est illustré dans le fichier joint "tt3". bien sur ces objets sont répartis dans l'espace de 2-dimensions.
    Mon algorithme consiste a:
    *calculer les distances entre chaque objet et les (n-1) objets restants et enregistrer ceci dans une matrice carrée (n lignes, n colonnes avec n:nbr d'objets).
    *faire le tri croissant des ces distances pour chaque ligne de la matrice et prendre la colonne num 5 qui correspond à la 4eme plus petite distance (5eme colonne puisque la matrice est symétrique). Puis je fait le plot et j'obtient la courbe obtenu dans le fichier "tt1" .
    le premier point (marqué en rouge sur la courbe) présente le passage de la 1er calsse ayant la plus grande densité à la 2eme classes ayant la densité plus petite.
    je cherche à détecter ce point là, mais je sais pas comment
    j'espère que c'est clair ma problématique.
    veuillez me poser des questions si c'est pas encore clair .
    Images attachées Images attachées   

  11. #11
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par orland Voir le message
    le premier point (marqué en rouge sur la courbe) présente le passage de la 1er calsse ayant la plus grande densité à la 2eme classes ayant la densité plus petite.
    Le preimier ? pas le deuxième ??


    En fait, j'ai l'impression, en regardant l'ensemble de tes graphes, que tu recherches les points de rupture de types de pente : d'une pente à tendance verticale vrs une pente à tendance horizontale.. Est-ce ça ?


    Si c'est le cas, et en regardant tes schémas, une division serait sans doute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    initialiser seuil à 0
    faire valeur = moyenne glissante de pente sur 3 points
    si valeur < -0.5
       si seuil > -0.5
           pt inflexion
       fin si
       seuil = valeur
    sinon
       si seuil < -0.5
           pt d'inflexion
       fin si
       seuil = valeur
    fin si
    L'initialisation du seuil à 0 te donne ton vrai premier pt tel qu'indiqué sur ton schéma. Si tu ne le veux pas, il suffit d'initialiser à -1.
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    Le preimier ? pas le deuxième ??
    le 1er point c'est celui ayant comme coordonnées ~(170,0.05), c'est celui au milieu de la courbe et non pas le plus haut.

    si non puor ta question
    En fait, j'ai l'impression, en regardant l'ensemble de tes graphes, que tu recherches les points de rupture de types de pente : d'une pente à tendance verticale vrs une pente à tendance horizontale.. Est-ce ça ?
    Oui c'est ça ce sue je cherche

    si non veuillez m'expliquer encore le code que vous avez écrit, surtout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    faire valeur = moyenne glissante de pente sur 3 points
    et pourquoi le test sur la valeur "0.5", qu'est ce que désigne cette valeur !! si vous voulez dire 0.05 , ben je connais pas d'avance moi ou se situe le(s) point(s) d'inflexion !!
    veuillez svp m'éclairer encore votre approche
    Merci d'avance

  13. #13
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par orland Voir le message
    et pourquoi le test sur la valeur "0.5", qu'est ce que désigne cette valeur !!
    Ok, j'ai été un peu vite et je me suis un peu embrouillé avec tes valeurs sur ton graphe.. Désolé.

    Ce que je voulais mettre c'était "-1"..

    Tangente(-45 degrés) = tan(- PI/4) = -1, donc :

    • si -1 <= tangente <= 0 alors tendance horizontale
    • si tangente < -1 alors tendance verticale

    Comme en info il est facile de calculer l'angle entre 2 points via les fonctions arctangentes (en particulier atan2), on utilisera les angles.

    D'autre part, pour diminuer l'influence du bruit, outre la moyenne glissante, on peut ajouter un seuil de confiance, qui est pluss facile à maîtriser avec des angles.

    Par exemple, si angle >= -40, horizontal,si angle <= -50 vertical.

    Enfin, vu que comme en info les tableaux commencent à l'indice zéro (sauf en Fortran), et que les angles sont en radians, ton algo sera du style :


    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
    21
    22
    23
     
    delta = 5 * PI / 180         /* Pour 5 degrés de sûreté */
    seuil_haut = -PI/4 + delta   /* Limite de tendance horizontale */ 
    seuil_bas = -PI/4 - delta    /* Limite de tendance verticale */
    seuil = seuil_haut           /* Initialisation à l'horizontale */
     
    pour i = 1 jusqu'à i < (N-1)
     
       angle = ( angle(i, i-1) + angle(i+1,i) ) / 2    /* moyenne glissante */ 
     
       si angle <= seuil_bas            /* On est plutôt vertical */
           si seuil = seuil_haut
                pt inflexion
                seuil = seuil_bas
           fin si
       sinon
       si angle >= seuil_haut          /* On est plutôt horizontal */
           si seuil = seuil_bas
                pt d'inflexion
                seuil = seuil_haut
           fin si
       fin si
    fin pour
    Tu peux bien entendu ajuster la marge de sûreté (peut-être 10 degrés au lieu de 5), mais ça devrait donner les résultats que tu cherchais...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  14. #14
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    Ok, merci. Je vais tester ce code
    Mais si vous me permettez de vous poser encore une question: je travail avec le langage R. Alors quel est le package sur R qui me permet de calculer l'angle entre 2 points ??

    encore une fois merci à vous pour tous vos réponses, j’espère qu’après le test de ce code je trouve le résultat que je cherche.

  15. #15
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par orland Voir le message
    Ok, merci. Je vais tester ce code
    C'est pas un code, c'est un schéma d'algo..

    Citation Envoyé par orland Voir le message
    Mais si vous me permettez de vous poser encore une question: je travail avec le langage R. Alors quel est le package sur R qui me permet de calculer l'angle entre 2 points ??
    je ne connais pas R, mais un regard dans le lexique devrait suffire... Ou

    Si je fouille dans The R base package : Documentation for package ‘base’ version 2.15.2, sous Trigonometric functions, on a bien la fonction atan2 . Comme y tu lui passes (yB-yA), comme x (xB-xA)...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  16. #16
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    Je reviens toujours sur les points d'inflexion.
    Alors dans mon dernier message je me suis trompé et dire que c'est du code or ce n'est qu'un schéma d'algo , désolé
    sinon je reviens sur quelque point dans votre explication:
    vous avez parler des angles, arctangentes et atan2 !! or ds votre schéma d'algo y'a que la fonction angle !!!
    donc veuillez svp m'expliquer pourquoi vs avez parler de ces 2 fonctions arctangente et atan2 sans que vous les utiliser ?

    Quand à moi je possède dans mon package des ces trois fonctions.
    donc j'ai réussi à coder la première partie de ce schéma d'algo et j'a obtenu un tableau des angles
    mais je suis bloqué dans la partie suivanteoù toujours elle me rend un vecteur vide"NULL")
    si angle <= seuil_bas /* On est plutôt vertical */
    si seuil = seuil_haut
    pt inflexion
    seuil = seuil_bas
    fin si
    sinon
    si angle >= seuil_haut /* On est plutôt horizontal */
    si seuil = seuil_bas
    pt d'inflexion
    seuil = seuil_haut
    fin si
    fin si
    veuillez me pardonner si j'ai pas bien compris ceci mais comme je vous ais dit: je possède dans mon package de ces trois fonctions angle, arctangente et atan2.
    Aussi ci c'est le cas et je dois utiliser que la fonction angle dans mon code, veuillez m'expliquer un peu cette deuxième partie. Elle me rend toujours un vecteur NULL.

    Concernant la premiere partie dont j'ai codé, voici un échantillon des résultats
    que j'obtient en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    angle = ( angle(i, i-1) + angle(i+1,i) ) / 2
    je stocke tous ces angles dans vecteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      [1] 3.929276 5.497741 3.925795 7.065522 7.067826 5.497905 3.927240 5.497781
      [9] 3.926915 5.497628 3.927009 5.497796 3.927011 7.068561 7.068466 5.497557
     [17] 2.356247 3.927081 5.497851 3.927079 5.497697 3.926977 7.067894 5.496508
     [25] 3.926993 5.497721 2.356219 2.356196 3.926969 5.497745 2.356210 3.926997
     [33] 5.497790 3.926994 7.068566 7.068557 5.497769 3.926940 7.068376 7.068341
     [41] 7.068516 7.068528 5.497690 2.356202 3.926990 7.068540 5.497721 3.926966
     [49] 7.068511 5.497783 3.926993 5.497785 3.926972 7.068541 5.497777 3.926989
     [57] 7.068571 5.497819 2.356269 2.356199 3.926993 7.068544 5.497759 2.356239
     [65] 3.926948 5.497702 3.926971 7.068529 5.497758 2.356204 3.927002 5.497782
     [73] 3.927005 5.497810 2.356317 3.927053 7.068541 7.067581 5.495789 2.356209
     [81] 3.927018 7.068570 5.497783 2.356234 2.356197 3.926995 5.497822 3.927055
     [89] 5.497815 3.927041 5.497734 3.926986 5.497778 3.926961 5.497728 3.926980
     [97] 5.497763 3.926989 5.497779 3.926964 5.497741 3.927004 7.068517 5.497716
    et lorsque j'utilise ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    angle = ( atan2(i, i-1) + atan2(i+1,i) ) / 2
    je stocke aussi les résultats dans un vecteur dont je vous montre un échantillon
    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
     [1] 1.0861275 1.1870393 1.1662546 1.0509983 1.1592407 1.2996982 1.1481703
       [8] 1.1350540 1.1662642 0.9189576 1.1661427 0.9231590 1.1559464 1.3830328
      [15] 1.1764127 1.0982413 1.1642893 1.4955434 1.1525557 0.9773623 1.1751766
      [22] 1.2986177 1.1749553 1.0018801 1.1724437 1.4391354 1.1758183 0.6563518
      [29] 1.1746728 0.3474100 1.1709308 0.9962978 1.1758976 1.9448388 1.1760204
      [36] 1.0340820 1.1729605 0.9247127 1.1655750 1.2949155 1.1713335 1.0242407
      [43] 1.1773778 1.3365095 1.1727735 1.0870901 1.1656800 1.3399351 1.1631236
      [50] 1.3255915 1.1614929 0.8367130 1.1764813 1.4727675 1.1779945 1.3927943
      [57] 1.1703661 0.9661680 1.1626525 0.7662359 1.1764523 2.1799955 1.1762079
      [64] 1.4085499 1.1770613 0.8122627 1.1762142 1.6398084 1.1764301 0.5861467
      [71] 1.1765259 0.3137165 1.1775562 0.8645072 1.1758349 1.9187007 1.1704451
      [78] 1.0749685 1.1705362 1.0821037 1.1754082 0.7607101 1.1764380 0.2766385
      [85] 1.1763311 1.1195985 1.1769466 2.0684964 1.1776051 1.4777608 1.1744618
      [92] 1.0621598 1.1702781 1.1121991 1.1692410 1.2392988 1.1629206 0.4474696
      [99] 1.1767896 0.8910010 1.1766828 1.6890174 1.1776029 0.8750174 1.1768248
    ici la fonction atan2
    The arc-tangent of two arguments atan2(y, x) returns the angle between the x-axis and the vector from the origin to (x, y), i.e., for positive arguments atan2(y, x) == atan(y/x)
    j'ai voulu vous informer de ces détails pour me bien aider.
    ça fait des jours que j'essaye sans arriver toujours et le temps me presse
    veuillez me poser vos questions si c'est pas clair.
    Merci d'avance
    Cordialement B.H

  17. #17
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    rhaaaaa il faut lire la doc et comprendre un minimum ce qu'on dit...

    atan2 s'utilise come : si on veut calculer l'angle "absolu" formé par 2 pts A et B :

    angle = atan2 ( (A.y - B.y), (A.x - B.x) )


    Donc tu as un angle avec le précédent :

    A = Pts[i]
    B = Pts[i-1]

    et avec le suivant

    A = Pts[i+1]
    B = Pts[i]
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  18. #18
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    merci d'avoir répondu En fait j'ai bien lu la documentation et je sais bien utiliser cette fonction de atan2.
    Mais c'était pas ça vraiment ma question. Je reformule encore ma question:
    Dans votre message vous avez parlez de "angle", "arctangente" et "atan2".
    En fait, je sais bien que vs faites la différence entre ces trois fonctions et l'utilisation de chacune dans un contexte bien précis.
    Mais le point que je comprend pas c'est dans le message où vs avez mis le schéma d'algorithme vous m'avez dit :
    angle = ( angle(i, i-1) + angle(i+1,i) ) / 2
    pack ici la part de confusion c'est que vous dites ma question ici vous voulez dire à travers "angle(i,i-1)" utilisez la fonction angle pour calculer l'angle ente i et i-1 ou vs dites ça d'une façon générale et de calculer l'angle entre ces deux points avec la fonction atan2 ??
    et dans votre dernier vous avez dit :
    angle = atan2 ( (A.y - B.y), (A.x - B.x) )
    est ce que vous voulez dire concernant le premier code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    angle= atan2((A.y(i)-B.y(i-1)),(A.x(i)-B.x(i-1)))+atan2((A.y(i+1)-B.(y(i))),(A.x(i+1),B.x(i)))/2
    désolé si je pose beaucoup de questions :/ en fait c'est la première fois où je me suis tombé dans ce genre de problèmes où j'avais pas beaucoup des connaissances.
    donc pour résumer si j'avais bien compris que je dois utiliser la fonction atan2 et que vous avez écrit "angle" d'une façon générale et vs désignez pas l'utilisation de la fonction angle. Est-ce que c'est le cas ??

    Merci d'avance

  19. #19
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par orland Voir le message
    donc pour résumer si j'avais bien compris que je dois utiliser la fonction atan2 et que vous avez écrit "angle" d'une façon générale et vs désignez pas l'utilisation de la fonction angle. Est-ce que c'est le cas ??
    oui c'est le cas...

    L'arc-tangente donnant un angle, la variable de sortie je l'ai appelée d'une manière générique..

    et atan2 est très bien car elle calcule entre -PI et + PI (alors que atan calcule entre 0 et PI).

    Comme j'ai dit je ne connais pas R, et donc je ne sait pas si une fonction "angle" existe, mais en général elle n'existe pas dans les langages informatiques, et par contre arctangente existe (souvent sous ces 2 formes atan et atan2).
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  20. #20
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    ok
    Comme j'ai dit je ne connais pas R, et donc je ne sait pas si une fonction "angle" existe, mais en général elle n'existe pas dans les langages informatiques, et par contre arctangente existe (souvent sous ces 2 formes atan et atan2).
    Dans R il existe la fonction angle. vous pouvez voir la documentation sur cette fonction http://127.0.0.1:20427/library/dagR/html/angle.html

    juste une autre question si vs voulez, la fonction atan2 me rend des angles en radian, donc je continue à les utiliser dans le reste du schéma d'algo en radian ou je dois les transformer en degré ?? (sachant qu'il y a une fonction sous R me permet de faire cette conversion de radian en degré)
    Merci infiniment pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Détection des points d'intérêts avec OpenCV
    Par daoudasylla dans le forum Bibliothèques, systèmes et outils
    Réponses: 2
    Dernier message: 17/04/2015, 20h17
  2. Valeurs des points hors cadre avec "text"
    Par julioclay dans le forum R
    Réponses: 2
    Dernier message: 19/02/2013, 15h35
  3. Réponses: 3
    Dernier message: 24/04/2012, 14h25
  4. Obtenir des balises html+texte avec xpath ?
    Par apt dans le forum Langage
    Réponses: 1
    Dernier message: 23/07/2011, 12h07
  5. Perte des points d'arrêt avec borland
    Par jijiz dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/10/2009, 12h31

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