En dessinant avec TikZ en trois dimensions, comment spécifier un point de vue ? L'ECM ci-dessous figure trois rectangles :
Comment indiquer à TikZ de figurer ces rectangles comme vus depuis le point de coordonnées (8, 5, -3) ? Ouvrir dans l'éditeur Overleaf
\documentclass[border = 8 mm]{standalone} \usepackage{tikz} \usetikzlibrary{3d} \begin{document} \begin{tikzpicture} % base XY \draw[fill = red] (0, 0, 0) -- (5, 0, 0) -- (5, 3, 0) -- (0, 3, 0) -- cycle ; % face XZ \draw (0, 0, 0) -- (5, 0, 0) -- (5, 0, 2) -- (0, 0, 2) -- cycle ; % côté YZ \draw (0, 0, 0) -- (0, 3, 0) -- (0, 3, 2) -- (0, 0, 2) -- cycle ; \end{tikzpicture} \end{document} Posée 02 Mar '19, 20:49 Pathe ♦♦ |
Vous pouvez changer la définition des vecteurs d'unité pour changer votre point de vue. Par défaut z est L’image suivante n’est pas exactement comme vu de (8, 5, -3) mais j'assume que l’on pourrait calculer la valeur nécessaire... Ouvrir dans l'éditeur Overleaf
\documentclass[border = 8 mm]{standalone} \usepackage{tikz} \usetikzlibrary{3d} \begin{document} \begin{tikzpicture}[x={(1cm,0cm)}, y={(0cm,1cm)}, z={(10mm, 10mm)}]% default z value: (-3.85mm, -3.85mm) % base XY \draw[fill = red] (0, 0, 0) -- (5, 0, 0) -- (5, 3, 0) -- (0, 3, 0) -- cycle ; % face XZ \draw (0, 0, 0) -- (5, 0, 0) -- (5, 0, 2) -- (0, 0, 2) -- cycle ; % côté YZ \draw (0, 0, 0) -- (0, 3, 0) -- (0, 3, 2) -- (0, 0, 2) -- cycle ; \node at (0, 0, 0) {0,0,0}; \node at (5, 3, 0) {5,3,0}; \node at (8, 5, -3) {8, 5, -3}; \end{tikzpicture} \end{document} Le même avec la bibliothèque Ouvrir dans l'éditeur Overleaf
\documentclass[border = 8 mm]{standalone} \usepackage{tikz} \usetikzlibrary{3d} \begin{document} \begin{tikzpicture}[x={(1cm,0cm)}, y={(0cm,1cm)}, z={(3.85mm, 3.85mm)}]% default z value: (-3.85mm, -3.85mm) % base XY \begin{scope}[canvas is xy plane at z=0] \draw[fill = red] (0, 0) rectangle (5, 3); \end{scope} % face XZ \begin{scope}[canvas is xz plane at y=0] \draw (0, 0) rectangle (5, 2); \end{scope} % côté YZ \begin{scope}[canvas is yz plane at x=0] \draw (0, 0 ) rectangle (3, 2); \end{scope} \end{tikzpicture} \end{document} Un autre exemple de la documentation de tikz "40.3 Examples". Changez le Ouvrir dans l'éditeur Overleaf
\documentclass[border = 8 mm]{standalone} \usepackage{tikz} \usetikzlibrary{3d} \begin{document} \begin{tikzpicture}[z={(10:10mm)},x={(-35:5mm)}] \def\wave{ \draw[fill,thick,fill opacity=.2] (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0) sin (5,1) cos (6,0) sin (7,-1) cos (8,0) sin (9,1) cos (10,0)sin (11,-1)cos (12,0); \foreach \shift in {0,4,8} { \begin{scope}[xshift=\shift cm,thin] \draw (.5,0) -- (0.5,0 |- 45:1cm); \draw (1,0) -- (1,1); \draw (1.5,0) -- (1.5,0 |- 45:1cm); \draw (2.5,0) -- (2.5,0 |- -45:1cm); \draw (3,0) -- (3,-1); \draw (3.5,0) -- (3.5,0 |- -45:1cm); \end{scope} } } \begin{scope}[canvas is zy plane at x=0,fill=blue] \wave \node at (6,-1.5) [transform shape] {magnetic field}; \end{scope} \begin{scope}[canvas is zx plane at y=0,fill=red] \draw[help lines] (0,-2) grid (12,2); \wave \node at (6,1.5) [rotate=180,xscale=-1,transform shape] {electric field}; \end{scope} \end{tikzpicture} \end{document} Publiée 02 Mar '19, 22:01 samcarter Ces explications, claires et détaillées, me sont d'une grande utilité. On remarquera qu'à la différence de la documentation, qui reste à traduire, elles ont le bon goût d'être rédigées dans la langue de Molière. 😉
(02 Mar '19, 22:28)
Pathe ♦♦
|
Si vous avez besoins de plus d'exemples de la bibliothèque
3d
: https://github.com/samcarter/Extravanganza2018/blob/master/marmot/ce_mole.tex