Saltar al contenido

Cómo invertir una curva de parábola en TikZ

Solución:

Has usado bend left/bend right anteriormente en el dibujo, utilícelo de nuevo y funcionará bien. Por ejemplo draw[fill=white] (8.5,0) to[bend right] (4.5,0);

Esta imagen muestra la salida de su código original, con algunos cambios de estilo. La flecha azul está hecha con bend left, la línea roja discontinua con parabola bend. No son equivalentes al 100%, pero están muy cerca.

ingrese la descripción de la imagen aquí

Hablando de las puntas de las flechas, ¿quieres agrandarlas (apenas son visibles)? ¿O eliminarlos por completo?


Algunos otros comentarios:

  • los hyperref En general, el paquete debería cargarse tarde, consulte ¿Qué paquetes deberían cargarse después de Hyperref en lugar de antes?
  • Como mencioné en un comentario, debe colocar el label después de la caption, o las referencias cruzadas no funcionarán, consulte ¿Por qué tiene que aparecer la etiqueta de un entorno después del título?
  • Tu scope el medio ambiente realmente no hace nada útil.
  • yo añadí centering antes de begin{tikzpicture}
  • En el bloque que comienza con %Draw Pin-Cushion Distortion, tiene un nodo vacío en cada línea, que no es necesario.
  • Cuando dibuja las líneas entre las esquinas, también tiene fill=lime. ¿Tenía la intención de llenar alguna región con lime¿O es solo algo que se ha olvidado de eliminar?

Dicho esto, aquí hay un ejemplo completo. El uso de coordenadas con nombre puede ser útil en algún momento, reescribí el código para mostrar un método que lo usa. Por supuesto, no es necesario que lo uses.

ingrese la descripción de la imagen aquí

documentclass{article}

usepackage[usenames,dvipsnames,x11names]{xcolor}
usepackage{tikz}
usepackage{hyperref}

begin{document}

begin{figure}[ht]
centering
begin{tikzpicture} %detector on right (Pin-Cushion distorted)

begin{scope}[every label/.style={font=footnotesize}]
    % coordinates at outer corners
    coordinate [label=left:$A_1$]  (A1) at (4,4.5);
    coordinate [label=right:$A_2$] (A2) at (9,4.5);
    coordinate [label=right:$A_3$] (A3) at (9,-0.5);
    coordinate [label=left:$A_4$]  (A4) at (4,-0.5);
end{scope}

    % inner corners, relative to outer corners
    path (A1) ++(0.5,-0.5)  coordinate (B1);
    path (A2) ++(-0.5,-0.5) coordinate (B2);
    path (A3) ++(-0.5,0.5)  coordinate (B3);
    path (A4) ++(0.5,0.5)   coordinate (B4);

    %Grid and outer layers of detector 
    draw[black, very thick] (A4) rectangle (A2);
    draw[black, very thick] (B4) rectangle (B2);
    draw[step=5mm,black] (B4) grid (B2);

    %Anode wiring 
    foreach i in {1,...,4}
       draw (Ai) -- (Bi);

    % draw and fill bendy lines
    draw[bend left,fill=white]  (B4) to (B3);
    draw[bend right,fill=white] (B4) to (B1);
    draw[bend left,fill=white]  (B3) to (B2);
    draw[bend left,fill=white]  (B2) to (B1);

end{tikzpicture}
caption{An interesting diagram...}
label{PCDistort}
end{figure}

end{document}

Es posible dibujar la curva de la parábola horizontalmente y luego rotarla. He nombrado las coordenadas para facilitarme las cosas:

documentclass{article}

usepackage{hyperref}
usepackage[usenames,dvipsnames,x11names]{xcolor}
usepackage{tikz}
usetikzlibrary{positioning}
usetikzlibrary{arrows,snakes,shapes}

begin{document}
begin{tikzpicture}
    % Coordinates
    coordinate (sw) at (4.5, 0);
    coordinate (ne) at ([shift=(sw)] 4, 4);
    coordinate (nw) at (sw |- ne);
    coordinate (se) at (sw -| ne);

    coordinate[label=left:$A_1$] (A1) at ([shift=(nw)] -.5, .5);
    coordinate[label=right:$A_2$] (A2) at ([shift=(ne)] .5, .5);
    coordinate[label=right:$A_3$] (A3) at ([shift=(se)] .5, -.5);
    coordinate[label=left:$A_4$] (A4) at ([shift=(sw)] -.5, -.5);

    % Grid and outer layers of detector 
    draw[black, very thick] (A1) rectangle (A3);
    draw[black, very thick] (sw) rectangle (ne);
    draw[step=5mm,black] (sw) grid (ne);

    % Anode wiring 
    draw (A1) -- (nw);
    draw (A2) -- (ne);
    draw (A3) -- (se);
    draw (A4) -- (sw);

    %Colour in distorted areas
    draw[fill=white] (sw) parabola bend +(2, .6) (se) -- cycle;
    draw[fill=white] (nw) parabola bend +(2, -.6) (ne) -- cycle;
    begin{scope}[shift=(sw), rotate=90]
        draw[fill=white] (0,0) parabola bend +(2, -.6) ++(4, 0) -- cycle;
    end{scope}
    begin{scope}[shift=(se), rotate=90]
        draw[fill=white] (0,0) parabola bend +(2, .6) ++(4, 0) -- cycle;
    end{scope}
end{tikzpicture}
end{document}

captura de pantalla

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *