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 :

Calculer le point d’intersection de deux segments dans un espace 3D


Sujet :

Algorithmes et structures de données

  1. #21
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Les segments qui relient l'oeil (qui a bougé ) à l'objet ( qui n'a pas bougé ) se coupent forcément à l'objet.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  2. #22
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Citation Envoyé par Pecose Voir le message
    Oui parce que tu as modifier la distance entre la photo et la prise de vue.
    Cette distance doit être prise arbitrairement puisque qu'elle n'existe pas dans le monde réel.
    Mais elle doit être prise une fois pour toute et suffisamment grande simuler que la photo est très loin de la prise de vue.
    Sinon effectivement on se retrouvent avec des aberrations.
    Ceci est doublement faux. Un zoom aboutira au même résultat que de modifier cette distance. Et même si on prend pour contrainte de garder le zoom identique, donc une distance identique, alors il y a quand même une infinité de cas possibles.

    Voici le démenti en image :

    Nom : distance.objet.photo3.jpg
Affichages : 267
Taille : 22,9 KoNom : distance.objet.photo4.jpg
Affichages : 265
Taille : 23,8 Ko

    Les points n'ont pas bougé, les photos sont identiques, la distance est constante et les objets sont différents.

    Enfin, j'ajoute qu'assimiler l'objet à un segment est douteux. On ne peut pas travailler sur les points dans l'objet car ils pourraient bien se trouver derrière le segment et non dessus.

    [edit] posts croisés [/edit]
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #23
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    Les segments qui relient l'oeil (qui a bougé ) à l'objet ( qui n'a pas bougé ) se coupent forcément à l'objet.
    En fait non, dans ce cas pas forcement, parce que la position de l'objet sur l'image n'est pas super précise.
    Elle est calculer par un réseau de neurone.
    Du coup, d'une image sur l'autre il ce peut qu'il y ai un léger décalage.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  4. #24
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Ceci est doublement faux.
    Sur mon smartphone, j'ai un accéléromètre et un gyroscope, ce qui fait que j'ai la position mais aussi l'orientation.
    Dans ton exemple tu modifie l'orientation des points de vue, du coup oui, on tombe sur un résultat différent à chaque fois.
    Mais moi je n'aurai pas une orientation mole comme dans ton exemple.
    Elle sera déterminer par les données de mon gyroscope.

    Et pour le zoom tu as tout à fait raisons, je n'ai pas su trouver les mots pour l'expliquer.
    Du coup je reprend tes mots:
    Il faut garder un distance, un zoom et un orientation fixe.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  5. #25
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    Citation Envoyé par Pecose Voir le message
    Quelqu'un peut t'il m'expliquer y = ax+b?
    c'est l’équation d'une droite dans un systeme 2D
    une fonction que tu dois connaitre a partir du collège si mes souvenir sont correcte

    le a correspondant au coefficient directeur de la droite et le b une constante

    exemple => Pour l’équation :
    Y = 2x+ 3

    si X = 1 | y = 2*1+3 = 5
    si X = 3 | y = 2*3+3 = 9
    si X = 7 | y = 2*7+3 = 17 ...

    on peut donc dire que ta droite passe
    Par les points (1,5) et (7,17)
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #26
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Citation Envoyé par anapurna Voir le message
    c'est l’équation d'une droite dans un systeme 2D
    une fonction que tu dois connaitre a partir du collège si mes souvenir sont correcte
    J'me suis arrêter en troisième mais on peut pas vraiment dire que j'ai fait le collège...
    J'ai plutôt fait une année de 64 et deux de Gamecube.

    Merci pour ta une réponse très claire en tout cas.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  7. #27
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par Pecose Voir le message
    En fait non, dans ce cas pas forcement, parce que la position de l'objet sur l'image n'est pas super précise.
    Elle est calculer par un réseau de neurone.
    Du coup, d'une image sur l'autre il ce peut qu'il y ai un léger décalage.
    L'incertitude sur la position de l'image de l'objet sur le capteur entrainera une incertitude sur la distance.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  8. #28
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    L'incertitude sur la position de l'image de l'objet sur le capteur entrainera une incertitude sur la distance.
    Tout à fait juste, mais c'est pas grave.
    Si je peux obtenir un distance incertaine ça me fait toujours une distance que je pourrai affinée plus tard.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  9. #29
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Calculer le point d’intersection de deux segments dans un espace 3D
    Citation Envoyé par Pecose Voir le message
    ... En fait j'ai déjà réaliser une simulation en 2D qui fonctionne avec uniquement la position, l’orientation du smartphone et la position de l'objet sur les images. Je n'ai besoin de rien d'autre pour trouver la position de l'objet dans l'espace ...
    Tu disposes donc à priori:
    a) des coordonnées (Xi,Yi) des positions (C1, C2) des deux centres optiques ;
    b) des angles définissant les orientations des axes optiques;
    c) des coordonnées d'un point de l'objet.

    On finira bientôt par tout savoir ...
    Et comment cette réalisation a-t-elle été obtenue ? Par un programme fait main, ou à l'aide d'un logiciel ? Et obtiens-tu des résultats satisfaisants ?

    Citation Envoyé par Pecose Voir le message
    ... Mon problème intervient lorsque je passe à la 3D, puisque les segments qui relient l’œil à l'image ne se croisent pas forcement ...
    Il faut d'abord travailler sur les projections verticales des points de l'objet sur un plan horizontal. Le reste viendra facilement.

    Citation Envoyé par Pecose Voir le message
    ... Quelqu'un peut-il m'expliquer y = ax+b ?
    Il s'agit de l'équation cartésienne d'une droite, c'est à dire de la relation intervenant entre les coordonnées (x, y) d'un point quelconque de la droite considérée; les constantes (a, b) caractérisent cette droite.
    PS: voir anapurna.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  10. #30
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    On est revenu au point de départ.
    Il y a 2 vecteurs en 3d pour le coin supérieur gauche et 2 vecteurs en 3d pour le coin inférieur droit. On peut donc prendre la solution que j'évoquais dans le message #6.

    La notion un peu ardue est sûrement le produit vectoriel. Mais Wikipedia, à la page "Produit Vectoriel", au paragraphe "Calcul en composantes", donne la solution.
    Astuce : Si le vecteur directeur est Formule mathématique alors l'équation du plan est ax+by+cz+d=0. Il n'y a plus que "d" à trouver. Mais il suffit de remplacer x y z par les coordonnées d'un point du plan pour trouver l'équation complète du plan.

    Il y a un peu de boulot mais le chemin est tout tracé.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #31
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Balayage
    Il faut créer un troisième segment formé par un point P de la droite AB et un point Q de la droite CD En faisant un balayage jusqu'a trouver PQ de longueur minimum.
    On peut guider le balayage en indiquant que le segment PQ doit être perpendiculaire aux segment AB et CD. Le point chercher est (produit scalaire nul) le milieu de PQmin

  12. #32
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Code C#
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    using System;
     
    namespace Intersection_de_deux_segments_en_3D
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Segments AB et CD
                // Coordonnées de A, B, C, D
                float xA = 0.0f, yA = 0.0f, zA = 0.0f;
                float xB = 10.0f, yB = 2.0f, zB = -1.0f;
                float xC = 8.0f, yC = 0.0f, zC = 1.0f;
                float xD = 5.0f, yD = 2.0f, zD = 5.0f;
     
                // Ecarts de oordonnées entre A et B et entre C et D
                float dxAB = xB - xA, dyAB = yB - yA, dzAB = zB - zA;
                float dxCD = xD - xC, dyCD = yD - yC, dzCD = zD - zC;
                // Ecarts de oordonnées entre A et C et entre B et D
                float dxAC = xC - xA, dyAC = yC - yA, dzAC = zC - zA;
                float dxBD = xD - xB, dyBD = yD - yB, dzBD = zD - zB;
                // Coeficient des équations linéaires en rP et rQ
                float aPP, aPQ, aQP, aQQ, bP, bQ;
                //      aPP * rP + aPQ * rQ = bP
                aPP = dxAB * dxAB + dyAB * dyAB + dzAB * dzAB;
                aPQ = -dxAB * dxCD - dyAB * dyCD - dzAB * dzCD;
                bP = dxAC * dxAB + dyAC * dyAB + dzAC * dzAB;
                //      aQP * rP + aQQ * rQ = bQ
                aQP = dxCD * dxAB + dyCD * dyAB + dzCD * dzAB;
                aQQ = -dxCD * dxCD - dyCD * dyCD - dzCD * dzCD;
                bQ = dxAC * dxCD + dyAC * dyCD + dzAC * dzCD;
     
                // Résolution du système (méthode de Cramer)
                float rP, rQ, detA, detP, detQ;
                detA = aPP * aQQ - aQP * aPQ;
                detP = bP * aQQ - bQ * aPQ;
                detQ = aPP * bQ - aQP * bP;
                rP = detP / detA;
                rQ = detQ / detA;
     
                // Coordonnées de P et Q
                float xP, yP, zP, xQ, yQ, zQ;
                xP = xA + rP * dxAB;
                yP = yA + rP * dyAB;
                zP = zA + rP * dzAB;
                xQ = xC + rQ * dxCD;
                yQ = yC + rQ * dyCD;
                zQ = zC + rQ * dzCD;
                // Coordonnées de M, le point cherché
                float xM, yM, zM;
                xM = (xP + xQ) / 2;
                yM = (yP + yQ) / 2;
                zM = (zP + zQ) / 2;
                // sorties écran
                Console.WriteLine("xM = "+ xM);
                Console.WriteLine("yM = " + yM);
                Console.WriteLine("zM = " + zM);
                Console.Read();

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. calcul de la distance entre deux segments
    Par lisenette dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 29/01/2014, 19h43
  2. comment trouver le point d’intersection de deux droites
    Par Fab_16102010 dans le forum MATLAB
    Réponses: 4
    Dernier message: 08/07/2013, 14h49
  3. calcul de l'angle formé par deux droites dans l'espace
    Par liogo dans le forum Mathématiques
    Réponses: 2
    Dernier message: 30/03/2011, 16h32
  4. Réponses: 3
    Dernier message: 11/10/2010, 10h48
  5. [WD10] Calcul de la difference entre deux sommes dans une requete
    Par Arasen dans le forum WinDev
    Réponses: 2
    Dernier message: 14/08/2009, 09h16

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