2 dim Werte in for-Schleife zum plotten nicht kart. Koord.

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


john1337

2 dim Werte in for-Schleife zum plotten nicht kart. Koord.

Beitrag 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

Stamm-

Re: 2 dim Werte in for-Schleife zum plotten nicht kart. Koor

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

john1337

Beitrag 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^^

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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

john1337

Beitrag 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?

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

im pgfmanual findest du auch ausführliche Erklärungen zu \foreach. Dort ist das mit erklärt.

Gruß
Elke

Antworten