Wie lässt sich mit TikZ ein Würfel zeichnen? Die Kantenlänge sollte mit einem Namen versehen werden. Danke.

Zusatz (oder neue Frage?): Gibt es eine TikZ Bibliothek, die für das Zeichnen von 3d Objekten hilfreich ist?

gefragt 28 Okt '15, 13:12

runix's gravatar image

runix
5191343
Akzeptiert: 50%

bearbeitet 28 Okt '15, 13:12

Ich habe eine halbwegs gute Lösung. Ich kann sie auch gerne posten, wenn keiner der Profis antworten möchte.

(28 Okt '15, 14:18) runix

Auch ohne irgendwelche Extradefinitionen kennt TikZ bereits ein xyz Koordinatensystem, das für solche einfachen Zeichnungen direkt verwendet werden kann:

alt text

Damit kann man dann auch schon einen Würfel zeichnen:

Open in Online-Editor
\documentclass[border=5pt]{standalone}
\usepackage{siunitx}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\newcommand*\kante{2}
% Ecken
\path[scale=\kante]
  (0,0,0)  coordinate [label=left:$A$]  (A)
  (1,0,0)  coordinate [label=right:$B$] (B)
  (1,1,0)  coordinate [label=right:$C$] (C)
  (0,1,0)  coordinate [label=left:$D$]  (D)
  (0,0,-1) coordinate [label=left:$E$]  (E)
  (1,0,-1) coordinate [label=right:$F$] (F)
  (1,1,-1) coordinate [label=right:$G$] (G)
  (0,1,-1) coordinate [label=left:$H$]  (H)
;
%Kanten
\draw[font=\tiny]
  (A) -- node[above] {\SI{\kante}{\cm}} (B)
      -- node[pos=.6,sloped,above]{\SI{\kante}{\cm}} (C)
      -- (D) -- cycle
  (B) -- node[sloped,above]{\SI{\kante}{\cm}}(F)
      -- (G) -- (H) --(D)
  (C) -- (G)
;
\path[dashed, very thin] (E) edge (A) edge (F) edge (H);
\end{tikzpicture}
\end{document}

alt text


Auf Wunsch von @cis ist hier noch ein Beispiel, wie man die Koordinaten in einer Schleife definieren und beschriften könnte:

Open in Online-Editor
% Ecken
\foreach \p/\d/\n in{
  {0,0,0}/left/A, {1,0,0}/right/B, {1,1,0}/right/C, {0,1,0}/left/D,
  {0,0,-1}/left/E, {1,0,-1}/right/F, {1,1,-1}/right/G, {0,1,-1}/left/H}
  \path[scale=\kante](\p)coordinate[label=\d:$\n$](\n);

Es gibt noch weitere Möglichkeiten, aber ich fand den Verzicht auf eine Schleife irgendwie übersichtlicher.

Permanenter link

beantwortet 28 Okt '15, 16:37

esdd's gravatar image

esdd
14.2k53251

bearbeitet 28 Okt '15, 17:37

Ich hätte jetzt erwartet, dass Du die Koordinaten mittels einer Schleife erzeugst (selbst war ich mir da nicht sicher, wie das geht) :()

(28 Okt '15, 17:11) cis

Naja, die Koordinaten müssen natürlich auch automatisch generiert werden aus 0 und 1 und -1 - aber schon gut.

(28 Okt '15, 18:03) cis

Ich finde, dass auch dieses Beispiel bei texample aufgenommen werden sollte. Die dortigen Beispiele sind mir ehrlich gesagt viel zu exotisch und für den Otto NormalTeXer nicht brauchbar.

(29 Okt '15, 16:41) runix

@runix Vielen Dank für den Hinweis! Auf TeXample.net sind in der Tat neben Lehrbeispielen für bestimmte Features auch abgefahrene Beispiele, denn neben Arbeitsbeispielen ist es auch als Bühne eine Werbung für die Möglichkeiten mit TikZ. Manches nahm ich auf, was ich gut fand, manches wurde eingesendet und diente einem speziellen Zweck. Auf meiner Aufgabenliste ist noch das Hinzufügen vieler Beispiele von TeXwelt und goLaTeX und mehr.

(29 Okt '15, 17:15) stefan ♦♦

alt text

Open in Online-Editor
\documentclass[border=5pt]{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[%
x={(1cm,0cm)},
y={(0cm,1cm)},
z={({0.5*cos(45)},{0.5*sin(45)})},
]
  \def\a{2}

\coordinate (A) at (0,0,0); 
\coordinate (B) at (\a,0,0) ;
\coordinate (C) at (\a,\a,0); 
\coordinate (D) at (0,\a,0); 
\coordinate (E) at (0,0,\a); 
\coordinate (F) at (\a,0,\a); 
\coordinate (G) at (\a,\a,\a); 
\coordinate (H) at (0,\a,\a);

%Ecken
\node[left= 1pt of A]{$A$};
\node[right= 1pt of B]{$B$};
\node[right= 1pt of C]{$C$};
\node[left= 1pt of D]{$D$};
\node[left= 1pt of E]{$E$};
\node[right= 1pt of F]{$F$};
\node[right= 1pt of G]{$G$};
\node[left= 1pt of H]{$H$};

%Kanten
\draw[] (A) 
-- (B)  node[midway, below]{\tiny$\a$cm}
-- (C)      node[midway, right]{\tiny$\a$cm}
-- (D)  node[midway, above]{\tiny$\a$cm}
-- (A)  node[midway, left]{\tiny$\a$cm};
\draw[] (B) -- (F) -- (G) -- (C);
\draw[] (G) -- (H) -- (D);
\draw[densely dashed] (A) -- (E) -- (F);
\draw[densely dashed] (E) -- (H);

\end{tikzpicture}

\end{document}
Permanenter link

beantwortet 28 Okt '15, 14:27

cis's gravatar image

cis
5.4k860167

bearbeitet 28 Okt '15, 15:46

Die Strecken nach hinten sind doch zu lang oder?

(28 Okt '15, 14:47) runix

Ich weiß auch nicht, warum es mit z={({cos(45)},{sin(45)})}, immer so blöd wird. Jetzt ggf. besser.

(28 Okt '15, 15:08) cis

Passt. Eine Frage: In welcher Zeile deines Codes wird a spezifiziert?

(28 Okt '15, 15:15) runix

Bitte nicht \a außerhalb einer Gruppe mit \def definieren. \a ist bereits definiert, wie Du gemerkt hättest, wenn Du LaTeX-konform \newcommand verwendet hättest. Wenn es schon unbedingt \a sein muss, dann unbedingt die (Um-)Definition innerhalb der tikzpicture-Umgebung vornehmen, damit die Umdefinierung lokal zur Umgebung bleibt!

(28 Okt '15, 15:23) saputello

ok......... ;)

(28 Okt '15, 15:46) cis
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×19

Frage gestellt: 28 Okt '15, 13:12

Frage wurde angeschaut: 2,114 Mal

Zuletzt aktualisiert: 29 Okt '15, 17:15