Problem mit \newcommand welches rechnen soll Thema ist als GELÖST markiert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Temporärname01

Problem mit \newcommand welches rechnen soll

Beitrag von Temporärname01 »

Hallo Forum.
Ich arbeite gerade an einer Präsentation und möchte daher mit Tikz ein par platonische Körper zeichnen (bitte keine Vorschläge machen, einfach Bilder einzubinden).

Um mir die ganze Perspektivumrechnungsarbeit zu ersparen hab ich mir einen neuen Befehl mit \newcommand geschrieben.

Hier mal ein kleines Beispiel:
\documentclass{article}

%ams-packages
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

%zeichnungen
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}

\newcommand{\coord}[3]{($ (#1,0)+(0,#2)+#3*(.382,.382) $ )}
\begin{document}
	\begin{tikzpicture}
		\coordinate (P1) at \coord{0}{0}{0};
		\coordinate (P2) at \coord{0}{0}{1};
		\coordinate (P3) at \coord{1}{0}{1};
		\coordinate (P4) at \coord{1}{0}{0};
		\coordinate (P5) at \coord{0}{1}{0};
		\coordinate (P6) at \coord{0}{1}{1};
		\coordinate (P7) at \coord{1}{1}{1};
		\coordinate (P8) at \coord{1}{1}{0};
		
		\draw (P1)--(P2)--(P3)--(P4)--cycle;
		\draw (P5)--(P6)--(P7)--(P8)--cycle;
		\draw (P1)--(P5);
		\draw (P2)--(P6);
		\draw (P3)--(P7);
		\draw (P4)--(P8);
	\end{tikzpicture}
\end{document}
Diese erzeugt eine Menge Fehlermeldungen.

Wenn ich jedoch alles per Hand eingebe funktionierts.
\documentclass{article}

%ams-packages
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

%zeichnungen
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}


\begin{document}
	\begin{tikzpicture}
		\coordinate (P1) at ($(0,0)+(0,0)+0*(.382,.382)$);
		\coordinate (P2) at ($(0,0)+(0,0)+1*(.382,.382)$);
		\coordinate (P3) at ($(1,0)+(0,0)+1*(.382,.382)$);
		\coordinate (P4) at ($(1,0)+(0,0)+0*(.382,.382)$);
		\coordinate (P5) at ($(0,0)+(0,1)+0*(.382,.382)$);
		\coordinate (P6) at ($(0,0)+(0,1)+1*(.382,.382)$);
		\coordinate (P7) at ($(1,0)+(0,1)+1*(.382,.382)$);
		\coordinate (P8) at ($(1,0)+(0,1)+0*(.382,.382)$);
		
		\draw (P1)--(P2)--(P3)--(P4)--cycle;
		\draw (P5)--(P6)--(P7)--(P8)--cycle;
		\draw (P1)--(P5);
		\draw (P2)--(P6);
		\draw (P3)--(P7);
		\draw (P4)--(P8);
	\end{tikzpicture}
\end{document}
Falls dieses Problem lösbar ist noch eine weitere Frage:
kann man den Befehl auch so konstruieren, dass man
\coords(x,y,z)
eingeben kann anstelle von
\coords{x}{y}{z}
?

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

Beitrag von esdd »

Hallo,

die drei dimensionalen Koordinaten lassen sich doch direkt eingeben:
\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \coordinate (P1) at (0,0,0);
  \coordinate (P2) at (0,0,1);
  \coordinate (P3) at (1,0,1);
  \coordinate (P4) at (1,0,0);
  \coordinate (P5) at (0,1,0);
  \coordinate (P6) at (0,1,1);
  \coordinate (P7) at (1,1,1);
  \coordinate (P8) at (1,1,0);
  %
  \draw (P1)--(P2)--(P3)--(P4)--cycle;
  \draw (P5)--(P6)--(P7)--(P8)--cycle;
  \draw (P1)--(P5);
  \draw (P2)--(P6);
  \draw (P3)--(P7);
  \draw (P4)--(P8);
\end{tikzpicture}
\end{document}
Wenn du die Perspektiven aus irgendeinem Grund selbst berechnen willst, wäre eine Möglichkeit:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand{\coord}[4]{\coordinate (#1) at ($ (#2,0)+(0,#3)+#4*(.382,.382) $ );}
\begin{document}
\begin{tikzpicture}
  \coord{P1}{0}{0}{0}
  \coord{P2}{0}{0}{1}
  \coord{P3}{1}{0}{1}
  \coord{P4}{1}{0}{0}
  \coord{P5}{0}{1}{0}
  \coord{P6}{0}{1}{1}
  \coord{P7}{1}{1}{1}
  \coord{P8}{1}{1}{0}
  %
  \draw (P1)--(P2)--(P3)--(P4)--cycle;
  \draw (P5)--(P6)--(P7)--(P8)--cycle;
  \draw (P1)--(P5);
  \draw (P2)--(P6);
  \draw (P3)--(P7);
  \draw (P4)--(P8);
\end{tikzpicture}
\end{document}
Gruß
Elke

Temporärname01

Beitrag von Temporärname01 »

:oops:

Dass das Tikz auch selbst kann wusste ich nicht...
Vielen Dank für die schnelle und hilfreiche Antwort.

Antworten