Je cherche à tracer une spirale de Fermat avec J'ai donc calculé les coordonnées de tous les points (il y en a 113 au total), grâce aux formules :
J'ai fait ces calculs sur un tableur (libreoffice), puis j'ai transféré les coordonnées dans un fichier texte avec gedit. Ensuite, j'ai traçé la figure avec Voici un ECM : \documentclass[10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage[french]{babel}[2013/05/16] \usepackage{tikz} \usetikzlibrary{plotmarks} \usepackage{xcolor} \usepackage{graphicx} \usepackage{color} \usepackage{siunitx} \usepackage[a4paper,margin=6mm]{geometry} \begin{document} \begin{center} \begin{tikzpicture} % traçé de l'axe des x \foreach \y in {-10,-9,...,10} \draw(-1,\y)node[left]{\y}; % traçé de l'axe des y \foreach \x in {-10,-9,...,10} \draw(\x,0)node[below]{\x}; \draw[dotted] plot[mark=ball] file {listepointsspirale}; \end{tikzpicture} \end{center} \end{document} Mes questions sont les suivantes :
Posée 10 Mar '17, 14:34 ettoremajorana
Affichage de 5 parmi 6
Afficher 1 commentaire(s) en plus
|
À compléter Une solution basée sur pgfplots. L'idée et d'ajouter (dans le fichier des données) une troisième colonne Exemple fichier des données Ouvrir dans l'éditeur Overleaf
#x y (xy) 0.000000000000000000 0.000000000000000000 (0.00,0.00) -0.518802039868240988 0.475261237035540361 (-0.52,0.48) 0.086998192061317269 -0.991205788208514315 (0.09,-0.99) 0.741456721985263832 0.967123740491808607 (0.74,0.97) -1.385650965711109962 -0.245125684545435452 (-1.39,-0.25) 1.327463029854904571 -0.844384926658710952 (1.33,-0.84) -0.447448095958092837 1.664320582527139602 (-0.45,1.66) -0.857933200213072615 -1.652014595568742482 (-0.86,-1.65) ... Les mots clés sont Exemple fichier Ouvrir dans l'éditeur Overleaf
\begin{filecontents}{SpFermat.dat} #x y (xy) 0.000000000000000000 0.000000000000000000 (0.00,0.00) -0.518802039868240988 0.475261237035540361 (-0.52,0.48) 0.086998192061317269 -0.991205788208514315 (0.09,-0.99) 0.741456721985263832 0.967123740491808607 (0.74,0.97) -1.385650965711109962 -0.245125684545435452 (-1.39,-0.25) 1.327463029854904571 -0.844384926658710952 (1.33,-0.84) -0.447448095958092837 1.664320582527139602 (-0.45,1.66) -0.857933200213072615 -1.652014595568742482 (-0.86,-1.65) \end{filecontents} \documentclass{article} \usepackage[a4paper,margin=1cm]{geometry} \usepackage{pgfplots} \pagestyle{empty} \begin{document} \begin{tikzpicture}[>=latex] \begin{axis}[nodes near coords={\tiny \pgfplotspointmeta}, width=20cm, height=20cm, axis lines=center, xlabel style={below right}, ylabel style={above left}, xlabel={$x$}, ylabel={$y$}, xtick={-10,-9,...,10}, ytick={-10,-9,...,10}, xmin=-10.5, xmax=10.5, ymin=-10.5, ymax=10.5] \addplot[mark=ball, only marks, point meta=explicit symbolic] file {SpFermat.dat}; \end{axis} \end{tikzpicture} \end{document} Publiée 12 Mar '17, 19:11 touhami OK. Bon travail. Maintenant, j'aimerais savoir si vous avez une technique pour rentrer les coordonnées rapidement dans la troisième colonne du fichier texte (intitulé listepointsspirale), car j'ai maintenant 440 points ! Et je me vois mal recopier les valeurs à la main !
(16 Mar '17, 01:19)
ettoremajorana
Question 2 : comment faites-vous pour tracer la ligne qui relie les points ? Est-ce que vous triez les valeurs avant de les recopier dans le fichier texte ? Parce que si je ne trie pas les valeurs, j'obtiens des tas de lignes qui se croisent et de recroisent...
(16 Mar '17, 01:20)
ettoremajorana
D'accord. En fait, oui, je serai curieux de savoir comment vous tracez la courbe. Et donc, je suis preneur de l'autre méthode de calcul.
(16 Mar '17, 12:30)
ettoremajorana
Pour tracer la courbe il suffit de compiler le code que j'ai proposé en remplaçant
(16 Mar '17, 12:43)
touhami
Pour la deuxième méthode, remplacer par N'oublier pas de supprimer le fichier
(16 Mar '17, 12:43)
touhami
Avec la deuxième méthode on obtient
(16 Mar '17, 12:59)
touhami
Affichage de 5 parmi 6
Afficher 1 commentaire(s) en plus
|
Pour la question 3 (moins importante) il suffit d'ajouter l'option
only marks
.Pour la question 1 on peut le faire avec l'extension
pgfplots
mais il faut ajouter une troisième colonne(x,y)
dans le fichier des données.La question 2 n'est pas claire pour moi (désolé).
Je ne suis pas un expert
tikz
donc il peut avoir des solutions plus propres.Que sont les points à l'intérieur et à l'extérieur de la spirale si ce doivent être des points de la spirale ? Et que vaut $k$ ?
@Bernard. $k=0.55$. Je souhaiterais transformer ces points en disque dont le diamètre irait de 1 à 7 en taille relative, les plus petits à l'intérieur de la spirale (c'est-à-dire près du centre et les plus grands à l'extérieur de la spirale. En somme, j'essaye de reproduire la figure qu'on peut visualiser à http://flyingpudding.com/projects/florets/applet/ Avec un angle seed de 137,508 degrés. Innermost diameter : 1. Outermost diameter : 7.
@touhami. Merci pour la résolution de la question 3. Impeccable.
@touhami. L'extension pgfplots ne fonctionne pas avec tikz. en effet, "draw[loosely dotted] plot[only marks,mark=ball,pgfplots] file {listepointsspirale};" donne un message d'erreur.
La solution que je propose vous laisse avec un fichier
SpFermat.dat
. Merci de me faire connaitre s'il convient aux données que vous avez.