![일관된 지그재그 라인을 얻는 방법은 무엇입니까?](https://rvso.com/image/281493/%EC%9D%BC%EA%B4%80%EB%90%9C%20%EC%A7%80%EA%B7%B8%EC%9E%AC%EA%B7%B8%20%EB%9D%BC%EC%9D%B8%EC%9D%84%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 물리적 스프링을 모방하는 데 사용될 일관된 지그재그 선을 얻고 싶습니다.
\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}
아래 그림에서 빨간색 십자가는 상단 끝이 다른 세그먼트 방향으로 시작하므로 일관성이 없는 지그재그 선을 나타냅니다.
trunc
많은 자릿수를 선택하여 정밀도를 높였습니다 . 하지만 작동하지 않는 것 같습니다. 이 문제를 해결하는 방법은 무엇입니까?
사리
이러한 불일치를 제거하는 한 가지 방법은 상수를 선택하는 것입니다 coilwidth
. 그러나 상수를 사용하면 coilwidth
애니메이션이 더 이상 현실적으로 보이지 않습니다. 그게 문제 야.
답변1
최후의 수단: 의존하지 마십시오 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}