Dibujar líneas irregulares al azar en dibujos técnicos.

Dibujar líneas irregulares al azar en dibujos técnicos.

Tengo problemas para empezar a dibujar una línea irregular aleatoria, con variación finita, entre dos puntos finales. Creo que la randomfunción que usa una variable se puede usar, por ejemplo,rndDibujar caminos aleatorios en TikZ, pero no tengo idea de cómo usarlo para este propósito.

Yo uso este entorno:

\documentclass[12pt]{article} % SIZE OF FONT AND ITS LAYOUT ON EACH PAGE.
\usepackage[top = 1in, bottom = 1in, left = 1in, right = 1in]{geometry} % MARGINS.
\usepackage{amsmath, booktabs, graphicx, setspace}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz,tkz-graph,tikz-cd} % DIAGRAMS.
    \usetikzlibrary{arrows, calc, decorations.markings}
\begin{document}

\begin{figure}[h]
\begin{center}
\begin{tikzpicture}[scale=1.8,auto]

% replace with randomly ragged line \draw [-,line width=1pt] (0,2) edge (2,2);
\draw [-,line width=1pt,dashed] (0,0) edge (0,2);% solid left boundary
\draw [-,line width=1pt,white] (0,0) edge (8,0);% solid lower boundary
\draw [-,line width=1pt,dashed] (8,0) edge (8,2);% solid right boundary
% make a vertical rule fill; how? How would I make a tiled rule fill, in case that looks better?

\end{tikzpicture}
\end{center}
    \caption{CAPTION GOES HERE}
        \label{fig:FIGURE NAME GOES HERE}
\end{figure}
\end{document}

Me gustaría recrear esto:

ingrese la descripción de la imagen aquí

EDITAR: Creo que el ejemplo de Jesse produce más el resultado requerido, pero no puede eliminar los segmentos de línea de relleno que lo cruzan, a diferencia de las otras dos soluciones.

¿Cómo copio una línea aleatoria generada después de generarla y cambio su color para tener dos líneas aleatorias paralelas?(Luego, el usuario puede colocar uno ligeramente encima del otro, pero blanco y grueso, pero debajo en el código. Esto recortará todas las líneas de relleno que vayan más allá manualmente).Comando de copia TikZpero esto desplaza toda la imagen hacia la derecha y crea la copia de la línea aleatoria al lado.

Respuesta1

Otra alternativa, inspirada enhttps://tex.stackexchange.com/a/126179/34618

Imagen resultante al ejecutar el siguiente código

Código

\documentclass[tikz,border=1cm]{standalone}
%\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\irregularline[2]{%
  let \n1 = {rand*(#1)} in
  +(0,\n1)
  \foreach \a in {0.1,0.2,...,#2}{
    let \n1 = {rand*(#1)} in
    -- +(\a,\n1)
  } 
}  % #1=seed, #2=length of horizontal line


\begin{document}
\begin{tikzpicture}
\draw[blue] (0,0) \irregularline{0.1cm}{6} -- (6,0)--(6,-2) --(0,-2) -- (0,0);
\foreach \t in {0,0.1,...,6} {\draw (\t,0) -- (\t,-2);}

\draw[red]  (0,2) \irregularline{2mm}{6};
\end{tikzpicture}
\end{document}

ACTUALIZACIÓN: para dibujo vertical. Uno simplemente cambia las coordenadas en la línea de comando como se muestra a continuación y en un ejemplo.

\newcommand\irregularliney[2]{%
  let \n1 = {rand*(#1)} in
  +(\n1,0)
  \foreach \a in {0.1,0.2,...,#2}{
    let \n1 = {rand*(#1)} in
    -- +(\n1,\a)
  } 
}  % #1=seed, #2=length

\draw[yellow,thick] (0,0) \irregularliney{0.1cm}{6} -- (0,6)--(-2,6) --(-2,0) -- (0,0);

Respuesta2

Puedes obtener resultados similares usando la biblioteca tikz decorations.pathmorphing, que te permite crear decoraciones con radom steps. Además, usando la clipopción pathpuede cortar las líneas verticales en la línea superior de forma aleatoria, pero esto debería dibujar toda la región límite del trazado de recorte, por lo tanto, se ha dibujado una línea horizontal en la parte inferior y también se han dibujado líneas verticales a la derecha. y se fue pero esto va con el dibujo.

\documentclass[12pt]{article}
\usepackage{tikz}
    \usetikzlibrary{decorations.pathmorphing}

\begin{document}
\begin{figure}\centering
        \begin{tikzpicture}
            \begin{scope}[gray,thick]
                \draw (-0.1,-0.5) -- (-0.1,-1) (-0.1,-1.5) -- (-0.1,-2) (-0.1,-2.5) -- (-0.1,-3);
                \draw (10.1,-0.5) -- (10.1,-1) (10.1,-1.5) -- (10.1,-2) (10.1,-2.5) -- (10.1,-3);
            \end{scope}
            \path[draw,clip,decoration={random steps,segment length=2pt,amplitude=2pt}] decorate {(0,0) -- (10,0)} |- (0,-3.5);
            \foreach \x in {0,0.1,...,10} {
                \draw (\x,1) -- (\x,-3.5);
            }
        \end{tikzpicture}
    \end{figure}
\end{document}

Resultado:

ingrese la descripción de la imagen aquí

Respuesta3

Una solución recomendada con PSTricks.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node,pst-plot}
\pstVerb{realtime srand}
\psset{linejoin=1}
\def\N{30}

\begin{document}
\begin{pspicture}(6,5)
    \psline(6,0)
    \curvepnodes[plotpoints=\N]{0}{6}{t 5 Rand 2 mul sub}{A}
    \psnline[linecolor=red](0,\Anodecount){A}
    \multido{\i=0+1}{\N}{\psline(A\i|0,0)(A\i)}
\end{pspicture}
\end{document}

ingrese la descripción de la imagen aquí

Animado

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node,pst-plot}
\pstVerb{realtime srand}
\psset{linejoin=1}
\def\N{30}

\begin{document}
\psLoop{10}{%
\begin{pspicture}(6,3)
    \psline(6,0)
    \curvepnodes[plotpoints=\N]{0}{6}{t 3 Rand 2 mul sub}{A}
    \psnline[linecolor=red](0,\Anodecount){A}
    \multido{\i=0+1}{\N}{\psline(A\i|0,0)(A\i)}
\end{pspicture}}
\end{document}

ingrese la descripción de la imagen aquí

Atención

Tenga en cuenta que Randya no produce un número real aleatorio entre 0 y 0,5 inclusive. Su definición había sido modificada tácitamente. Ahora produce un número real aleatorio entre 0 y 1 inclusive. No está documentado ni anunciado, ¡pero sigue siendo divertido!

El código proporcionado anteriormente no se ha actualizado aún, por lo que producirá un resultado diferente. No tengo tiempo para actualizarlo ahora. Perdón por las molestias.

Respuesta4

Sé que fue una pregunta de hace casi un año, pero quiero compartir mi solución. Este es el código:

\documentclass[tikz,margin=5pt,12pt]{standalone}
\usepackage{xparse}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}

\NewDocumentCommand{\irregularline}{%
  O     {2mm}   % Amplitude of irregularity. Optional. Default value = 2mm
  m             % First point
  m             % Second point
  D   <> {20}   % Number of peaks. Optional. Default value = 20
}{{%
  \coordinate (old) at #2;
  \foreach \i in {1,2,...,#4}{
    \draw (old) -- ($ ($#2!\i/(#4+1)!#3$) + (0,#1*rand) $) coordinate (old);
  }
  \draw (old) -- #3;
}}

% Examples
\irregularline{(0,0)}{(5,5)}
\irregularline[1mm]{(1,0)}{(6,5)}
\irregularline[1mm]{(2,0)}{(7,5)}<100>

\end{tikzpicture}
\end{document}

Eso produce el siguiente resultado:

Imagen

información relacionada