Isometrisches Raster mit Tikz

Isometrisches Raster mit Tikz

Mit Tikz lässt sich ein sehr einfaches quadratisches Raster erstellen:

\documentclass{article}
\usepackage[margin=.25in]{geometry}
\usepackage{tikz}
\pagestyle{empty}

\begin{document}
\centering
\tikz\draw [thin] (0,0) grid (20,26)
\end{document}

Wie kann man einisometrisches Gittermit tikz? Ich fandeins mit PSTricks, aber es ist nicht einfach anzupassen. Und ich hätte gerne eine Lösung, die möglichst keine PSTricks erfordert.

Antwort1

Ein Beispiel mit kiteFormen. Der Befehl \isogrid{rows}{cols}zeichnet ein isometrisches Raster mit rows+1Zeilen und cols+1.

Die Verwendung nodesvon Knotenankern anstelle von reinen Linien kann beim Zeichnen über das Raster hilfreich sein.

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{shapes}

\tikzset{
    iso/.style={kite, draw, kite vertex angles=120,  minimum size=1cm, outer sep=0pt}
}

\newcommand{\isogrid}[2]{
\foreach \i [count=\row from 0, remember=\row as \lastrow (initially 0)] in {0,...,#1}{
    \foreach \j [count=\col from 0, remember=\col as \lastcol (initially 0)] in {0,...,#2}{
        \ifnum\row=0
            \ifnum\col=0
                \node[iso] (\row-\col) {\row-\col};
            \else
                \node[iso, anchor=left vertex] (\row-\col) at (\row-\lastcol.right vertex) {\row-\col};
            \fi
        \else
            \ifnum\col=0
                \node[iso, anchor=upper vertex] (\row-\col) at (\lastrow-\col.lower vertex) {\row-\col};
            \else
                \node[iso, anchor=left vertex] (\row-\col) at (\row-\lastcol.right vertex) {\row-\col};
            \fi
        \fi
        }
    }
\draw (0-0.left vertex)--(#1-0.left vertex);
\foreach \i in {0,...,#2}{
    \draw (0-\i.upper vertex)--(#1-\i.lower vertex);
    \draw (0-\i.right vertex)--(#1-\i.right vertex);
}
}

\begin{document}
\begin{tikzpicture}

\isogrid{19}{9}
\begin{scope}[line width=2pt]
\draw (1-3.right vertex)--(3-5.right vertex)--(7-1.right vertex)--(5-0.left vertex)--cycle;
\draw (5-0.left vertex)--(13-0.left vertex)--(15-1.right vertex)--(7-1.right vertex);
\draw (3-5.right vertex)--(5-5.right vertex)--(7-7.right vertex)--(10-7.right vertex)--(11-8.right vertex)--(12-7.right vertex)--(13-8.right vertex)--(15-7.upper vertex)--(13-5.upper vertex)--(10-5.upper vertex)--(8-3.upper vertex)--(5-5.right vertex);
\draw (9-5.lower vertex)--(7-7.right vertex);
\draw (12-5.lower vertex)--(10-7.right vertex);
\draw (11-8.right vertex)--(16-8.right vertex)--(17-7.lower vertex)--(13-3.lower vertex)--(15-1.right vertex);
\draw (7-3.lower vertex)--(13-3.lower vertex);
\draw (14-7.lower vertex)--(17-7.lower vertex);

\draw[dashed] (13-0.left vertex)--(9-3.right vertex)--(1-3.right vertex);
\draw[dashed] (9-3.right vertex)--(14-8.right vertex)--(15-7.right vertex)--(16-8.right vertex);
\draw[dashed] (12-7.right vertex)--(15-7.right vertex);
\end{scope}
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen