![¿Cómo conseguir una línea en zigzag consistente?](https://rvso.com/image/281493/%C2%BFC%C3%B3mo%20conseguir%20una%20l%C3%ADnea%20en%20zigzag%20consistente%3F.png)
Quiero obtener una línea en zigzag consistente que se usará para imitar un resorte físico.
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-coil,multido}
\usepackage[nomessages]{fp}
\FPset\CoilArm{.2}
\FPset\Windings{7}
\psset
{
coilarm=\CoilArm,
linejoin=1,
}
\def\System#1#2{% #1: total length includes the arms, #2: coil width
\FPeval\CoilWidth{trunc(#2,9)}%
\FPeval\CoilHeight{trunc((#1-2*CoilArm)/(CoilWidth*Windings),9)}%
\pszigzag[coilwidth=\CoilWidth,coilheight=\CoilHeight](1,0)(1,-#1)%
\ignorespaces
}
\begin{document}
\begin{pspicture}(13,-7)
\multido{\nx=0+1.25,\nl=2.50+.50,\nw=1.00+-0.10}{10}{\rput(\nx,0){\System{\nl}{\nw}}}
\end{pspicture}
\end{document}
En la siguiente figura, la cruz roja representa líneas en zigzag inconsistentes ya que su extremo superior comienza con una orientación de segmento diferente.
He aumentado la precisión trunc
eligiendo una gran cantidad de dígitos. pero no parece funcionar. ¿Cómo solucionar este problema?
Hechos
Un método para deshacerse de esta inconsistencia es elegir una constante coilwidth
. Sin embargo, con constante coilwidth
la animación ya no parecerá realista. Ese es el problema.
Respuesta1
El último recurso: ¡no te fíes pst-coil
!
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node,pst-plot}
\usepackage[nomessages]{fp}
\FPset\CoilArm{.6}
\FPset\Windings{7}
\def\System#1#2{% #1: total length includes the arms, #2: coil width
\FPeval\CoilWidth{#2}%
\FPeval\Lambda{(#1-2*CoilArm)/Windings}%
\FPeval\PlotPoints{trunc(4*Windings+1,0)}%
\curvepnodes[plotpoints=\PlotPoints,algebraic]{0}{\Lambda\space \Windings\space mul}{\CoilWidth*sin(2*Pi*t/\Lambda)|-t-\CoilArm}{P}%
\pscustom[linejoin=1]
{
\psline(0,0)
\psnline(0,\Pnodecount){P}
\psline(0,-#1)
}%
\ignorespaces
}
\begin{document}
\begin{pspicture}(13,-7)
\multido{\nx=1.00+1.25,\nl=2.50+.50,\nw=.50+-.05}{10}{\rput(\nx,0){\System{\nl}{\nw}}}
\end{pspicture}
\end{document}