¿Cómo puedo dibujar flechas degradadas en isocontorno?

¿Cómo puedo dibujar flechas degradadas en isocontorno?

Usando pgfplots dibujo el isocontorno de una función f(x,y): líneas como f(x,y)=C con C como número elegido.

Vea el siguiente ejemplo con:

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

\begin{center}
    \begin{tikzpicture}[scale=0.85]
    \begin{axis}[   xmin=-4,xmax=12, ymin=-4,ymax=4,x=1cm,y=1cm,at={(-4cm,-4cm)}]]
    \addplot +[no markers,
    raw gnuplot,
    thick,dashed,
    empty line = jump, % not strictly necessary, as this is the default behaviour in the development version of PGFPlots
    ] gnuplot {
        set contour base;
        set cntrparam levels discrete -2,-1.1,-1.4;
        unset surface;
        set view map;
        set isosamples 500;
        set samples 500;
        splot -2/sqrt((x-7.5)^2+y^2)-3/sqrt((x-0.5)^2+y^2);
    };
    \end{axis}
    \end{tikzpicture}
\end{center}
\end{document}

isocontorno Puedo dibujar los vectores de gradiente en cualquier punto dado, pero no sé cómo colocarlos en diferentes ubicaciones de la curva de isocontorno.

ingrese la descripción de la imagen aquí

¿Cómo podría obtener las posiciones de varios puntos en esa curva azul discontinua?

Respuesta1

Puede utilizar el hecho de que puede acceder a las coordenadas de los trazados de contorno. Dado que se trata de varios segmentos desconectados, posno basta con especificarlos. Más bien, también debe utilizar pos segment, que se explica en la p. 358 del manual de pgfplots v1.16. Sin embargo, a priori no está claro qué segmento tiene qué índice. Para simplificar las cosas, agregué un estilo que agrega la flecha de degradado, que es ortogonal a la tangente del contorno en este punto.

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{center}
 \begin{tikzpicture}[gradient arrow/.style={
 insert path={coordinate[pos=#1,sloped,
     above=\pgfkeysvalueof{/tikz/ga/above}]  (aux-1)
    coordinate[pos=#1,sloped,
     above=\pgfkeysvalueof{/tikz/ga/above}+\pgfkeysvalueof{/tikz/ga/length}] (aux-2)
    (aux-1) edge[/tikz/ga/arrow] 
    (aux-2)}},ga/.cd,
    above/.initial=3pt,
    length/.initial=12pt,
    arrow/.style={-stealth,black,solid,thick}]
  \begin{axis}[scale=0.85,xmin=-4,xmax=12, ymin=-4,ymax=4,x=1cm,y=1cm,at={(-4cm,-4cm)}]]
   \addplot +[no markers,name=contour,
    raw gnuplot,
    thick,dashed,
    empty line = jump, % not strictly necessary, as this is the default behaviour in the development version of PGFPlots
    ] gnuplot {
        set contour base;
        set cntrparam levels discrete -2,-1.1,-1.4;
        unset surface;
        set view map;
        set isosamples 500;
        set samples 500;
        splot -2/sqrt((x-7.5)^2+y^2)-3/sqrt((x-0.5)^2+y^2);
    } 
    [pos segment=1]
    [gradient arrow/.list={0.2,0.8}]
    [pos segment=3,/tikz/ga/arrow/.append style={red},/tikz/ga/length=10pt]
    [gradient arrow/.list={0.2,0.8}];
  \end{axis}
 \end{tikzpicture}
\end{center}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada