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

Mathématiques Discussion :

Réaliser une spirale logarithmique dont la ligne serait ondulée


Sujet :

Mathématiques

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Artiste-plasticienne
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Artiste-plasticienne

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Réaliser une spirale logarithmique dont la ligne serait ondulée
    Bonjour,

    J'aimerais réaliser une spirale logarithmique dont les extrémités se rejoignent, et dont la ligne serait à certains endroits ondulée.

    Merci pour vos réponses

  2. #2
    Membre habitué Avatar de Linterne
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 164
    Points
    164
    Par défaut
    Réaliser avec quoi ?

    Tu veux les équations ou la figure ?

    Par exemple sous Matlab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    t = [0:0.01:(20*pi)];
    w=[1:1:length(t)];
    x = ((exp(0.1*t)).*(cos(t)));
    y = ((exp(0.1*t)).*(sin(t)))+10*cos(0.5*w);
    plot(x,y)
    Nom : spirals.png
Affichages : 1576
Taille : 12,6 Ko

    Tu peux jouer sur la fréquence et l'amplitude des oscillations pour avoir ce que tu veux exactement.
    Tchouri vue par Gaia

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Artiste-plasticienne
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Artiste-plasticienne

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.

    J'aimerai le réaliser avec Scilab.
    Je voudrais les équations pour jouer avec la figure.
    Sur ton dessin c'est top mais les ondulations suivent verticalement la spirale, j'aimerais quelles soient à plat et que la ligne àà un moment ne soit plus ondulée et puisse rejoindre le point de départ de la spirale.

    Nom : SKM_C25817011214460-page-001.jpg
Affichages : 1386
Taille : 100,2 Ko

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    -- Pour la partie non ondulée.

    pour i = 0 a 6*pi pas 0.01
    r = 1+i
    x = r * cos ( i+pi)
    y = r * sin(i)
    fin

    Pour la même chose, mais ondulée, quelque chose comme ça :
    pour i = 0 a 6*pi pas 0.01
    r = (1+i)* ( 10 + sin (i*20) )/10
    x = r * cos ( i+pi)
    y = r * sin(i)
    fin

    Mais on ne veut pas que les 2 spirales soient jumelles, on veut passer de l'une à l'autre par une symétrie horizontale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    pour i = 0 a 6*pi pas 0.01
       r = 1+i
       x = r * cos ( i+pi)
       y = r * sin(i)
    fin
    pour i = 6*pi à 0 pas -0.01
       r = (1+i)* ( 10 + sin (i*20) )/10
       x = r * cos ( i+pi)
       y = -r * sin(i)
    fin
    En s'inspirant du code fourni par Linterne, ma proposition reformulée pour Matlab doit pouvoir s'écrire :

    Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    t = [0:0.01:(6*pi)];
    x = ( 1+t).*cos (t+pi);
    y = (1+t).*sin(t+pi); 
    plot(x,y)
     
    t = [0:0.01:(6*pi)];
    x = ( 1+t).*(10+sin(t))./10*cos (t+pi);
    y = -(1+t).*(10+sin(t))./10*sin(t+pi); 
    plot(x,y)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre habitué Avatar de Linterne
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 164
    Points
    164
    Par défaut
    Oui, ou alors la traduction "mot à mot" de ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    x=[];
    y=[];
    for i = 0:0.01:6*pi
       r = 1+i;
       x =[x r*cos(i+pi)];
       y =[y -r*sin(i)];
    end
     
    for i = 6*pi:-0.01:0
       r = (1+i)* ( 10 + sin (i*20) )/10;
       x =[x r*cos(i+pi)];
       y =[y r*sin(i)];
    end
     
    plot(x,y)
    donne l image suivante :

    Nom : Spirals.png
Affichages : 1273
Taille : 25,4 Ko
    Tchouri vue par Gaia

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Artiste-plasticienne
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Artiste-plasticienne

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci c'est presque cela.

    J'aimerai qu'il y ai une boucle au centre (là où se rejoignent les ondulations très serrées et la ligne), que l'ondulation sur les bords extérieurs se métamorphose en ligne sans cassure brutale et sur les ondulations au centre soient plus serrées, est-ce possible je te prie ?

  7. #7
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Voilà une question originale, qui conduit à des familles de courbes peu représentées.

    La spirale de base doit vérifier une équation polaire du type r = R0 * Exp(a * t) .
    J'ai eu l'impression que les derniers codes proposés, dépourvus de termes exponentiels mais construits sur
    conduisaient à une spirale d'Archimède, beaucoup moins évasée que la spirale logarithmique.
    De plus, j'ai été surpris du maintien de termes tels que
    que me serais attendu à voir remplacés par: -cos(i) .
    Mais tout cela est secondaire, et facilement modifiable. Il y a des questions plus importantes concernant l'aspect de la courbe.

    1°)
    Citation Envoyé par Jade Impériale Voir le message
    ... j'aimerais ... que la ligne à un moment ne soit plus ondulée et puisse rejoindre le point de départ de la spirale.
    Il suffit d'associer une seconde spirale à la précédente, symétrique par rapport à l'horizontale; ce qui a été fait.

    2°)
    Citation Envoyé par Jade Impériale Voir le message
    ... J'aimerais qu'il y ai une boucle au centre (là où se rejoignent les ondulations très serrées et la ligne) ...
    Ce n'est pas possible avec la spirale logarithmique, qui s'enroule indéfiniment autour de son centre; mais on peut remplacer l'exponentielle par la fonction cosinus hyperbolique, qui présente en zéro un minimum non nul (d'où la boucle centrale), et adopte un comportement exponentiel aux grandes valeurs de son argument; on a en effet:
    Cosh(0) = 1 et Cosh(u) ~ (1/2)*e|u| quand |u| tend vers l'infini,
    de sorte que la spirale obtenue présente au-delà d'un tour un aspect identique à la courbe initiale.
    De plus, la parité de la fonction entraîne la réalisation la condition (1): ça tombe bien, on n'est plus obligé d'ajouter un autre graphe.

    3°)
    Citation Envoyé par Jade Impériale Voir le message
    ... J'aimerais que les ondulations au centre soient plus serrées, est-ce possible je te prie ?
    Probablement non, en raison de la présence d'un nombre fini de pixels: le résultat sera décevant, sinon illisible.

    4°)
    Citation Envoyé par Jade Impériale Voir le message
    ... J'aimerais ... que l'ondulation sur les bords extérieurs se métamorphose en ligne sans cassure brutale ...
    C'est théoriquement possible, mais au prix de corrections assez lourdes à coder - quelqu'un livrera peut-être une solution concise à cette demande. Ce que j'ai trouvé ne réalise pas rigoureusement le raccordement des tangentes, mais d'une manière approchée et sur un intervalle suffisamment court pour que la cassure passe inaperçue.

    Ci-dessous les 2 graphes, avec et (à peu près) sans cassure; j'ai maintenu les 3 enroulements des courbes précédentes.

    Nom : Sp_1_Avec cassure.gif
