Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tracé 3D forme infini

    4 avril 2020 à 12:42:03

    Bonjour, je souhaiterais tracer en 3D une révolution de cette forme selon l'axe 0-180.

    (C'est la représentation polaire de abs(cos(x)) pour x entre 0 et 360.)

    Le but est d'avoir une figure de ce type :

    J'ai essayé de passer par les coordonnées polaire et les différentes transformations avec theta et phi sans succès: voici le code Python

    theta = np.linspace(0,2*np.pi,180)
    
    rz = abs(np.cos(theta))
    rx = abs(np.cos(theta))
    ry = abs(np.cos(theta))
    
    
    # Set of all spherical angles:
    u = np.linspace(0, 1 * np.pi, 180)
    v = np.linspace(0, np.pi, 180)
    
    # Cartesian coordinates that correspond to the spherical angles:
    x = rx * np.outer(np.cos(u), np.sin(v))
    y = ry * np.outer(np.sin(u), np.sin(v))
    z = rz * np.outer(np.ones_like(u), np.cos(v))

    Qui me donne ce résultat :



    Dois-je calculer spécialement un rayon qui sera fonction de theta et de phi ?


    Je vous remercie par avance pour votre aide.

    Cdt

    -
    Edité par ValentinSoulet 4 avril 2020 à 12:47:09

    • Partager sur Facebook
    • Partager sur Twitter
      4 avril 2020 à 18:15:57

      Je vais répondre par rapport au problème de départ sans regarder ce que tu as fait (c'est trop compliqué pour moi...) Le but est de réaliser le tracé de la deuxième figure.

      Pour expliquer ma démarche, j'ai besoin de bien préciser le vocabulaire.

      Je note \( C_0 \) la courbe de référence. Cette courbe est paramétrée par un angle \( t \) variant entre 0 et \( 2\pi \) (je ne l'appelle pas x pour ne pas confondre avec les coordonnées x, y, z). Je note \( C_0(t) \) le point de la courbe \( C_0 \) correspondant au paramètre \( t \).

      Pour obtenir la figure complète, on a besoin de faire « tourner » \( C_0 \) autour de l'axe x'Ox. Il s'agit d'une rotation 3D axiale d'angle \( \alpha \) variant entre 0 et \( \pi \) (pas besoin d'aller jusqu'à \( 2 \pi \) grâce à la symétrie de la courbe). Je note \( C_\alpha \) la courbe obtenue par rotation d'angle \( \alpha \).

      Il y a deux types de lignes à tracer :

      − Type 1 : les lignes qui relient entre eux tous les points d'une même courbe \( C_\alpha \).

      − Type 2 : les lignes qui relient entre eux les points de toutes les courbes pour un même paramètre \( t \) (ces lignes coupent les précédentes, elles permettent d'obtenir une sorte de quadrillage).

      Il faut donc deux fois deux boucles. L'algorithme ressemblera à :

      # ---------------------------
      # Dessin des lignes de Type 1
      # ---------------------------
          Pour α = 0° à 180° :
              # Dessin de la courbe Cα
              Pour t = 0° à < 360° :
                  Dessiner le segment [Cα(t) ; Cα(t')]
      # ---------------------------
      # Dessin des lignes de Type 2
      # ---------------------------
          Pour t = 0° à < 360° :
              # Dessin de la ligne des points de paramètres t
              Pour α = 0° à < 180° :
                  Dessiner le segment [Cα(t) ; Cα'(t)]

      (Ici \( t' = t + \Delta t \) et \( \alpha' = \alpha + \Delta\alpha \).)

      Il reste à écrire deux fonctions :

      − La fonction qui, pour tout \( t \), donne les coordonnées (cartésiennes ou polaires, je ne sais pas) de \( C_0(t) \). Si j'ai bien compris, tu fais d'abord un calcul en coordonnées polaires, puis tu reviens aux coordonnées cartésiennes. Je trouve que c'est en effet le plus pratique pour la suite.

      − La fonction qui, à partir des coordonnées (x, y), calcul les coordonnées (X, Y, Z) de son image par la rotation d'axe x'Ox et d'angle \( \alpha \). Je pense que les calculs ne sont pas difficiles puisque l'on tourne dans le plan Oyz. Mais je n'ai pas le courage de les faire...

      Ainsi, pour tracer n'importe quel point de \( C_\alpha(t) \), on procède en deux étapes : on calcule d'abord les coordonnées de \( C_0(t) \) avec la première fonction, et on en déduit les coordonnées de \( C_\alpha(t) \) avec la deuxième.

      -
      Edité par robun 4 avril 2020 à 18:22:09

      • Partager sur Facebook
      • Partager sur Twitter

      Tracé 3D forme infini

      × 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