Seite 1 von 1
2 dim Werte in for-Schleife zum plotten nicht kart. Koord.
Verfasst: Mo 11. Feb 2013, 01:51
von john1337
Hallo,
ich nutze tikzpicture und habe damit ein nicht kartesisches Koordintensystem zum plotten von Sechsecken gebaut.
\draw [fill=red] (3.464ex*\x-3.464ex*\y+17.32ex,-6ex*\x-6ex*\y+30ex) +(30:4ex) -- +(90:4ex) -- +(150:4ex) -- +(210:4ex) -- +(270:4ex) -- +(330:4ex)-- cycle;
Funktioniert auch wunderbar, nur für größere Gebilde ist das nicht sehr benutzerfreundlich, da jedes mal der gesamte Code geschrieben werden muss . Ein Makro funktioniert nicht, da ich jedes mal eine tikzpicture Umgebung erzeugen werden müsste. Mit zwei Schleife lassen sich nur Rauten zeichnen.
Ich bräuchte praktisch 2-dimensionale Werte in einer For-Schleife.
Nur wie? Hab dazu Null gefunden. Als obs das gar nicht gibt.
Möglicher Weise lässt sich auch beim Makro die Umgebungsanforderung in der Definition unterdrücken. Da weiß ich allerdings genauso wenig weiter.
Hoffe es ist klar was ich meine und schon mal danke für eure Hilfe.
John
Re: 2 dim Werte in for-Schleife zum plotten nicht kart. Koor
Verfasst: Mo 11. Feb 2013, 09:39
von Stamm-
john1337 hat geschrieben:[…] Funktioniert auch wunderbar, nur für größere Gebilde ist das nicht sehr benutzerfreundlich, da jedes mal der gesamte Code geschrieben werden muss . […]
Funktioniert bei mir gar nicht. Mach also ein ordentliches
Minimalbeispiel, so dass man nicht lange herum raten muss.
Verfasst: Mo 11. Feb 2013, 11:02
von john1337
sollte eigentlich auch bei euch gehen. hier das gewünschte minimal beispiel:
\documentclass{paper}
\usepackage{tikz}
\newcommand\six[2]{ \begin{tikzpicture}[thick] \draw [fill=red] (3.464ex*#1-3.464ex*#2+17.32ex,-6ex*#1-6ex*#2+30ex) +(30:4ex) -- +(90:4ex) -- +(150:4ex) -- +(210:4ex) -- +(270:4ex) -- +(330:4ex)-- cycle;\end{tikzpicture}}
\begin{document}
\begin{tikzpicture}[thick]
\foreach \x in{0,...,5}{
\foreach \y in{0,...,5}{
\draw [fill=red] (3.464ex*\x-3.464ex*\y+17.32ex,-6ex*\x-6ex*\y+30ex) +(30:4ex) -- +(90:4ex) -- +(150:4ex) -- +(210:4ex) -- +(270:4ex) -- +(330:4ex)-- cycle;
\draw [fill=blue] (3.464ex*\x-3.464ex*\y-17.32ex,-6ex*\x-6ex*\y+30ex) +(30:4ex) -- +(90:4ex) -- +(150:4ex) -- +(210:4ex) -- +(270:4ex) -- +(330:4ex)-- cycle;
\draw [fill=green] (3.464ex*\x-3.464ex*\y,-6ex*\x-6ex*\y) +(30:4ex) -- +(90:4ex) -- +(150:4ex) -- +(210:4ex) -- +(270:4ex) -- +(330:4ex)-- cycle;}}
\end{tikzpicture}
\six{2}{5}
\six{3}{4}
\end{document}
wie man sieht erzeugt das makro jedes mal eine neue Umgebung mit neuem Ursprung und die Punkte (2,5) und (3,4) liegen einfach nur nebeneinander.
Die forschleife füllt halt ganze Flächen, da jedes x mit jedem y kombiniert wird. will aber nur ganz bestimmte Punkte anzeigen(wie beim Makro-Aufruf)
Hoffe jetzt ist alles klar und es regnet Lösungsvorschläge. Danke^^
Verfasst: Mo 11. Feb 2013, 13:54
von esdd
Hallo,
vielleicht hilft dir das folgende weiter:
\documentclass{paper}
\usepackage{tikz}
\newcommand\six[2]{\draw [fill=red] (3.464ex*#1-3.464ex*#2+17.32ex,-6ex*#1-6ex*#2+30ex) +(30:4ex) -- +(90:4ex) -- +(150:4ex) -- +(210:4ex) -- +(270:4ex) -- +(330:4ex)-- cycle;}
\begin{document}
\begin{tikzpicture}[thick]
\foreach \x/\y in {2/5,3/4}{\six{\x}{\y}}
\end{tikzpicture}
\end{document}
Gruß
Elke
Verfasst: Mo 11. Feb 2013, 18:16
von john1337
wow, das ist genau das was es tun sollte. nun kann man zweidimensionale werte plotten. mal so am rande wo nach hätte ich suchen müssen um diese Syntax zu finden?
Verfasst: Mo 11. Feb 2013, 19:53
von esdd
Hallo,
im
pgfmanual findest du auch ausführliche Erklärungen zu \foreach. Dort ist das mit erklärt.
Gruß
Elke