Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

This question is related to my previous question How to draw a Catalan number diagram on TikZ

I would like to be able to draw generalized Catalan number diagrams using Tikz. More concretely, I would like a 3 dimensional version of the previous 2 dimensional one. Three dimensional Catalan numbers are defined as 3-dimensional lattice paths using steps (1,0,0),(0,1,0) and (0,0,1) from the origin to the point (n,n,n), the points in the path satisfy 0 ≤ x_1 ≤ x_2 ≤ x_3.

share|improve this question
5  
Did you try just adding one more coordinate (for the z value) to all the points in the earlier solutions which only have xand y? –  Peter Grill Sep 20 '12 at 21:40
3  
Could you show a picture of the expected result? –  Paul Gaborit Sep 20 '12 at 22:01
    
@PeterGrill There are more paths in a three-dimensional lattice than that... That way - if it works just like that, what I doubt - would only show the same paths I had but projected on the xy-plane. –  Combin Sep 21 '12 at 12:10
    
@PaulGaborit I would like it to look like the "empty room" in the link below (a 3d-grid) but with a colored path moving from (0,0,0) to (n,n,n). (techpubs.sgi.com/library/dynaweb_docs/0650/SGI_EndUser/books/…) –  Combin Sep 21 '12 at 12:16
add comment

2 Answers

As, for my taste, Paul Gaborit's answer is a little to unornamental, here's another one:

Code

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}

\begin{document}

\newcommand{\xangle}{-10}
\newcommand{\yangle}{230}
\newcommand{\zangle}{270}

\newcommand{\xlength}{1}
\newcommand{\ylength}{1}
\newcommand{\zlength}{1}

\pgfmathsetmacro{\xx}{\xlength*cos(\xangle)}
\pgfmathsetmacro{\xy}{\xlength*sin(\xangle)}
\pgfmathsetmacro{\yx}{\ylength*cos(\yangle)}
\pgfmathsetmacro{\yy}{\ylength*sin(\yangle)}
\pgfmathsetmacro{\zx}{\zlength*cos(\zangle)}
\pgfmathsetmacro{\zy}{\zlength*sin(\zangle)}

\begin{tikzpicture}
[   x={(\xx cm,\xy cm)},
    y={(\yx cm,\yy cm)},
    z={(\zx cm,\zy cm)},
]
\foreach \a in {0,...,3}
{   \draw[help lines]
    (\a,0,0) -- (\a,0,3)
    (0,0,\a) -- (3,0,\a)
    node at (\a,0,-0.2) {\tiny\a}
    node at (\a,3,3.2) {\tiny\a}

    (0,\a,0) -- (0,\a,3)
    (0,0,\a) -- (0,3,\a)
    node at (0,\a,-0.2) {\tiny\a}
    node at (3,\a,3.2) {\tiny\a}

    (0,\a,3) -- (3,\a,3)
    (\a,0,3) -- (\a,3,3)
    node at (3.2,0,\a) {\tiny\a}
    node at (0,3.2,\a) {\tiny\a};
}

\node at (1.5,0,-0.5) {x};
\node at (1.5,3,3.5) {x};

\node at (0,1.5,-1) {y};
\node at (3,1.5,4) {y};

\node at (3.6,0,1.5) {z};
\node at (0,3.6,1.5) {z};


\draw[red,thin] (0,0,0) -- (0,0,3);
\draw[red,thin] (0,0,0) -- (0,3,3);
\draw[red,thin] (0,0,0) -- (3,3,3);
\draw[red,thin] (0,0,3) -- (0,3,3);
\draw[red,thin] (0,0,3) -- (3,3,3);
\draw[red,thin] (0,3,3) -- (3,3,3);

\draw[very thick,blue]
    (0,0,0)
    -- ++(0,0,1)
    -- ++(0,1,0)
    -- ++(0,0,1)
    -- ++(1,0,0)
    -- ++(0,1,0)
    -- ++(0,0,1)
    -- ++(1,0,0)
    -- ++(0,1,0)
    -- ++(1,0,0);

\draw[dashed,blue]
    (1,1,2) -- (1,1,3);

\end{tikzpicture}

\end{document}

Result

enter image description here

share|improve this answer
    
+1 Nice result! –  Paul Gaborit Sep 21 '12 at 21:07
add comment

Here is an example of 3d path:

path in 3d

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
   \foreach \a in {0,...,3}{
     \draw[help lines]
     (\a,0,0) -- (\a,0,-3)
     (0,0,-\a) -- (3,0,-\a)
     % 
     (0,\a,0) -- (0,\a,-3)
     (0,0,-\a) -- (0,3,-\a)
     %
     (0,\a,-3) -- (3,\a,-3)
     (\a,0,-3) -- (\a,3,-3)
     ;
   }

   \draw[dashed,blue]
   (1,0,-1) -- (1,1,-1)
   (3,0,-1) -- (3,1,-1)
   (3,0,-2) -- (3,2,-2)
   ;

   \draw[line width=1pt,blue]
   (0,0,0)
   -- ++(1,0,0)
   -- ++(0,1,0)
   -- ++(0,0,-1)
   -- ++(1,0,0)
   -- ++(1,0,0)
   -- ++(0,1,0)
   -- ++(0,0,-1)
   -- ++(0,1,0)
   -- ++(0,0,-1)
   ;

\end{tikzpicture}
\end{document}
share|improve this answer
    
Thank you @PaulGaborit! –  Combin Sep 21 '12 at 13:47
1  
Where do the dashed lines come from? –  Tom Bombadil Sep 21 '12 at 16:38
1  
@TomBombadil Good point! This was an oversight when copy/paste... –  Paul Gaborit Sep 21 '12 at 21:03
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.