Déterminer la position d'un point
Affichage des résultats 1 à 15 sur 15

Déterminer la position d'un point



  1. #1
    CaptainElec

    Déterminer la position d'un point


    ------

    Bonjour, je fais appel à vous car je suis entrain de coder un petit programme permettant d'explorer le système solaire. La caméra est positionnée sur une planète donnée. Le repère est un repère OpenGL ayant le Soleil pour centre et l'axe Z comme axe vertical.
    Je suis parvenu à déterminer les expressions des coordonnées de la caméra dans le repère en fonction de la position de la planète et de la latitude et longitude, la difficulté est d'orienter cette dernière. J'essaie depuis hier de déterminer les expressions des coordonnées cartésiennes de la cible dans le répère OpenGL à partir des données connues, entre autres :

    - Les coordonnées de la caméra
    - La latitude et la longitude de la caméra
    - Les angles d'orientation de la caméra par rapport (Correspondant à l'ascension droite et la déclinaison si je ne dis pas de bêtise)
    - La distance entre la caméra et sa cible, que l'on peut fixer à 1

    Je vous remercie d'avance pour votre aide.

    -----

  2. #2
    eudea-panjclinne

    Re : Déterminer la position d'un point

    Pour ce que j'ai compris de votre demande.
    On considère que les planètes sont ponctuelles et se déplacent sur des trajectoires circulaires autour d'un soleil fixe et ponctuel en O. Le repère de référence est centré en O au centre du soleil, l'axe des X pointant vers le point Gamma, début du printemps, et le plan XOY coïncidant avec le plan de l'orbite terrestre (plan de l'écliptique).
    Chaque planète p se déplace sur un plan Pp passant par le centre du soleil et incliné d'un angle Ip par rapport au plan de l'écliptique (plan XOY). L'intersection du plan Pp de la planète avec le plan de l'écliptique est une droite (Ogp). L'angle de cette droite (*) avec OX est OMEGAp, longitude du noeud ascendant. L'angle que fait le rayon vecteur Rp=Op de la planète p avec (Ogp) est wp. On a alors le groupe fondamental de formules donnant les coordonnées cartésiennes de la planète p en fonction des éléments de la planète (Rp, I,OMEGAp, wp):
    X=Rp[coswp sinOMEGAp-sinwp sinOMEGAp cosIp]
    Y=Rp[coswp sinOMEGAp+sinwp cosOMEGA cosIp]
    Z=Rp sinwp sinIp

    Nom : elements_orbite.jpg
