Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rotation segment dans un espace 3D

    18 janvier 2021 à 22:28:11

    Bonjour à toutes et à tous,

    ayant un segment construit à partir d'une suite de voxels 3D, je souhaite faire une rotation de ce dernier pour le rendre co-linéraire à l'axe Z. Pour cela, j'utilise la fonction scipy.ndimage.interpolation.rotate (python)et spécifie le paramètre "(0,1)" dans les paramètres de la fonction pour que rotation se fasse en fonction du plan (x,y) (Merci de voir le schéma décrit dans l'image attachée). Malheureusement, ceci ne permet pas d'aboutir au résultat espéré. Aie-je oublié une étape ? Avez vous une méthode/code qui peu répondre à ma problématique ? 

    Merci d'avance.

    -
    Edité par JeanLuc113 18 janvier 2021 à 22:28:37

    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2021 à 10:47:35

      Bonjour.

      N'est-il pas plus simple de te placer dans le plan passant par O, A et B avec l'origine en A, l'angle de ta rotation serait beaucoup plus rapide à définir :

      EDIT -- > Bien que le calcul donne le même résultat, il est plus juste d'écrire :

      -
      Edité par PB68 19 janvier 2021 à 12:13:26

      • Partager sur Facebook
      • Partager sur Twitter

      PB68

        19 janvier 2021 à 12:36:01

        Bonjour, 

        merci pour votre réponse. J'avoue que je n'ai pas compris comment vous obtenu l'angle alpha. D'autre part, si je calcule l'angle de cette manière, la rotation sse fera en fonction de quel plan ? 

        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2021 à 14:05:29

          Voici graphiquement mon explication :

          Je fais tout d'abord une rotation de 45° (déduit des coordonnées des points A et B) du repère (O,x,y,z) pour obtenir le repère (O,x',y',z).

          Ensuite, je translate le repère suivant le vecteur OA pour obtenir le repère (A,x'',y'',z'). Là, c'est juste pour mieux visualiser !!!

          Ensuite, je projette le point B sur l'axe de ordonnées (A, z') pour obtenir le point h.

          Pour finir, expression du cos de l'angle hAB.

          La rotation sera faite suivant l'axe (Ay'') et d'angle alpha

          -
          Edité par PB68 19 janvier 2021 à 14:12:44

          • Partager sur Facebook
          • Partager sur Twitter

          PB68

            20 janvier 2021 à 23:57:41

            Bonsoir, 

            merci beaucoup pour votre explication. Ca m'a beaucoup aidé à comprendre. J'ai développé cette approche en Python en utilisant les rotations expliquées. Cependant, à chaque rotation j'obtiens un volume mal interpolé : la fonction scipy.ndimage.interpolation.rotate me rajoute beaucoup de voxels ce qui déforme mon volume après rotation. Sauriez-vous comment puis-je remédier à ce problème ? sinon, une autre fonction permettant de faire la rotation sans création de nouveaux voxels ? Merci

            -
            Edité par JeanLuc113 20 janvier 2021 à 23:58:44

            • Partager sur Facebook
            • Partager sur Twitter
              21 janvier 2021 à 12:12:36

              Je n'ai pas su travailler avec les fonctions de cette interface. J'ai pas trouvé d'exemples concrets pour des les volumes (stacks 3D). Pouvez-vous me guider davantage?

              -
              Edité par JeanLuc113 21 janvier 2021 à 12:15:36

              • Partager sur Facebook
              • Partager sur Twitter
                22 janvier 2021 à 7:02:07

                Bonjour.

                J'ai trouvé un exemple d'utilisation pour illustrer "scipy.spatial.transform.Rotation".

                EDIT : J'ai trouvé un exemple de rotation de voxels (avec animation en plus).

                -
                Edité par PB68 22 janvier 2021 à 11:33:00

                • Partager sur Facebook
                • Partager sur Twitter

                PB68

                Rotation segment dans un espace 3D

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown