Что означает опция 'by' в TikZ Intersections

Что означает опция 'by' в TikZ Intersections

На стр. 65 Руководства PGF показаны различные операции с intersectionsбиблиотекой в ​​TikZ. Но я не могу понять код. В чем смысл опции byздесь.

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

Объяснение следующее:

Имя crossings принимает необязательный аргумент by, который позволяет указать имена для координат и опции для них. Это создает более компактный код.

Это не ясно.

решение1

Соответствующая строка:

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

Сравните с этой более простой версией:

\path [name intersections={of=D and E, by={C, C’}}];

Здесь вычисляются точки пересечения и обозначаются как C и C' ("имя the пересечениеточкиD и E кименаСиС'").

Это сокращение для

\coordinate (C) at ...;
\coordinate (C') at ...;

для некоторых вычисленных координат.

Добавление необязательного стиля [label=above:$C$]Cэквивалентно

\coordinate[label=above:$C$] (C) at ...;

и позволяет вам напрямую стилизовать точку пересечения. Это было бы эквивалентно, хотя и дольше, написать

\path [name intersections={of=D and E, by={C, C’}}];
\node[above] at (C) {$C$};
\node[below] at (C') {$C'$};

решение2

Просто для полноты картины. Вы можете называть пересечения C-1и т.д., просто используяname=C . Что, возможно, также стоит отметить, так это то, что если вы хотите отсортировать пересечения по прямой линии, товам нужно нарисовать прямую линию, притворяясь, что это кривая.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}

\begin{document}
\begin{tikzpicture}
    \draw[name path=grid] [xstep=3,ystep=2] (9,8) grid (0,0);
    \draw[->, name path=line] (2,1) to[bend left=0] (7,7);
    \draw[name intersections={of=grid and line, sort by=line, name=C, total=\t}]
        \foreach \s in {1,...,\t}{(C-\s) node {\s}};
\end{tikzpicture}
\end{document}

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

решение3

По умолчанию перекрестки именуются (intersection-1), (intersection-2)и т.д.

При записи by={a,b}первые два пересечения будут называться (a)и (b).

Давайте рассмотрим пример на странице 142, немного измененный. Он отображает 9 пересечений двух кривых. Общее количество пересечений определяется как total.

При записи by={a,b}первые два перекрестка теперь имеют два названия:

  • (a)или(intersection-1)
  • (b)или(intersection-2)

(a)является псевдонимом (intersection-1), остальные не имеют псевдонимов и остаются доступными.

Скриншот

\documentclass[border=5mm,tikz]{standalone}

\usetikzlibrary{intersections}

\begin{document}
\begin{tikzpicture}
\clip (-2,-2) rectangle (2,2);
\draw [name path=curve 1] (-2,-1) .. controls (8,-1) and (-8,1) .. (2,1);
\draw [name path=curve 2] (-1,-2) .. controls (-1,8) and (1,-8) .. (1,2);
\fill [name intersections={of=curve 1 and curve 2, by={a,b}, total=\t}]
[red, opacity=0.5, every node/.style={above left, black, opacity=1}]
\foreach \s in {1,...,\t}{(intersection-\s) circle (2pt) node {\footnotesize\s}};
\draw[fill=blue!50,opacity=.5] (a) circle (4pt);
\end{tikzpicture}
\end{document}

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