Indagamos en distintos espacios para mostrarte la solución a tu inquietud, en caso de dudas déjanos tu pregunta y contestaremos sin falta, porque estamos para servirte.
Solución:
¡Dibujar un cubo parece ser una tarea bastante común! Aquí hay algunas otras preguntas que involucran dibujar cubos. No siempre es correcto fusionarlos, pero pensé que valía la pena hacer un poco más que solo vincularlos. Entonces, esta respuesta es una lista de Community Wiki (por lo que casi cualquier persona puede actualizarla) de las otras preguntas cúbicas aquí. La intención es incluir al menos una imagen representativa de las respuestas.
-
Necesita ayuda para crear un cubo 3D a partir de un conjunto de nodos 2D en TikZ
La respuesta de Tom Bombadil aquí está en camino de convertirse en un paquete, lo que demuestra que domina tanto los cubos como los anillos.
-
¿Cómo dibujar un cubo con TikZ donde todas las caras tienen un color distinto?
La respuesta aceptada produce la primera imagen y la segunda es otra de la misma pregunta:
-
¿Hay alguna forma de dibujar líneas TikZ en el “interior” o “exterior” de una ruta?
Aunque obviamente no se trata de cubos, la motivación era dibujar un cubo y acertar en las esquinas.
-
¿Cómo dibujar paralelepípedo y cubo con LaTeX?
Una respuesta proporciona una pic
para dibujar cuboides anotados como estos:
Estoy seguro de que hay mejores formas, pero aquí hay una:
documentclassarticle
usepackagetikz
begindocument
begintikzpicture
pgfmathsetmacrocubex2
pgfmathsetmacrocubey1
pgfmathsetmacrocubez1
draw[red,fill=yellow] (0,0,0) -- ++(-cubex,0,0) -- ++(0,-cubey,0) -- ++(cubex,0,0) -- cycle;
draw[red,fill=yellow] (0,0,0) -- ++(0,0,-cubez) -- ++(0,-cubey,0) -- ++(0,0,cubez) -- cycle;
draw[red,fill=yellow] (0,0,0) -- ++(-cubex,0,0) -- ++(0,0,-cubez) -- ++(cubex,0,0) -- cycle;
endtikzpicture
enddocument
Dado que desea usar esto para diagramas UML, creo que una forma de nodo personalizada es el camino correcto a seguir aquí. Es mucho más general y requiere ponerse debajo del capó / capó de PGF, pero la recompensa es que el código de dibujo se parece a cualquier otro código de TikZ:
documentclassarticle
usepackagetikz
makeatletter
pgfkeys/pgf/.cd,
parallelepiped offset x/.initial=2mm,
parallelepiped offset y/.initial=2mm
pgfdeclareshapeparallelepiped
inheritsavedanchors[from=rectangle] % this is nearly a rectangle
inheritanchorborder[from=rectangle]
inheritanchor[from=rectangle]north
inheritanchor[from=rectangle]north west
inheritanchor[from=rectangle]north east
inheritanchor[from=rectangle]center
inheritanchor[from=rectangle]west
inheritanchor[from=rectangle]east
inheritanchor[from=rectangle]mid
inheritanchor[from=rectangle]mid west
inheritanchor[from=rectangle]mid east
inheritanchor[from=rectangle]base
inheritanchor[from=rectangle]base west
inheritanchor[from=rectangle]base east
inheritanchor[from=rectangle]south
inheritanchor[from=rectangle]south west
inheritanchor[from=rectangle]south east
backgroundpath
% store lower right in xa/ya and upper right in xb/yb
southwest [email protected]=[email protected] [email protected]=[email protected]
northeast [email protected]=[email protected] [email protected]=[email protected]
pgfmathsetlength[email protected]pgfkeysvalueof/pgf/parallelepiped offset x
pgfmathsetlength[email protected]pgfkeysvalueof/pgf/parallelepiped offset y
def[email protected]pgfpoint[email protected][email protected]
pgfpathmovetopgfqpoint[email protected][email protected]
pgfpathlinetopgfqpoint[email protected][email protected]
pgfpathlinetopgfqpoint[email protected][email protected]
pgfpathlinetopgfqpoint[email protected][email protected]
pgfpathclose
pgfpathmovetopgfqpoint[email protected][email protected]
pgfpathlinetopgfpointaddpgfpoint[email protected][email protected][email protected]
pgfpathlinetopgfpointaddpgfpoint[email protected][email protected][email protected]
pgfpathlinetopgfpointaddpgfpoint[email protected][email protected][email protected]
pgfpathlinetopgfqpoint[email protected][email protected]
pgfpathmovetopgfqpoint[email protected][email protected]
pgfpathlinetopgfpointaddpgfpoint[email protected][email protected][email protected]
makeatother
begindocument
begintikzpicture
node[parallelepiped,draw=red,fill=yellow,
minimum width=2.5cm,minimum height=1.5cm] (1) Node One;
node[parallelepiped,draw=blue,fill=green,
minimum height=2.5cm,minimum width=1.5cm,parallelepiped offset x=4mm] (2)
at (6,0) Node Two;
draw[ultra thick, ->] (1) -- (2);
endtikzpicture
enddocument
Eche un vistazo a los archivos pgflibraryshapes.*.code.tex
en la distribución PGF para aprender a hacer este tipo de cosas. Empecé con una copia del cross out
nodo que, como éste, hereda del rectangle
nodo. Una mejora adicional sería agregar anclajes a las caras / bordes derecho / superior, pero como puede adivinar, ya he dedicado suficiente tiempo a esto. :-D
Comentarios y valoraciones del tutorial
Si te gusta el proyecto, eres capaz de dejar una división acerca de qué te ha impresionado de esta reseña.