
Ich versuche, mit TikZ Bruchdiagramme für Kinder zu erstellen.
Gibt es eine elegante Möglichkeit, die Oberseite dieses 1/2-Diagramms so zu fixieren, dass sie skaliert werden kann, wenn ich beispielsweise 29/6 mit Dreiecken anzeigen möchte ... und eventuell andere Formen? Es scheint, dass sich Schnittpunkte von Pfaden, die sich in einem anderen Winkel als 90 Grad treffen, nicht ganz so schneiden, wie ich es möchte ...
\documentclass{article}
\usepackage{tikz}
\usepackage{xcolor}
\begin{document}
\(\frac{1}{2}\)
\begin{tikzpicture}
\filldraw[fill=gray, draw=black, thick] (0,0)--(1,0)--(1,2)--cycle;
\draw[thick] (1,0)--(2,0)--(1,2)--cycle;
\end{tikzpicture}
\end{document}
Antwort1
Ich bin nicht sicher, ob das das ist, was Sie wollen, aber wenn man sich das verlinkte Bild ansieht, scheint es so zu sein: Ich habe etwas Code vonIgnasi's answer
ZuWie zeichne ich in TikZ ein dreieckiges Gitter?. Da das Dreiecksgitter mit \node
s aufgebaut ist, kann man für die Füllung ganz einfach deren Anker verwenden, die ich in der background
Ebene platziert habe:
Der Code:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{shapes,backgrounds}
\newcommand\grid[1]{
\foreach \i [count=\row from 0, remember=\row as \lastrow (initially 0)] in {0,...,#1}
{
\foreach \j [count=\column from 0, remember=\column as \lastcolumn (initially 0)] in {0,...,\i}
{
\ifnum\row=0
\node[tri](0-0) {};
\else
\ifnum\column=0
\node[tri, anchor=north](\row-0) at (\lastrow-0.corner 2) {};
\else
\node[tri, anchor=north](\row-\column) at (\lastrow-\lastcolumn.corner 3) {};
\fi
\fi
}
}
}
\begin{document}
\begin{tikzpicture}[
tri/.style={
draw,
regular polygon,
regular polygon sides=3,
minimum size=2cm,
inner sep=0pt,
outer sep=0pt,
line width=1pt
}
]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(0-0.corner 1) --
(3-3.corner 3) --
(3-0.corner 2) --
cycle;
\end{pgfonlayer}
\begin{scope}[xshift=8cm]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(3-0.corner 1) --
(3-3.corner 1) --
(3-3.corner 3) --
(3-0.corner 2) --
cycle;
\end{pgfonlayer}
\end{scope}
\begin{scope}[yshift=-8cm]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(2-0.corner 1) --
(2-2.corner 1) --
(3-1.corner 3) --
cycle;
\end{pgfonlayer}
\end{scope}
\begin{scope}[xshift=8cm,yshift=-8cm]
\grid{3}
\begin{pgfonlayer}{background}
\filldraw[cyan!30]
(0-0.corner 1) --
(3-1.corner 3) --
(3-0.corner 2) --
cycle;
\end{pgfonlayer}
\draw[line width=1pt]
(0-0.corner 1) -- (3-1.corner 3);
\end{scope}
\end{tikzpicture}
\end{document}
Antwort2
Eine Möglichkeit besteht darin, zuerst zu füllen und dann einen einzelnen Pfad zu zeichnen:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\fill [fill=gray] (0,0)--(1,0)--(1,2)--cycle;
\draw[thick] (0,0) -- (1,2) edge (1,0) -- (2,0) -- cycle;
\end{tikzpicture}
\end{document}
Was ist ein edge
?
Ein edge
ist ein unabhängiger Pfadabschnitt, der in eine andere Richtung abgehen kann und mit völlig anderen Optionen als der Hauptpfad gezeichnet werden kann (oder nicht). Er unterbricht den Hauptpfad nicht. In diesem Fall edge
zeichnet der die Senkrechte nach unten, aber der Hauptpfad führt vom Scheitelpunkt aus weiter, als wäre kein edge
angegeben worden. edge
s sind besonders für komplexe Pfade nützlich. Sie werden nach dem Hauptpfad erstellt.
Um zu sehen, was passiert, ändern Sie die Pfadangabe wie folgt:
\draw[thick] (0,0) -- (1,2) edge [red] (1,0) -- (2,0) -- cycle;
Standardmäßig edge
übernimmt Optionen vom Hauptpfad, daher ist dies hier thick
aber, anders als der Hauptpfad, ist es red
. Im obigen Bild wurden natürlich keine besonderen Optionen angegeben, daher edge
war auch dies die Standardfarbe und mit dem Hauptpfad vermischt.