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, 18:12 runix |
Auch ohne irgendwelche Extradefinitionen kennt TikZ bereits ein xyz Koordinatensystem, das für solche einfachen Zeichnungen direkt verwendet werden kann: 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} 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. beantwortet 28 Okt '15, 21:37 esdd 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, 22:11)
cis
Naja, die Koordinaten müssen natürlich auch automatisch generiert werden aus
(28 Okt '15, 23: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, 21: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, 22:15)
stefan ♦♦
|
Ich sehe gerade, das der editierbare Code die z-Verkürzung kontrolliert. Allerdings erscheinen bei mir die Eckenbeschriftungen nicht richtig. Somit: \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 \draw (A) node[canvas is xy, anchor=east]{$A$}; \draw (B) node[canvas is xy, anchor=west]{$B$}; \draw (C) node[canvas is xy, anchor=west]{$C$}; \draw (D) node[canvas is xy, anchor=east]{$D$}; \draw (E) node[canvas is z, anchor=east]{$E$}; \draw (F) node[canvas is z, anchor=west]{$F$}; \draw (G) node[canvas is z, anchor=west]{$G$}; \draw (H) node[canvas is z, anchor=east]{$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} beantwortet 21 Jul '23, 12:27 Arianndi |
Hallo, das erzeugte Bild ist eine Kavalierprojektion, bei der die z-Achse im 45° Winkel angetragen wird. Das in der Schule geforderte Schrägbild ist eine Kavalierprojektion, bei der die z-Achse im 45°-Winkel und auf 50% verkürzt dargestellt wird. Es wäre schön, Schrägbilder automatisch erzeugen zu können. Das gezeigte Beispiel zeigt eine weniger starke Verkürzung. Kann man irgendwie rausfinden, wieviel die z-Richtung verkürzt wird und gibt es eine Möglichkeit, das anzupassen? beantwortet 21 Jul '23, 11:57 Arianndi Willkommen auf TeXwelt.de! Auf welche der Antworten beziehst Du Dich? Du solltest es besser als Kommentar zur betreffenden Antwort schreiben, nicht als eigene Antwort auf die Frage. Hier sind Antworten stets "echte" Antworten, keine Gespräche oder Rückfragen, sondern Lösungen. Das verbessert die Übersicht erheblich für die Archivierung der Lösungen. Ungewohnt und anders als in Webforen, doch innovativ und nutzbarer. Bemerkungen gern wie hier als Kommentare.
(21 Jul '23, 12:15)
stefan ♦♦
|
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} beantwortet 28 Okt '15, 19:27 cis Die Strecken nach hinten sind doch zu lang oder?
(28 Okt '15, 19:47)
runix
Ich weiß auch nicht, warum es mit
(28 Okt '15, 20:08)
cis
Passt. Eine Frage:
In welcher Zeile deines Codes wird
(28 Okt '15, 20:15)
runix
Bitte nicht
(28 Okt '15, 20:23)
saputello
ok......... ;)
(28 Okt '15, 20:46)
cis
|
Ich habe eine halbwegs gute Lösung. Ich kann sie auch gerne posten, wenn keiner der Profis antworten möchte.