Affichages : 384
Taille : 24,9 Ko
    Dans l'image ci-dessus mon w est la somme omega+v

    Connaissant les coordonnées cartésiennes de la planète où est la camera et celles du point visé, vous devriez pouvoir programmer cela facilement. J'espère vous avoir été utile.

    (*) On prend la demi droite où la planète passe des Z négatifs aux positifs: noeud ascendant.
    Dernière modification par eudea-panjclinne ; 08/05/2017 à 15h48.

  3. #3
    CaptainElec

    Re : Déterminer la position d'un point

    Merci de votre réponse, mais ce n'est pas exactement ça, je me suis sans doute mal exprimé.

    Pour positionner et orienter la caméra, il faut trois paramètres : Les coordonnées de la caméra, celles de la cible que regarde la caméra, et les coordonnées du vecteur vertical. Pour le premier et le troisième paramètre pas de problème, c'est le deuxième qui m'embête : Je ne connais que les angles d'orientation de la caméra (De gauche à droite et de haut en bas), et je cherche à calculer à partir de ces paramètres ainsi que des coordonnées de la caméra les coordonnées cartésiennes de la cible, dans le plan il suffirait de faire :

    xCible = xCam + cos(angleHorizontal)
    yCible = yCam + sin(angleHorizontal)

    (En prenant une distance Caméra-cible égale à 1)

    J'ai trouvé une méthode consistant à passer par une série de transformations (Rotations et translations) à partir des coordonnées du centre de la planète et que je modélise avec des matrices : Je multiple les matrices deux à deux afin de combiner toutes les transformations puis je multiplie la matrice représentant les coordonnées de centre de la planète par le résultat obtenu, et je suis censé tomber sur les coordonnées de la cible.

    Malheureusement, ça ne marche toujours pas : Lorsque je fais pivoter la caméra de haut en bas, l'horizon semble se déplacer de biais et non verticalement.

  4. #4
    eudea-panjclinne

    Re : Déterminer la position d'un point

    Comme je l'avais craint, je n'ai pas compris votre demande, j'en suis désolé. Quel modèle utilisez-vous pour le système solaire ? Apparemment vos planètes ne sont pas ponctuelles et la caméra est sur leur surface, d'où la recherche d'un vecteur vertical. Est-cela ?

  5. A voir en vidéo sur Futura
  6. #5
    CaptainElec

    Re : Déterminer la position d'un point

    Ce n'est pas grave.
    La caméra est sur la surface d'une planète sélectionnée et pour orienter cette dernière, je cherche les coordonnées cartésiennes de la cible. Je reprends pour cela une méthode utilisée par OpenGL consistant à déplacer et faire pivoter le repère 3D au moyen de transformations géométriques représentées par des matrices 4x4 :

    - Je pars des coordonnées du centre de la planète (Connues) et j'incline le repère autour de l'axe des Y d'un angle égal à l'obliquité de la planète
    - Je fais ensuite pivoter le repère autour de l'axe des Z d'un angle égal à la longitude où se trouve la caméra
    - J'effectue la même opération autour de l'axe des Y pour la latitude
    - L'axe des X du repère pointe alors vers la caméra mais le repère est toujours au centre de la planète, je le déplace alors d'une distance égale au rayon de la planète
    - Le repère est maintenant à l'endroit où se trouve la caméra, je le fais pivoter de 90° autour de l'axe des Y afin de pointer l'axe des X vers l'horizon
    - Je fais ensuite pivoter le repère autour de l'axe des Z d'un angle équivalent à l'ascension droite (En imaginant que la cible est une étoile)
    - Puis IDEM autour de l'axe des Y d'un angle égal à la déclinaison
    - L'axe des X pointe alors vers la cible, je déplace alors le repère le long de l'axe des X d'une distance choisie, du moment que celle-ci est strictement positive

    Je ne sais pas si c'est bien clair, j'essaierai de faire des schémas.

    Je n'ai pas de problème pour le vecteur vertical, l'horizon apparaît bien horizontal.

  7. #6
    CaptainElec

    Re : Déterminer la position d'un point

    En fait, pour faire simple, je cherche à determiner les coordonnées d'un objet à partir de :

    - L'ascension droite
    - La déclinaison
    - Les coordonnées de la caméra dans un repère ayant pour centre le Soleil
    - La distance Caméra-cible (Que l'on peut fixer à 1)

  8. #7
    CaptainElec

    Re : Déterminer la position d'un point

    En tenant compte également des latitude et longitude de la caméra et de l'obliquité de la planète

  9. #8
    Lansberg

    Re : Déterminer la position d'un point

    Bonjour,

    Citation Envoyé par CaptainElec Voir le message
    En fait, pour faire simple, je cherche à determiner les coordonnées d'un objet à partir de :

    - L'ascension droite
    - La déclinaison
    Utiliser un système de coordonnées propres à la Terre, pour une autre planète ??

  10. #9
    CaptainElec

    Re : Déterminer la position d'un point

    Pour n'importe quelle planète du moment qu'elle fait partie du système solaire

  11. #10
    eudea-panjclinne

    Re : Déterminer la position d'un point

    Je pense avoir compris. Ce sont des calculs qui me paraissent compliqués surtout si vous voulez tenir compte des rotations des planètes sur elle-mêmes et il faudra le faire de toute façon.
    Pourquoi tenez-vous à placer la caméra à la surface d'une planète ? A l'échelle du système solaire les dimensions des planètes sont si petites que le point de vue d'un observateur de la surface d'une planète ou de son centre ne changera en rien le rendu d'une simulation informatique de ce système.
    Si vous voulez cependant faire ces calculs, pourquoi voulez-vous passer par un repère équatorial (ascension droite et déclinaison) ne serait-il pas plus simple, au final, de déterminer les coordonnées cartésiennes (repère lié au soleil) de la caméra et de la cible ?

  12. #11
    Lansberg

    Re : Déterminer la position d'un point

    Votre programme calcule déclinaison et ascension droite d'un astre (cible) quelle que soit la planète sur laquelle se trouve la caméra ?

  13. #12
    CaptainElec

    Re : Déterminer la position d'un point

    Pourquoi tenez-vous à placer la caméra à la surface d'une planète ?
    Je cherche à ajouter la possibilité pour l'utilisateur d'atterrir sur n'importe quelle planète. Une fois sur celle-ci, il doit pouvoir regarder vers le haut ou vers le bas ou vers la droite ou la gauche. J'utilise deux angles, l'un permettant de regarder sur les côtes et l'autre vers le haut ou vers le bas. Ces angles sont connus (Je les ai nommés ascension droite et déclinaison pour que vous compreniez mieux) et je souhaite déterminer les coordonnées cartésiennes de la cible dans le repère défini par le Soleil.

    Lorsque l'on bouge la tête de droite à gauche l'horizon semble ne pas changer de hauteur, et bien actuellement dans mon programme, on voit l'horizon se déplacer en diagonale lorsque je simule ce mouvement de tête, c'est ça mon problème.

    Je sais que c'est compliqué mais ceux qui ont développé Stellarium ont su le faire, donc c'est faisable.

  14. #13
    eudea-panjclinne

    Smile Re : Déterminer la position d'un point

    je vais essayer de vous être utile. Je reprends ce que vous avez écrit:

    - Je pars des coordonnées du centre de la planète (Connues) et j'incline le repère autour de l'axe des Y d'un angle égal à l'obliquité de la planète
    OK, donc Z pointe vers le nord
    - Je fais ensuite pivoter le repère autour de l'axe des Z d'un angle égal à la longitude où se trouve la caméra
    OK
    - J'effectue la même opération autour de l'axe des Y pour la latitude
    OK
    - L'axe des X du repère pointe alors vers la caméra mais le repère est toujours au centre de la planète, je le déplace alors d'une distance égale au rayon de la planète
    OK, donc X pointe vers le zénith
    - Le repère est maintenant à l'endroit où se trouve la caméra, je le fais pivoter de 90° autour de l'axe des Y afin de pointer l'axe des X vers l'horizon
    OK, donc Z pointe vers le zénith
    - Je fais ensuite pivoter le repère autour de l'axe des Z d'un angle équivalent à l'ascension droite (En imaginant que la cible est une étoile)
    OK, attention à la confusion des repères, ici il s'agit d'un repère horizontal (azimuth, hauteur), c'est l'azimuth qui est modifié
    - Puis IDEM autour de l'axe des Y d'un angle égal à la déclinaison
    C'est ici la hauteur qui est modifiée
    - L'axe des X pointe alors vers la cible, je déplace alors le repère le long de l'axe des X d'une distance choisie, du moment que celle-ci est strictement positive

    Ce que vous avez dit est vrai dans le cas où la planète ne tourne pas sur elle-même (pas de rotation par rapport aux étoiles, ne pas confondre avec la révolution de la planète autour du soleil) dans ce cas on peut "identifier" repère équatorial (ascension droite, déclinaison) et repère géographique lié à l'équateur (latitude et longitude).
    Mais attention, dans ce cas la planète tourne par rapport au soleil et à la cible visée avec une période de rotation égale à la période de révolution de la planète autour du soleil.
    En espérant vous avoir été utile

  15. #14
    CaptainElec

    Re : Déterminer la position d'un point

    Oui c'est exactement ça, j'ai oublié d'ajouter la rotation de la planète, autant pour moi ^^
    Mais ce qu'il me faut, ce sont les coordonnées de la cible : X, Y et Z. Mais je préfère laisser tomber, ça m'a l'air bien plus compliqué que ce que je croyais, ce n'est visiblement pas dans mes compétences. Merci tout de même pour l'aide, je ne vous dérange pas plus.

  16. #15
    eudea-panjclinne

    Re : Déterminer la position d'un point

    Ne vous désespérer pas. Reprenez tout cela au calme. Considérez dans un premier temps que la caméra est sur terre et tenez compte de la rotation de la terre.
    Vos enchainement de repère ne sont pas orthodoxes mais ça devrait aller tout de même.
    Sinon, voici un lien vers les repères "officiels" des astronomes, vous pouvez laisser de côté les détails techniques propres aux astronomes:
    Repères astronomiques

Discussions similaires

  1. Déterminer la position du centre d'inertie?
    Par AsmaSasuki dans le forum Physique
    Réponses: 7
    Dernier message: 05/12/2014, 18h01
  2. Determiner la position d'une emission d'onde
    Par lagalac dans le forum Physique
    Réponses: 2
    Dernier message: 03/05/2011, 13h12
  3. Determiner la position d'un satellite à l'aide de fonctions
    Par invite0d2df898 dans le forum Physique
    Réponses: 0
    Dernier message: 04/12/2010, 00h03
  4. déterminer position d'un astre moment précis
    Par invitec320da61 dans le forum Archives
    Réponses: 6
    Dernier message: 25/10/2008, 16h32
  5. Comment déterminer le vecteur position?
    Par inviteba67e777 dans le forum Physique
    Réponses: 6
    Dernier message: 28/08/2008, 19h04