Calcul d'un point dans l'espace
Affichage des résultats 1 à 17 sur 17

Calcul d'un point dans l'espace



  1. #1
    CaptainElec

    Calcul d'un point dans l'espace


    ------

    Bonsoir à tous, je suis actuellement sur un projet de logiciel de planétarium et j'ai un problème pour orienter la caméra : J'utilise OpenGL, qui nécessite de connaître les coordonnées de la caméra ainsi que celles de la cible qu'elle regarde, ce qui permet de l'orienter. J'utilise deux angles dont je connais les valeurs, un pour l'orientation de gauche à droite (Comme lorsque l'on secoue la tête) et un autre pour l'orientation de haut en bas (Comme lorsqu'on hoche la tête), je connais également les coordonnées de la caméra sur la planète, et je voudrais calculer les coordonnées de la cible de la caméra à partir de plusieurs paramètres :

    - Les coordonnées de la caméra
    - Les deux angles
    - La latitude et longitude de la caméra sur la planète
    - L'obliquité de la planète

    Petite précision tout de même : On est dans un repère (X, Y, Z) héliocentrique et les planètes sont toutes situées dans le plan (XY) et inclinées dans le sens de l'axe des X (Donc pour toutes les planètes ayant une obliquité comprise entre 0 et 90 le X du Pôle Nord est supérieur ou égal à celui du Pôle Sud).

    En gros la caméra doit regarder vers l'horizon lorsque l'angle vertical (Que nous appellerons angleCam2) est nul et au zenith lorsqu'il est égal à 90°.

    Malgré toutes mes tentatives à coups de sin et cos dans tous les sens je n'arrive à rien, y'aurait-il quelqu'un d'assez calé sur le sujet svp ?

    -----

  2. #2
    Gilgamesh
    Modérateur

    Re : Calcul d'un point dans l'espace

    Pour commencer il est hors de question d'utiliser un système de coordonnées cartésiens, sauf si tu adores te faire mal. Utilise un système de coordonnées sphériques : un rayon et 2 angles. Et seulement à la toute fin, si tu en as besoin, tu peux transformer ça en coordonnées cartésiennes.

    https://fr.wikipedia.org/wiki/Coordo...ph%C3%A9riques
    Dernière modification par Gilgamesh ; 13/01/2018 à 22h33.
    Parcours Etranges

  3. #3
    CaptainElec

    Re : Calcul d'un point dans l'espace

    Merci pour ta réponse, j'ai déjà songé aux coordonnées sphériques mais la partie s'avère plus compliquée car il faut tenir compte des latitude et longitude et les autres paramètres.

    Je dois obligatoirement obtenir des coordonnées cartésiennes au final.

  4. #4
    CaptainElec

    Re : Calcul d'un point dans l'espace

    Voici un schéma pour mieux comprendre :

    Nom : Coordonnées cible.jpg
Affichages : 182
Taille : 40,8 Ko

    Le plan représente l'horizon de la caméra, on connait les coordonnées cartésiennes de la caméra ainsi que ses deux angles d'orientation, ses latitude et longitude sur la planète et l'obliquité de la planète.

  5. A voir en vidéo sur Futura
  6. #5
    ansset
    Animateur Mathématiques

    Re : Calcul d'un point dans l'espace

    pourquoi utiliser OpenGL pour ce calcul assez simple en coord sphérique. Il n'est pas vraiment adapté pour ça.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  7. #6
    CaptainElec

    Re : Calcul d'un point dans l'espace

    J'utilise OpenGL pour le rendu, mais pour orienter la caméra il me faut calculer les coordonnées cartésiennes.

  8. #7
    ansset
    Animateur Mathématiques

    Re : Calcul d'un point dans l'espace

    il faut la position de la caméra sur la sphère sinon on ne peut rien faire avec les angles ( qui sont d'ailleurs mal précisés sur ton schéma)

    ps: ça me fait penser à une vieille discussion ou beaucoup on vanté OpenGL sans en comprendre le principe et les difficultés potentiellement induites.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  9. #8
    CaptainElec

    Re : Calcul d'un point dans l'espace

    il faut la position de la caméra sur la sphère
    On connait les latitude et longitude de la caméra ainsi que ses coordonnées cartésiennes dans le repère héliocentrique.

    OpenGL est simple d'utilisation lorsqu'on a saisi le principe, seulement parfois ça nécessite de sortir les bonnes vieilles formules mathématiques

  10. #9
    CaptainElec

    Re : Calcul d'un point dans l'espace

    Dans l'article Wikipédia sur les coordonnées sphériques la caméra est positionnée à plat, mais dans mon cas, celle-ci est située dans un plan tangent à la planète, c'est ça qui complique le problème.

  11. #10
    Gilgamesh
    Modérateur

    Re : Calcul d'un point dans l'espace

    Citation Envoyé par CaptainElec Voir le message
    Merci pour ta réponse, j'ai déjà songé aux coordonnées sphériques mais la partie s'avère plus compliquée car il faut tenir compte des latitude et longitude et les autres paramètres.
    ? C'est justement parce qu'il faut calculer en latitude et longitude (les 2 angles du système de coordonnées) qu'il est intéressant de travailler dans le système de coordonnées sphériques, parce que c'est dans ce cas que tu peux utiliser l'addition, sur des angles et non sur des longueurs.

    Je dois obligatoirement obtenir des coordonnées cartésiennes au final.
    Fait toi juste un petit algo à la fin pour transformer les coordonnées sphériques en cartésiennes. Tu as les formules de correspondance dans wiki.
    Parcours Etranges

  12. #11
    ansset
    Animateur Mathématiques

    Re : Calcul d'un point dans l'espace

    pour être sur de comprendre, les angles que tu mentionnent sont donc par rapport au méridien et à la latitude du lieu ( et orientés dans quels sens ? )
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  13. #12
    ansset
    Animateur Mathématiques

    Re : Calcul d'un point dans l'espace

    croisement avec Gilgamesh, dont je plussoie la remarque.
    tout faire avec les angles, et finaliser le calcul en coord cartésiennes.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  14. #13
    CaptainElec

    Re : Calcul d'un point dans l'espace

    J'ai bien l'intention de raisonner avec des angles, la difficulté c'est d'exprimer ces derniers. Pour vous montrer la complexité du problème je viens de déterminer une expression de l'angle phi dans les coordonnées spériques (Qui est d'ailleurs fausse) :

    phi=arcsin((xCam_surPlanete-xPlanete)/distCamPlanete) + (90-angleCam2)*cos(rotationPlanete +longitude)

    Les angles angleCam et angleCam2 sont exprimés par rapport à un repère 3D défini par le plan tangent, ce dernier représente l'horizon de la caméra.

    Je vais tenter de reformuler le problème : Imaginez-vous à la place de ceux qui ont codé Stellarium, on vous demande de pouvoir orienter la caméra comme on le fait IRL lorsqu'on regarde les étoiles et sachant que le repère est héliocentrique (J'ignore si c'est le cas dans Stellarium mais on va supposer que oui), comment exprimer les coordonnées de la cible de la caméra ??? Les formules des coordonnées sphériques correspondent au problème mais la difficulté est d'exprimer les angles theta et phi sachant que la caméra peut avoir la tête en bas ou sur le côté ... selon sa position sur la planète ainsi que l'obliquité de cette dernière et son angle de rotation.

  15. #14
    Gilgamesh
    Modérateur

    Re : Calcul d'un point dans l'espace

    Ok, il te faut un algo d'entrée et sortie pour changer de système de coordonnées.

    En pseudo code un truc du genre :


    Code:
    SphericalCoordinate getSphericalCoordinate(double x, double y, double z){
    
    double r = sqrt(x^2 + y^2 + z^2);
    double theta = arccos(z/r);
    double phi = arctan(y/x);
    
    return new SphericalCoordinate(r, theta, phi);
    }

    et

    Code:
    CartesianCoordinate getCartesianCoordinate(double r, double theta, double phi){
    
    double x = r * sin(theta) * cos(phi);
    double y = r * sin(theta) * sin(phi);
    double z = r * cos(theta);
    
    return new CartesianCoordinate(x, y, z);
    
    }
    Les formules sont là :
    https://en.wikipedia.org/wiki/Spheri...rdinate_system

    ---
    En parlant de Stellarium, tu peux télécharger le code source sur Source Forge

    https://sourceforge.net/projects/ste...tFreedomCookie


    Il y a un Wiki également :

    http://stellarium.sourceforge.net/wi...ex.php/Accueil
    http://stellarium.sourceforge.net/wi...7s_source_code
    Dernière modification par Gilgamesh ; 14/01/2018 à 16h00.
    Parcours Etranges

  16. #15
    CaptainElec

    Re : Calcul d'un point dans l'espace

    Si je suis sur la planète et que je tourne la tête vers la droite l'horizon doit rester à la même hauteur, or ici ça n'est pas ce que l'on obtient comme résultat :

    Capture1.jpg
    Capture2.jpg

    Edit : Je viens de voir ton message, merci bien
    Dernière modification par CaptainElec ; 14/01/2018 à 15h53.

  17. #16
    CaptainElec

    Re : Calcul d'un point dans l'espace

    Je n'arrive malheureusement à rien ...

  18. #17
    Lansberg

    Re : Calcul d'un point dans l'espace

    Citation Envoyé par CaptainElec Voir le message
    Si je suis sur la planète et que je tourne la tête vers la droite l'horizon doit rester à la même hauteur, or ici ça n'est pas ce que l'on obtient comme résultat :
    Sûrement le problème de rotation du champ que l'on rencontre quand on a un capteur photographique installé sur une monture azimutale : http://astro.dialou.fr/techniques/as...tion-de-champ/

Discussions similaires

  1. [ANTENNE] Calcul de la puissance reçu en un point de l'espace
    Par invite35cd06ae dans le forum Physique
    Réponses: 8
    Dernier message: 16/07/2012, 20h46
  2. mécanique du point dans l'espace
    Par invitebdec96e1 dans le forum Physique
    Réponses: 1
    Dernier message: 20/04/2011, 18h38
  3. point dans l'espace
    Par Lio908 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 31/03/2011, 11h58
  4. coordonnées de point dans l'espace
    Par Ange_renegat dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 25/11/2007, 23h25
  5. Coordonnées d'un point dans l'espace
    Par invite24f5f1b3 dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 30/04/2005, 15h27