Affichages : 1165
Taille : 14,0 Ko Nom : Sp_2_Sans cassure.gif
Affichages : 1128
Taille : 23,6 Ko

    Toutes les fonctions du graphe - rayon (Rho), angle polaire (Theta), coordonnées relatives (F1x, F1y), couleur - dépendent d'une même variable réelle, dont les valeurs successives se répartissent uniformément sur le domaine [-1 ; +1] par une instruction donnée dans une autre partie du programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         FOR k:= -Lim TO Lim DO
           BEGIN
             t:= k / Lim;        x:= F_X(t); y:= F_Y(t);
             Xm:= Round(La * x); Ym:= Round(Ha * y);
             IF TxyMat(Xm, Ym) THEN Ma[Xm, Ym]:= C_P(t)          // Détermination de la couleur du pixel   
           END                                                   // TxyMat filtre les indices (Xm, Ym) vérifiant (0<Indice) et (Indice<=Dimension_Matrice)
    Voici le coeur du programme, écrit en Virtual Pascal:
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
              // Alpha = ArcCosh(Kmax/K_Pi) = ArcCosh(15/(6*Pi)) = 0.180380080
              // Larg = th(Pi*Alpha/2) = 0.275993840
     
     CONST K_Pi = 6 * Pi;
           Kmax = 15;         R0 = 0.490 / Kmax; Larg = 0.276;
           Nosc = 100;        N_Pi = Nosc * D_Pi;
           Nosc2 = Sqr(Nosc); Lim1 = 1 / Nosc; Lim2 = 1.0 - Lim1;  
    (*
     FUNCTION Rho(u: Reel): Reel;          // version courte - graphe avec cassure
       VAR p, q, r, Rspir, s, t, U2: Reel;
       BEGIN
         p:= ArcCosh(Kmax); q:= u * p; r:= Cosh(q); Rspir:= R0 * r;
         IF (u>0) THEN BEGIN
                         U2:= Sqr(u);  s:= Sin(N_Pi * U2);
                         t:= Larg * s; Rho:= Rspir * (1 + t)
                       END
                  ELSE Rho:= Rspir
       END;                                      *)
     
     FUNCTION Rho(u: Reel): Reel;
       VAR p, q, r, Rspir, s, t, U2: Reel;
       BEGIN
         p:= ArcCosh(Kmax); q:= u * p; r:= Cosh(q); Rspir:= R0 * r;
         IF (u>0) THEN BEGIN
                         U2:= Sqr(u); s:= Sin(N_Pi * U2);
                         IF (U2<Lim2) THEN t:= Larg * s
                                      ELSE BEGIN
                                             p:= Sqr(U2 - Lim2); q:= Nosc2 * p;
                                             p:= Larg * (1 - q); t:= p * s
                                           END;
                         Rho:= Rspir * (1 + t)
                       END
                  ELSE Rho:= Rspir
      END;
     
     FUNCTION Theta(u: Reel): Reel;
       VAR p, q, r, s: Reel;
       BEGIN
         Theta:= K_Pi * u
       END;
     
     FUNCTION F1x(t: Reel): Reel;          // 0 <= F1x <= 1
       VAR p, q, r, Th: Reel;
       BEGIN
         r:= Rho(t); Th:= Theta(t); q:= Cos(Th);
         p:= r * q;  F1x:= p + 0.38
       END;
     
     FUNCTION F1y(t: Reel): Reel;          // 0 <= F1y <= 1
       VAR p, q, r, Th: Reel;
       BEGIN
         r:= Rho(t); Th:= Theta(t); q:= Sin(Th);
         p:= r * q;  F1y:= p + 0.5
       END;

    En commentaires la version courte de la fonction Rho(t) correspondant au premier graphe; la 4me ligne de constantes est alors inutile.
    Le bloc de 3 lignes de constantes a été sorti de la fonction concernée (Rho(t)) afin d'abréger le temps d'exécution; cette accumulation relativement lourde de calculs préliminaires vient de l'emploi d'une fonction hyperbolique.
    Ce programme assez fruste doit être remanié, parce que moulé faute de temps dans une structure préexistante.

    Les habitués de Matlab traduiront facilement ce code écrit en Pascal.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/04/2015, 19h05
  2. [API HTML5] [Article] Canvas : réaliser une bannière animée en quelques lignes de code
    Par Bovino dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 06/06/2012, 13h26
  3. [XL-2007] importer un csv texte dont une cellule peut contenir plusieurs lignes
    Par fourchette dans le forum Excel
    Réponses: 1
    Dernier message: 16/07/2010, 12h17
  4. Réponses: 5
    Dernier message: 17/06/2008, 15h17

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