Раскрашиваем каждую грань отдельно в TikZ

Раскрашиваем каждую грань отдельно в TikZ

Я хочу окрасить ребро AB в толстый синий цвет, а ребра AC и BC — в толстый красный цвет.

Ссылаясь на ответ вМножественные цветовые грани в TikZ, один из способов — использовать \clip[draw]команду. Но я не уверен, как использовать в моем контексте, так как моя фигура — треугольник, и треугольник также заполнен оранжевым цветом.

Ожидаемый результат:

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

Текущий результат:

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

Треугольник по-прежнему должен быть закрашен оранжевым цветом, а его края — указанным выше цветом.

Примечание: Этот пример взят только из руководства PGF. Предоставление кода в руководстве не рекомендуется/не приветствуется без объяснения.

Есть ли альтернативный способ заполнить фигуру вместо использования команды \filldrawили ?\draw[fill]

МВЭ:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) at (0,0);
  \coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B) at (1.25,0.25);
  \draw[name path=A--B] (A) -- (B);
%  \draw let \p1 = ($(B) - (A)$),
%            \n2 = {veclen(\x1,\y1)}
%        in
%           (A) circle (\n2)
%           (B) circle (\n2);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};

  \path [name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}}];

  %\coordinate[label=above:$C$] (C) at (intersection-1); using by instead

  \draw [name path=C--C',red] (C) -- (C');

  \path [name intersections={of=A--B and C--C', by=F}];
  \node[fill=red,inner sep=1pt, label=-45:$F$] at (F) {};

  \draw[fill=orange!80] (A) -- (B) -- (C) -- cycle;
  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

решение1

Некоторые параметры могут быть применены кчасть пути, это случай rounded corners. Но это не работает с тем, colorsчто указано на странице 149 руководства 3.1.1, которое всегда применяется квесь путь.

Скриншот страницы 149:

Скриншот

Итак, чтобы было проще:

  • Сначала я покрасил треугольник ABC в оранжевый цвет с помощью \fillкоманды(который ничего не рисует);
  • затем я нарисовалдвапути, один в blue, другой в red.

Скриншот

Прокомментированный код:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) at (0,0);
  \coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B) at (1.25,0.25);
  \path[name path=A--B] (A) -- (B);% <-- construct the path, but not draw it
%  \draw let \p1 = ($(B) - (A)$),
%            \n2 = {veclen(\x1,\y1)}
%        in
%           (A) circle (\n2)
%           (B) circle (\n2);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};

  \path [name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}}];

  %\coordinate[label=above:$C$] (C) at (intersection-1); using by instead

  \path [name path=C--C',red] (C) -- (C');

  \path [name intersections={of=A--B and C--C', by=F}];
  %\node[fill=red,inner sep=1pt, label=-45:$F$] at (F) {};

  \fill[orange!80] (A) -- (B) -- (C) -- cycle;%<-- only fill without draw the edges
  \draw[blue,thick](A)--(B);%<-- draw in blue
  \draw[red,thick](A)--(C)--(B);%<-- draw in red
  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

решение2

Вы можете сохранить некоторые из ваших путей, используя возможности команды \pathили \draw. В частности, пустые пути могут быть удалены путем интеграции пересечений в соответствующие пути.

Чтобы раскрасить свой путь от до Aпросто Bнарисуйте линию между двумя точками (после рисования рамки или простого удаления рамки). То же самое работает для A--B--C.

треугольник

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \path[name path=A--B] (0,0) coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) --
    (1.25,0.25) coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};
  \draw[name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}},
    name path=C--C',red] (C) -- (C');
  \node[fill=red,inner sep=1pt,name intersections={of=A--B and C--C', by=F},label=-45:$F$] at (F) {};

  \draw[draw=none,fill=orange!80] (A) -- (B) -- (C) -- cycle;
  \draw[blue,thick] (A) -- (B);
  \draw[red,thick] (A) -- (C) -- (B);

  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

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