Что такое edge?

Что такое edge?

Я пытаюсь создать диаграммы дробей для детей с помощью TikZ.

Есть ли элегантный способ исправить верхнюю часть этой диаграммы 1/2 таким образом, чтобы она масштабировалась, когда я захочу показать, скажем, 29/6 с треугольниками... и, в конечном итоге, другие фигуры? Кажется, что пересечения путей, которые встречаются под углами, отличными от 90 градусов, пересекаются не совсем так, как я хочу...

Испорченная картинка

\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}

решение1

Я не уверен, что это то, что вы хотите, но, глядя на изображение по ссылке, кажется, что это так: Я позаимствовал часть кода изIgnasi's answerкКак нарисовать треугольную сетку в TikZ?. Поскольку треугольная сетка построена с помощью \nodes, вы можете легко использовать их якоря для заполнения, которое я поместил в backgroundслой:

введите описание изображения здесь

Код:

\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}

решение2

Один из способов — сначала заполнить, а затем нарисовать один контур:

\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}

заполнить, затем нарисовать

Что такое edge?

An edge— это независимый кусок пути, который может отходить в другом направлении и может быть нарисован (или не нарисован) с совершенно другими параметрами из основного пути. Он не нарушает основной путь. В этом случае рисует edgeперпендикуляр вниз, но основной путь продолжается от вершины, как если бы не edgeбыло указано. edges полезны для сложных путей, особенно. Они строятся после основного пути.

Чтобы увидеть, что происходит, измените указанный путь следующим образом:

\draw[thick] (0,0) -- (1,2) edge [red] (1,0) -- (2,0) -- cycle;

По умолчанию edgeнаследует параметры от основного пути, поэтому этот есть , thickно, в отличие от основного пути, это red. На изображении выше, конечно, не было указано никаких отдельных параметров, поэтому edgeтакже был цветом по умолчанию и смешивался с основным путем.

красный край

Связанный контент