Qual é o significado da opção 'por' nas interseções TikZ

Qual é o significado da opção 'por' nas interseções TikZ

A página 65 do Manual PGF mostra diferentes operações com a intersectionsbiblioteca no TikZ. Mas não consigo entender o código. Qual é o significado da opção byaqui.

insira a descrição da imagem aqui

A explicação dada é:

O nome interseções recebe um argumento opcional by, que permite especificar nomes para as coordenadas e opções para elas. Isso cria um código mais compacto.

Isto não está claro.

Responder1

A linha relevante é

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

Compare com esta versão mais simples:

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

Aqui os pontos de intersecção são calculados e nomeados C e C' ("nomeointerseçãopontosde D e E poros nomesCeC'").

É um atalho para

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

para algumas coordenadas computadas.

Adicionar o estilo opcional [label=above:$C$]Cé equivalente a

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

e permite estilizar o ponto de interseção diretamente. Seria equivalente, embora mais longo, escrever

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

Responder2

Apenas para completar. Você pode nomear as interseções por C-1etc. apenas usando name=C. O que talvez também valha a pena ressaltar é que, se você quiser ordenar as interseções ao longo de uma linha reta, entãovocê tem que desenhar a linha reta fingindo que é uma curva.

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

insira a descrição da imagem aqui

Responder3

Por padrão, as interseções são nomeadas (intersection-1), (intersection-2), etc.

Quando você escreve by={a,b}as duas primeiras interseções serão chamadas (a)e (b).

Vejamos o exemplo da página 142, ligeiramente modificado. Ele exibe as 9 interseções de duas curvas. O número total de interseções é dado por total.

Ao escrever by={a,b}, as 2 primeiras interseções passam a ter dois nomes:

  • (a)ou(intersection-1)
  • (b)ou(intersection-2)

(a)é um alias de (intersection-1), os outros não têm alias e permanecem acessíveis.

captura de tela

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

informação relacionada