Historique des modifications [retour]
cliquez ici pour masquer/afficher la révision 7
mineure

05 Jul '17, 01:06

Pathe's gravatar image

Pathe
7.6k49209252

Il s'agit de réaliser une sorte de tore ouvert vissé, en fait. On peut s'inspirer de [ce fil](https://tex.stackexchange.com/questions/142152/how-to-produce-a-3d-surface-plot-by-rotating-the-2d-plot-of-a-function) sur *TeX stackexchange*, intitulé *Comment dessiner un tore ?* On y lira qu'un tore peut par exemple être obtenu par l'équation : x(t,s) = (2+cos(t))*cos(s+pi/2) y(t,s) = (2+cos(t))*sin(s+pi/2) z(t,s) = sin(t) dont `z` et `t` appartiennent à l'intervalle `[0,2\pi]`. \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.8} \pgfplotsset{trig format plots=rad} \begin{document} \begin{tikzpicture} \begin{axis} \addplot3[surf, colormap/cool, samples=20, domain=0:2*pi,y domain=0:2*pi, z buffer=sort] ({(2+cos(x))*cos(y+pi/2)}, {(2+cos(x))*sin(y+pi/2)}, {sin(x)}); \end{axis} \end{tikzpicture} \end{document} Il s'agit de dessiner en 3D la figure 2D obtenue par les équations suivantes : x(t) = sin(3t)cos(t) y(t) = sin(3t)sin(t) Un peu de gamberge nous amène à : x(t,s) = (4+(sin(3*(t))+1.25)*cos(t))*cos(s) y(t,s) = (4+(sin(3*(t))+1.25)*cos(t))*sin(s) z(t,s) = ((sin(3*(t))+1.25)*sin(t)) Ce qui nous donne, pour une valeur définie de `s` et `t\in[0,2\pi]` (160), le code et la figure suivants : ![figure avec valeur définie][1] \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.11} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal] \addplot3[ surf, samples=50, samples y=30, colormap/cool, domain=0:360, y domain=0:180, z buffer=sort, ] ({4+(sin(3*(x))+1.25)*cos(x))*cos(160}, {4+(sin(3*(x))+1.25)*cos(x))*sin(160}, {(sin(3*(x))+1.25)*sin(x)}); \end{axis} \end{tikzpicture} \end{document} À partir de là, on peut faire varier `s`, par exemple si l'on a `s\in[0,\pi]`, on obtient les code et figure suivants : ![figure][2] \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.11} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal] \addplot3[ surf, samples=50, samples y=30, colormap/cool, domain=0:360, y domain=0:180, z buffer=sort, ] ({4+(sin(3*(x))+1.25)*cos(x))*cos(y}, {4+(sin(3*(x))+1.25)*cos(x))*sin(y}, {(sin(3*(x))+1.25)*sin(x)}); \end{axis} \end{tikzpicture} \end{document} Avec `y domain=0:360`: ![complètement][3] Fort bien, mais de vissage, point. On ajoute un multiple de y : `x+3*y`. Il est obtenu par On obtient le code suivant : % Avec LuaLaTeX en raison du calcul difficile \RequirePackage{luatex85}% solution temporaire pour standalone avec LuaTeX \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal] \addplot3[ surf, domain = 0:360, y domain = 0:360, samples = 100, samples y = 70, z buffer = sort, colormap/cool, ] ( {(6+(sin(3*(x+3*y))+1.25)*cos(x))*cos(y)}, {(6+(sin(3*(x+3*y))+1.25)*cos(x))*sin(y)}, {((sin(3*(x+3*y))+1.25)*sin(x))} ); \end{axis} \end{tikzpicture} \end{document} ![Figure finale][4] Supplément: ![Figure][5] % Avec LuaLaTeX \RequirePackage{luatex85}% solution temporaire pour standalone avec LuaTeX \documentclass{standalone} \usepackage{pgfplots} \usetikzlibrary{backgrounds} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal, hide axis, /tikz/background rectangle/.style = { left color = black, right color = black!20, shading angle = 135, }, show background rectangle ] \addplot3[ surf, shader = flat, miter limit = 1, domain = 0:360, y domain = 0:360, samples = 100, samples y = 70, z buffer = sort, colormap/hot2, ] ( {(6+(sin(3*(x+3*y))+1.25)*cos(x))*cos(y)}, {(6+(sin(3*(x+3*y))+1.25)*cos(x))*sin(y)}, {((sin(3*(x+3*y))+1.25)*sin(x))} ); \end{axis} \end{tikzpicture} \end{document} PS : cette réponse est une adaptation de celle citée plus haut ainsi que de [celle-ci](https://tex.stackexchange.com/questions/192513/rotation-transformation-of-a-parametrized-plot) avec l'aide de [cmhughes](https://tex.stackexchange.com/users/6621/cmhughes). [1]: http://texnique.fr:80/osqa/upfiles/fixed-value.png [2]: http://texnique.fr:80/osqa/upfiles/half-torus.png [3]: http://texnique.fr:80/osqa/upfiles/completement.png [4]: http://texnique.fr:80/osqa/upfiles/figure-finale.png [5]: http://texnique.fr:80/osqa/upfiles/supplement.png
cliquez ici pour masquer/afficher la révision 6
mineure

04 Jul '17, 22:57

Pathe's gravatar image

Pathe
7.6k49209252

Il s'agit de réaliser une sorte de tore ouvert vissé, en fait. On peut s'inspirer de [ce fil](https://tex.stackexchange.com/questions/142152/how-to-produce-a-3d-surface-plot-by-rotating-the-2d-plot-of-a-function) sur *TeX stackexchange*, inttulé intitulé *Comment dessiner un tore ?* On y lira qu'un tore peut par exemple être obtenu par l'équation : x(t,s) = (2+cos(t))*cos(s+pi/2) y(t,s) = (2+cos(t))*sin(s+pi/2) z(t,s) = sin(t) dont `z` et `t` appartiennent à l'intervalle `[0,2\pi]`. \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.8} \pgfplotsset{trig format plots=rad} \begin{document} \begin{tikzpicture} \begin{axis} \addplot3[surf, colormap/cool, samples=20, domain=0:2*pi,y domain=0:2*pi, z buffer=sort] ({(2+cos(x))*cos(y+pi/2)}, {(2+cos(x))*sin(y+pi/2)}, {sin(x)}); \end{axis} \end{tikzpicture} \end{document} Il s'agit de dessiner en 3D la figure 2D obtenu obtenue par les équations suivantes : x(t) = sin(3t)cos(t) y(t) = sin(3t)sin(t) Un peu de gamberge nous amène à : x(t,s) = (4+(sin(3*(t))+1.25)*cos(t))*cos(s) y(t,s) = (4+(sin(3*(t))+1.25)*cos(t))*sin(s) z(t,s) = ((sin(3*(t))+1.25)*sin(t)) Ce qui nous donne, pour une valeur définie de `s` et `t\in[0,2\pi]` (160), (160), le code et la figure suivants : ![figure avec valeur définie][1] \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.11} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal] \addplot3[ surf, samples=50, samples y=30, colormap/cool, domain=0:360, y domain=0:180, z buffer=sort, ] ({4+(sin(3*(x))+1.25)*cos(x))*cos(160}, {4+(sin(3*(x))+1.25)*cos(x))*sin(160}, {(sin(3*(x))+1.25)*sin(x)}); \end{axis} \end{tikzpicture} \end{document} À partir de là, on peut faire varier `s`, par exemple si l'on a `s\in[0,\pi]`, on obtient les code et figure suivants : ![figure][2] \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.11} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal] \addplot3[ surf, samples=50, samples y=30, colormap/cool, domain=0:360, y domain=0:180, z buffer=sort, ] ({4+(sin(3*(x))+1.25)*cos(x))*cos(y}, {4+(sin(3*(x))+1.25)*cos(x))*sin(y}, {(sin(3*(x))+1.25)*sin(x)}); \end{axis} \end{tikzpicture} \end{document} Avec `y domain=0:360`: ![complètement][3] Fort bien, mais de vissage, point. Ajouter On ajoute un multiple de y: y : `x+3*y`. Il est obtenu par le code suivant : % Avec LuaLaTeX en raison du calcul difficile \RequirePackage{luatex85}% solution temporaire pour standalone avec LuaTeX \documentclass[border=10pt]{standalone} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal] \addplot3[ surf, domain = 0:360, y domain = 0:360, samples = 100, samples y = 70, z buffer = sort, colormap/cool, ] ( {(6+(sin(3*(x+3*y))+1.25)*cos(x))*cos(y)}, {(6+(sin(3*(x+3*y))+1.25)*cos(x))*sin(y)}, {((sin(3*(x+3*y))+1.25)*sin(x))} ); \end{axis} \end{tikzpicture} \end{document} ![Figure finale][4] Supplément: ![Figure][5] % Avec LuaLaTeX \RequirePackage{luatex85}% solution temporaire pour standalone avec LuaTeX \documentclass{standalone} \usepackage{pgfplots} \usetikzlibrary{backgrounds} \begin{document} \begin{tikzpicture} \begin{axis}[axis equal, hide axis, /tikz/background rectangle/.style = { left color = black, right color = black!20, shading angle = 135, }, show background rectangle ] \addplot3[ surf, shader = flat, miter limit = 1, domain = 0:360, y domain = 0:360, samples = 100, samples y = 70, z buffer = sort, colormap/hot2, ] ( {(6+(sin(3*(x+3*y))+1.25)*cos(x))*cos(y)}, {(6+(sin(3*(x+3*y))+1.25)*cos(x))*sin(y)}, {((sin(3*(x+3*y))+1.25)*sin(x))} ); \end{axis} \end{tikzpicture} \end{document} PS : cette réponse est une adaptation de celle citée plus haut ainsi que de [celle-ci](https://tex.stackexchange.com/questions/192513/rotation-transformation-of-a-parametrized-plot) avec l'aide de [cmhughes](https://tex.stackexchange.com/users/6621/cmhughes). [1]: http://texnique.fr:80/osqa/upfiles/fixed-value.png [2]: http://texnique.fr:80/osqa/upfiles/half-torus.png [3]: http://texnique.fr:80/osqa/upfiles/completement.png [4]: http://texnique.fr:80/osqa/upfiles/figure-finale.png [5]: http://texnique.fr:80/osqa/upfiles/supplement.png
cliquez ici pour masquer/afficher la révision 5

04 Jul '17, 20:15

stefan's gravatar image

stefan
10618

cliquez ici pour masquer/afficher la révision 4

04 Jul '17, 20:13

stefan's gravatar image

stefan
10618

cliquez ici pour masquer/afficher la révision 3
Ajouter multiple de y

04 Jul '17, 19:29

stefan's gravatar image

stefan
10618

cliquez ici pour masquer/afficher la révision 2
PS

04 Jul '17, 19:17

stefan's gravatar image

stefan
10618

cliquez ici pour masquer/afficher la révision 1

04 Jul '17, 19:13

stefan's gravatar image

stefan
10618