La página 65 del Manual de PGF, muestra diferentes operaciones con la intersections
biblioteca en TikZ. Pero no puedo entender el código. ¿Cuál es el significado de la opción by
aquí?
La explicación dada es:
El nombre de las intersecciones toma un argumento opcional by, que le permite especificar nombres para las coordenadas y opciones para ellas. Esto crea un código más compacto.
Esto no está claro.
Respuesta1
La línea relevante es
\path [name intersections={of=D and E, by={[label=above:$C$]C, [label=below:$C’$]C’}}];
Compare con esta versión más simple:
\path [name intersections={of=D and E, by={C, C’}}];
Aquí los puntos de intersección se calculan y se denominan C y C' ("nombreelintersecciónpuntosde D y E porlos nombresCyC'").
Es un atajo para
\coordinate (C) at ...;
\coordinate (C') at ...;
para algunas coordenadas calculadas.
Agregar el estilo opcional [label=above:$C$]C
equivale a
\coordinate[label=above:$C$] (C) at ...;
y le permite diseñar el punto de intersección directamente. Sería equivalente, aunque más largo, escribir
\path [name intersections={of=D and E, by={C, C’}}];
\node[above] at (C) {$C$};
\node[below] at (C') {$C'$};
Respuesta2
Sólo para completar. Puedes nombrar las intersecciones por C-1
etc. simplemente usando name=C
. Lo que quizás también valga la pena señalar es que, si desea ordenar las intersecciones a lo largo de una línea recta, entoncesTienes que dibujar la línea recta como si fuera una 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}
Respuesta3
De forma predeterminada, las intersecciones se denominan (intersection-1)
, (intersection-2)
, etc.
Cuando escribas by={a,b}
las dos primeras intersecciones se llamarán (a)
y (b)
.
Veamos el ejemplo de la página 142, ligeramente modificado. Muestra las 9 intersecciones de dos curvas. El número total de intersecciones está dado por total
.
Al escribir by={a,b}
, las primeras 2 intersecciones ahora tienen dos nombres:
(a)
o(intersection-1)
(b)
o(intersection-2)
(a)
es un alias de (intersection-1)
, los demás no tienen alias y siguen siendo accesibles.
\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}