とは何ですかedge?

とは何ですかedge?

私はTikZを使用して子供向けの分数図を作成しようとしています。

たとえば、29/6 を三角形で表示したいとき、そして最終的には他の図形を表示したいときに、この 1/2 の図の上部をスケールするように固定する、エレガントな方法はありますか? 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 answerTikZ で三角形のグリッドを描くにはどうすればいいですか?三角形のグリッドは で構築されているため\node、アンカーを使用して簡単に塗りつぶしを行うことができます。これをレイヤーに配置します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

1 つの方法は、最初に塗りつぶしてから単一のパスを描くことです。

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

edgeは、別の方向に進み、メイン パスとはまったく異なるオプションで描画される (またはされない) 可能性がある独立したパスの一部です。メイン パスを中断することはありません。この場合、 は垂線を下方に描画しますが、メイン パスは、頂点が指定されていedgeないかのように、頂点から継続します。は、特に複雑なパスに役立ちます。 は、メイン パスの後に構築されます。edgeedge

何が起こっているかを確認するには、パスの指定を次のように変更します。

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

デフォルトでは、 はedgeメイン パスからオプションを継承するため、これは ですthickが、メイン パスとは異なり ですred。もちろん、上の画像では明確なオプションは指定されていないため、edgeもデフォルトの色となり、メイン パスとブレンドされています。

レッドエッジ

関連情報