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 :

Application projective - Rendre en 2D une vue 3D


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Application projective - Rendre en 2D une vue 3D
    Bonjour à tous,

    Je me permets de vous solliciter pour un petit projet personnel. Dans celui-ci je suis amené à retranscrire une "vue 3D" sur un plan 2D. Vu qu'une image vaut 1000 mots, voici mon objectif:

    J'ai un terrain de football, ou tennis, en même de pétanque, peu importe en vision "camera". J'entends par là que nous avons la notion de perspective.

    Nom : terrainVue3D.png
Affichages : 229
Taille : 13,6 Ko

    Mon but du jeu est de retranscrire n'importe quel point dans le premier plan dans ce second plan que j'ai qualifié de 2D:

    Nom : terrain2D.png
Affichages : 215
Taille : 4,9 Ko

    En fait je veux passer du mode perspective à une vue aérienne.
    J'ai bien réfléchi sur les différentes méthodes pour arriver à un résultat satisfaisait mais j'ai l'impression que mes notions mathématiques sont trop faibles concernant les projections.

    Pourriez-vous m'aiguiller ?
    Pour tout vous avouer, j'étais parti sur la création automatique de plusieurs points sur les 2 plans et derrière faire un petit réseau neuronal. Cependant je suis bloqué car la moitié des points 3 5 dans le plan 1 ne correspond pas à la moitié des points 3 et 5 du plan 2. En fait, plus on évolue "en profondeur" dans le plan 1 plus la distance est grande et c'est ceci que je n'arrive pas à prendre en compte.

    Pour info je fais ce projet sur python

    Code PYTHON : 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
     
    import numpy as np
    import matplotlib.pyplot as plt
     
    ## On dimenssione le terrain vu 3D
    plt.axis([0, 1000, 0,500])
    x1=[200,50,400,750,600,900]
    y1=[0,300,395,190,450,310]
    ## On ajoute les délimitations de terrain
    plt.plot([200,50],[0,300],color='green')
    plt.plot([50,600],[300,450],color='green')
    plt.plot([600,900],[450,310],color='green')
    plt.plot([900,500],[310,0],color='green')
    plt.plot([400,750],[395,190],color='blue')
     
    ## On dessine 6 points représentatifs du terrain
     
    plt.plot([200,50,400,750,600,900], [0,300,395,190,450,310], 'ro',color='black')
     
     
    for i in range(6):
        plt.text(x1[i]+10,y1[i]+10,i+1)
     
    ## Le résultat obtenu veut être mis en vision 2D au dessus et non sur une vision 3D
    ## Pour cela on veut obtenir le résultat suivant:
     
    plt.axis([0, 1000, 0,500])
    x2=[100,100,500,500,900,900]
    y2=[140,400,400,100,400,100]
     
     
    ## On ajoute les délimitations de terrain
    plt.plot([100,100],[100,400],color='green')
    plt.plot([100,900],[400,400],color='green')
    plt.plot([900,900],[400,100],color='green')
    plt.plot([900,100],[100,100],color='green')
    plt.plot([500,500],[100,400],color='blue')
     
    plt.plot(x2, y2, 'ro',color='black')
     
     
    for i in range(6):
        plt.text(x2[i]+10,y2[i]+10,i+1)

    Merci à vous

  2. #2
    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 Application projective - Rendre en 2D une vue 3D
    Bonjour,

    La perspective donnée paraît résulter, dans le cas le plus simple, d'une projection conique; projection de centre (K) du point (M) situé sur le terrain (rectangle horizontal OCDE) sur le plan vertical (rectangle OABC), au point (H).
    La caméra se situe à l'arrière, précisément au centre (K), point de coordonnées (xK, yK < 0 , zK); elle se caractérise par une profondeur (yK) négative.

    Tout point (M) du terrain horizontal présente ici une altitude nulle - coordonnées: (x, y, 0)
    tandis que pour sa projection (H) sur le plan vertical (xOz), la profondeur est nulle - coordonnées (xH, 0, zH).

    Nom : Repère Camera.png
Affichages : 172
Taille : 10,5 Ko

    L'alignement des trois points (K, M, H) se traduit par l'existence d'un réel (λ) vérifiant la relation vectorielle:
    KH = λ.KM
    soit encore pour les coordonnées:
    (xH - xK) = λ*(x - xK) ,

    (0 - yK) = λ*(y - yK) ,

    (zH - zK) = λ*(0 - zK) .

    Le coefficient (λ) est donné par la troisième relation: λ = 1 - zH/zK ;
    (x) et (y) se calculent par les deux autres.

    La présente résolution suppose la caméra constamment orientée selon l'axe (y'y); un autre orientation supposerait l'intervention d'une matrice de rotation, et des calculs plus compliqués - et cela semble bien être le cas. Il faut donc disposer de deux données supplémentaires, deux angles définissant l'orientation spatiale de la caméra.

    Si ton logiciel gère les objets 3D, ne comporte-t-il pas des outils permettant de remonter aux coordonnées (x, y) cherchées ? La seconde vue que tu recherches est une vue "aérienne", prise à l'aplomb du terrain - donc à l'opposé de la direction de (z'z) - et depuis une position très éloignée.


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

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Bonjour wiwaxia,

    Merci pour votre réponse que je vais m'empresser d'éplucher, je reviens vers vous au plus vite.

    Ineedi²

Discussions similaires

  1. Application Projective - Rendre en 2D une vue 3D - Python
    Par Ineedi2 dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 31/12/2018, 12h40
  2. Appeler une vue avec Microsoft Data Access Application Block
    Par LiveFromBx dans le forum Développement
    Réponses: 2
    Dernier message: 12/08/2010, 11h23
  3. Comment rendre dynamique les noms des colonnes d'une vue
    Par patic dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/02/2009, 10h41
  4. Comment rendre 3 champs d'une requête en ID d'une vue?
    Par littlebear dans le forum Débuter
    Réponses: 54
    Dernier message: 03/01/2009, 13h02
  5. Réponses: 7
    Dernier message: 12/07/2004, 22h30

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