Je dessine une implantation de caméras. La convention est de dessiner en plan les appareils de prise de vue par un carré (qui représente le corps de la caméra) auquel est accolé un triangle isocèle (qui représente son objectif et, partant, son angle de prise de vue). Ça ressemblerait vaguement à ce schéma : Je cherche donc à représenter un carré et un triangle. Faute de connaître quelque chose qui serait plus adapté, j'ai choisi la librairie TikZ « shapes » : \documentclass[tikz , border = 2 mm ]{standalone} \usetikzlibrary{shapes.geometric} \tikzset{ shape square/.style = { color = black!30, draw, fill = yellow!30, inner xsep = 2.5 cm, inner ysep = 2.5 cm } } \tikzset{ shape triangle/.style = { color = black!30, draw, fill = red!30, inner xsep = 2 cm, inner ysep = 2 cm } } \begin{document} \Huge \begin{tikzpicture} \node[name = skware, shape = rectangle, shape square] {} ; \node[name = treeangle, shape = isosceles triangle, shape triangle, inner xsep = 1 cm, rotate = 180] at (skware.east){} ; \end{tikzpicture} \end{document} Je voudrais que l' EDIT : je suis également preneur de toute suggestion permettant d'imiter ledit schéma sans utiliser cette librairie ! Le tout est que je puisse le positionner sur mon plan à plusieurs reprises et que les objectifs pointent dans différentes directions (chose que je pense réaliser via le paramètre Enfin, je suis tout à fait prêt à reconnaître que, si ça se trouve, je suis victime du syndrome XYZ ! Posée 27 Jui '23, 23:20 Pathe ♦♦ |
C'est un bel exemple où l'utilisation des Ici, je définis la
Ces paramètres sont stockés dans des macros mais comme le code dessinant la caméra est dans un groupe (entre Lors du dessin d'une \documentclass{standalone} \usepackage{tikz} \tikzset{ % on crée la famille 'camera' pour définir ses clés camera/.is family, % quelques paramètres, camera/rotate/.store in=\cameraangle, camera/size/.store in=\camerasize, camera/fill/.store in=\camerafill, camera/draw/.store in=\cameradraw, % le style définissant les valeurs par défaut camera/default/.style={ rotate=0, size=1cm, fill=white, draw=black, }, % la camera elle-même camera/.pic={ \bgroup % on récupère les paramètres (via la famille 'camera') \tikzset{camera,default,#1} \coordinate (-center) at (0,0); \begin{scope}[rotate around={\cameraangle:(-center)}] % lens \path[draw=\cameradraw,fill=\camerafill,rounded corners=.5mm] (-center) ++(.3*\camerasize,0) -- ++(.6*\camerasize,-.45*\camerasize) -- ++(0,.9*\camerasize) -- cycle; % body \path[draw=\cameradraw,fill=\camerafill,rounded corners=.5mm] (-center) ++(-.6*\camerasize,-.5*\camerasize) coordinate (-north west) -- ++(1.2*\camerasize,0) coordinate (-north east) -- ++(0,1*\camerasize) coordinate (-south east) -- ++(-1.2*\camerasize,0) coordinate (-south west) -- cycle; \end{scope} \egroup }, } \begin{document} \begin{tikzpicture} \path (0,0) pic (c1) {camera} (2,2) pic (c2) {camera={rotate=45,size=5mm,fill=pink,draw=red}}; \fill[blue] (c1-center) circle(2pt) (c2-center) circle(2pt); \end{tikzpicture} \end{document} Publiée 09 Jul '23, 07:42 Paul Gaborit |
J'ai rédigé ceci : \documentclass[tikz , border = 2 mm ]{standalone} \usetikzlibrary{shapes.geometric} \usetikzlibrary{positioning} \tikzset{ lens/.style = { draw , thick , regular polygon , regular polygon sides=3 , anchor = north } } \tikzset{ body/.style = { draw , thick , fill = white , regular polygon , regular polygon sides=4 } } \newcommand\camera[3]{% \begin{scope} \node[lens, rotate around = {#3:(0, 0)}, inner sep = .7 mm] (a) at (#1, #2) {~} ; \node[body, rotate around = {#3:(0, 0)}, inner sep = .5 mm] (a) at (#1, #2) {~~} ; \end{scope} } \begin{document} \begin{tikzpicture} \camera{2}{2}{10} \end{tikzpicture} \end{document} Les trois arguments de la commande EDIT : j'avais oublié le paramètre Publiée 28 Jui '23, 08:08 Pathe ♦♦ Sur ce, je n'ai toujours pas pigé comment positionner un point d'un polygone par rapport à un point précis d'un autre polygone. Donc n'hésitez pas à répondre !
(29 Jui '23, 15:19)
Pathe ♦♦
|