Saltar al contenido

¿Cuál es la forma más sencilla de dibujar un cubo 3D con TikZ?

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.

  1. 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.

    cubitos

  2. ¿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:

    ingrese la descripción de la imagen aquícubo transparente

  3. ¿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.

    cubo con esquinas

  4. ¿Cómo dibujar paralelepípedo y cubo con LaTeX?

Una respuesta proporciona una pic para dibujar cuboides anotados como estos:

cuboides anotados

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

ingrese la descripción de la imagen aquí

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

salida de código de muestra

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *