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

Programmation multimédia/Jeux Python Discussion :

question de trigo (coordonnées sphériques)


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Homme Profil pro
    plug in
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : plug in
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut question de trigo (coordonnées sphériques)
    Bonjour,

    Ma question porte sur les mathematiques, mais comme je n'ai pas trouve de section sur ce theme, et, devant coder en python un plug in pour un logiciel graphique, je me permet de la poser ici. En parcourant des forum j'ai pu trouver les equations, mais malheureusement mes cours de trigo sont bien loin...

    Coordonnees d'un point positionner devant une camera ...

    Les donnees connues sont la rotation et le centre d'une camera et je cherche, suivant la rotation de celle-ci, a trouver la position d'un point devant la camera.
    j'ai bien trouve les equations des coordonnées sphériques, mais aborder les angles, la, je seche... Phi et theta me donne bien du fils a retordre.

    Merci!

    Olivier

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est difficile de répondre à une question si générale. Les coordonnées sphériques sont assez bien expliquées sur wikipedia: https://fr.wikipedia.org/wiki/Coordo...ph%C3%A9riques.

    Reprenons.

    On a une caméra dans une 1ère position de référence. la position d'un point est donné par 3 paramètres: 2 angles (par exemple un angle horizontal et un angle vertical) et une distance.

    Tu bouges la caméra dans une seconde position, mais tu veux calculer quoi: la position du point précédent dans la nouvelle position de la caméra? Ou autre chose?

    Bref, pour résoudre le pb mathématiquement, il faut d'abord être précis sur le problème "physique" que tu veux résoudre.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Candidat au Club
    Homme Profil pro
    plug in
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : plug in
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut sphere, point
    merci tyrtamos de te pencher sur mon problème,

    j'ai bien regardé la page wiki sur la trigo, malheureusement il doit me manquer un petit quelque chose pour résoudre mon problème.
    Le problème se résout à trouver la coordonnée d'un point sur la surface d'une sphère, connaissant le rayon et les rotation de celle-ci.

    Comme chaque coordonnée dépend des rotations sur les deux autres axes je pensais:
    (si X, Y, Z sont les angles de rotation de la sphere)

    x = rayon * (cosY - sinZ)
    y = rayon * (cosZ - sinX)
    z = rayon * (cosX - sinY)

    voici ou en sont mes lacunes,

    merci pour vos réponses

    Olivier

    Merci pour votre aide

    Olivier

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Comme vous êtes dans un forum de programmation, oublions la géométrie.
    Lorsqu'on code un truc dont dépendront des tas d'autres, il faut le tester un peu pour s'assurer qu'il fait ce qu'on attend.

    Ici vous avez a coder des mathématiques, "tester" votre code pourrait commencer par s'assurer que "ca le fait" au moins pour des cas faciles a calculer.
    Avec un rayon=1 et tous les angles nuls vous devriez obtenir quoi?
    Puis vous prenez bougez les angles 45°, 90°, 180°,...
    ils sont assez remarquable car x, y, z seront dans -1, 1
    Ca s'appelle écrire un (petit) "plan de test".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    plug in
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : plug in
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    bonjour Wiztricks,

    Oui bien sur, des tests j'en fait pour décomposer le mouvement . Sur un plan, avec une rotation de l'axe perpendiculaire a ce plan, mon test fonctionne bien mais quand je test en ajoutant un autre axe, rien ne va plus

    Olivier

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par olivier.taranis Voir le message
    Oui bien sur, des tests j'en fait pour décomposer le mouvement . Sur un plan, avec une rotation de l'axe perpendiculaire a ce plan, mon test fonctionne bien mais quand je test en ajoutant un autre axe, rien ne va plus
    L'article de Wikipedia posté par Tyrtamos vous donne les formules a transcrire en Python.
    Pour le reste, pleurer sans montrez pas ce que vous avez fait ne va pas faire avancer le smilblic.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    plug in
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : plug in
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Comme je disais, mes cours de trigo sont bien loin

    Si je reprend le premier schéma de la page wiki:

    ρ est mon rayon
    j'utilise la rotation de l'axe Z pour θ
    φ, doit être le rapport des axes X et Y, et je pense que c'est la que je suis perdu, je réalise plein de tests sans résultat

    Ce n'est pas faute de ne pas essayer de comprendre. Je lis et relis tout ce que je peux trouver sur des pages traitant le sujet, qui me donne la même explication. Je comprend que vous pouvez trouver cela facile, parfois une solution simple ne l'est pas forcement pour d'autres.
    J'ai trouvé cela intéressant de créer des plug-in pour le logiciel que j'utilise au travail, nuke. Peut être certains parmi vous le connaissent ? Sur une base nodale, il permet de faire les VFX sur les films.

    Olivier

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Tant que vous ne montrez pas de code, je ne peux rien pour vous.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Candidat au Club
    Homme Profil pro
    plug in
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : plug in
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut solution partielle
    En utilisant la convention P(ρ,θ,φ) expliqué sur la page wiki, j'ai une solution partielle.

    Dans le logiciel Nuke les axes sont orientés différemment:
    Nom : CameraAxes.png
Affichages : 554
Taille : 37,5 Ko

    l'axe X devient Z(face a la camera) , Y devient X et Z devient Y

    En calculant comme ceci :
    θ = radians(Camera.rotate.y)
    φ = radians(Camera.rotate.x+90)

    les coordonnées du point devant la camera sont :
    x = -dist * sin(φ) * sin(θ)
    y = -dist * cos(φ)
    z = -dist * sin(φ) * cos(θ)


    Malheureusement ces equations ne prennent pas en compte la rotation de la caméra sur son axe Z

    J'utilise donc de cette façon, temporairement, mais ce n'est pas parfait.

    Merci encore pour votre aide et votre temps

    Olivier

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    À vue de nez c'est un problème simple de 2D/ 3D

    Tu as 2 repères:
    1. Le repère caméra (celui dans lequel ta caméra a subit une rotation): la caméra est le centre
    2. Le repère objet (le premier repère)



    Tes coordonnées sphériques ressemblent à des angles d'Euler translaté.
    Édit: Wiki dit à propos des angles d'Euler: "on peut les voir comme une généralisation des coordonnées sphériques"

    Je pense qu'il faut faire ceci
    1. Trouver la matrice M1 de ton objet qui est une conversion angles d'Euler en matrice
    2. Trouver la matrice M2 qui permet de passer du repère objet vers le repère caméra
    3. Solution: Combinaison de M1 M2
    4. Un peu de conversion si nécessaire pour revenir à une représentation plus humaine


    Tu en pense quoi?

  11. #11
    Candidat au Club
    Homme Profil pro
    plug in
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : plug in
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut matrice
    hello foetus,

    Merci pour ton conseil, c'est surement la solution. Nuke nous fournit la matrice de la camera. Je te reviens des que je vais avoir du temps de me pencher sur ton idée.

    Olivier

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/06/2017, 15h31
  2. Rotations en coordonnées sphériques
    Par ToTo13 dans le forum Mathématiques
    Réponses: 33
    Dernier message: 03/01/2015, 18h55
  3. Vecteur orthogonal en coordonnées sphériques
    Par on2101 dans le forum Mathématiques
    Réponses: 2
    Dernier message: 06/04/2012, 21h24
  4. Coordonnées sphériques->cartésiennes dans l'espace
    Par dridri85 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 20/02/2011, 15h51
  5. Probleme de coordonnées sphériques
    Par patatose dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 12/08/2006, 02h57

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