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

Développement 2D, 3D et Jeux Discussion :

Projection coordonnées 3D en 2D


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    janvier 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : janvier 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Projection coordonnées 3D en 2D
    Bonjour,

    Je me permets de poser on problème ici car je n'arrive pas à trouver la solution et je pense qu'un peu d'aide ne serait pas de trop

    Le problème est le suivant:

    J'ai une vue de mon point en 3D (axes x,y,z) et je dois la transformer en vue 2D (axes x et y). Et je bloque. J'ai vu qu'il existait des formules pour passer de 3 axes à 2 axes:

    X' = (x0*cos(a)-y0*sin(a))*cos(b) - (x0*sin(a)+yo*cos(a))*sin(b)
    Y' = x0*sin(a) + y0*cos(a)
    Z' = (x0*cos(a)-y0*sin(a))*sin(b) + z0*cos(b)

    mais le soucis c'est que je ne connais ni l'angle a ni l'angle b..

    De plus je ne sais pas si je dois juste faire une transformation de coordonnées en géographiques vers des coordonnées planes OU alors passage de coordonnées sphériques en 3D vers cartésiennes 2D ?

    Je vous remercie d'avance.
    Bien à vous

  2. #2
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 754
    Points : 8 471
    Points
    8 471
    Par défaut
    Ce n'est pas du tout comme ça qu'on fait

    La formule est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vue2D = matrice*vecteur
    w = 1.0f/vue2D.w
    vue2D.xyz *= w
    j'ai mis mon code sur Github le voici (c'est du C ):
    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
    24
    Vector3 LMP3D_TransformPerspectiveFPU(float* matrix,Vector3 vec)
    {
    	register float x,y,z,w;
     
    	x = vec.x;
    	y = vec.y;
    	z = vec.z;
     
    	vec.x = (matrix[0+0]*x) + (matrix[4+0]*y) + (matrix[8+0]*z) + (matrix[12+0]);
    	vec.y = (matrix[0+1]*x) + (matrix[4+1]*y) + (matrix[8+1]*z) + (matrix[12+1]);
    	vec.z = (matrix[0+2]*x) + (matrix[4+2]*y) + (matrix[8+2]*z) + (matrix[12+2]);
    	w     = (matrix[0+3]*x) + (matrix[4+3]*y) + (matrix[8+3]*z) + (matrix[12+3]);
     
    	if(w != 1.0f)
    	{
    		w = 1.0f/w;
     
    		vec.x *= w;
    		vec.y *= w;
    		vec.z *= w;
    	}
     
    	return vec;
    }
    Apres il faut avoir la bonne matrice , tu as plein de tuto OpenGL qui explique les matrices MVP

  3. #3
    Expert éminent sénior

    Profil pro
    Développeur informatique
    Inscrit en
    novembre 2006
    Messages
    7 013
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2006
    Messages : 7 013
    Points : 15 866
    Points
    15 866
    Par défaut
    salut en fait je pense que c'est simple pour connaître les angles a et b c'est l'angle que fait le vecteur de la caméra avec le plan de projection.
    Par vecteur de la caméra j'entends les coordonnées d'origine (bref le foyer) et les coordonnées de la cible vers laquelle pointe la caméra.
    Autrement avec des API graphiques comme Direct3d et Open Gl il doit y avoir des fonctions toutes faites pour ça.
    Citation Envoyé par Kannagi Voir le message
    La formule est :
    sauf erreur de ma part pour moi il s'agit du code à "plat" c.a.d. sans transformation en rotation.
    Or dans une scène 3d la caméra est orientée selon un certain angle
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  4. #4
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    janvier 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : janvier 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord merci à vous deux pour vos réponses.

    En fait j'ai mes coordonnées dans le plan NED (North Down East) et je cherche représenter ces coordonnées dans le plan NE. C'est pur ça que je pensais devoir utiliser le passage de coordonnées sphériques à carthésiennes 2D
    Ce que tu me proposes Kannagi me semble plus complexe que ce dont j'ai besoin. Ou alors j'ai mal compris mon besoin ?

    Mat.M, Pour le calcul des angles je ne comprends toujours pas comment faire ..

  5. #5
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 754
    Points : 8 471
    Points
    8 471
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    sauf erreur de ma part pour moi il s'agit du code à "plat" c.a.d. sans transformation en rotation.
    Or dans une scène 3d la caméra est orientée selon un certain angle
    Pour cela que qu'il faut une Matrice MVP , qui fera a rotation /translation, projection etc etc
    Je peut mettre le code en entier si tu veux ^^
    (Avec Matrice de rotation etc etc)

    Ce que tu me proposes Kannagi me semble plus complexe que ce dont j'ai besoin. Ou alors j'ai mal compris mon besoin ?
    Forcément vu que c'est un code pour faire de la 3D coté CPU
    (cela sert néanmoins pour le Viewing frustum culling )
    En gros si tu veux savoir ce que tu regarde sur OpenGL,Vulkan,DirectX ,autre

  6. #6
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    janvier 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : janvier 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je n'arrive pas à mettre l'image du coup je vous mets le site. C'est la session: Coordonnées planes. L'image sur fond vert représente assez bien ce que je cherche à faire. Sauf que dans mon cas, dans mon repère de départ je suis déjà en NED

    https://geodesie.ign.fr/index.php?page=srt

  7. #7
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    janvier 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : janvier 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Personne d'autre ?

  8. #8
    Expert éminent sénior

    Profil pro
    Développeur informatique
    Inscrit en
    novembre 2006
    Messages
    7 013
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2006
    Messages : 7 013
    Points : 15 866
    Points
    15 866
    Par défaut
    Citation Envoyé par ayou58 Voir le message
    Personne d'autre ?
    bonjour quel est la finalité du projet en premier lieu ?
    S'agit-il de transformer des mesures de points en 3d sur le terrain en 2d ?
    Il faudrait procéder avec méthode et bien poser le problème avant
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  9. #9
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    janvier 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : janvier 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai sans doute mal exprimé mon besoin.

    La finalité est d'avoir les coordonnées de mon point qui dépend de 3 axes dans un plan 2D

    Exemple: nous sommes dans le repere XYZ et j'ai un point qui dépend des 3 composantes, je cherche à exprimer mon point dans le repere XY seulement.

    J'ai réussi à faire mes projections dans le repere YZ. Mais pas dans le plan XY ..

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    24 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 24 740
    Points : 183 592
    Points
    183 592
    Billets dans le blog
    58
    Par défaut
    Bonjour,

    J'ai envie de dire : simplement ignoré la composante Z.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Coordonnées du clic: problème de projection
    Par cmail dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 22/10/2012, 12h31
  2. Xna project/unproject, coordonnes manquante
    Par saturn1 dans le forum Mathématiques
    Réponses: 0
    Dernier message: 04/11/2011, 16h34
  3. Coordonnées en projection : RGF93CC48
    Par mga_geo dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 02/10/2010, 16h19
  4. Réponses: 10
    Dernier message: 21/06/2010, 02h15

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