我想利用当前点作为 的中心,可以吗?以下代码无法编译,因为尚未指定 的\psarc
中心。\psarc
\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\begin{document}
\begin{pspicture}(6,6)
\pscustom
{
\psarc(3,3){1}{0}{90}
\rmoveto(.5;-90)
\psarc(<current point>){.5}{90}{180}
}
\end{pspicture}
\end{document}
应用
在得到赫伯特的出色答复后,我现在可以生产这个玩具了。
\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\usepackage{multido}
\pstVerb{/R .75 def}
\makeatletter
\def\Atom#1{%
\begin{pspicture}[showgrid](2,2)(5,5)
\pscustom[linecolor=red]
{
\moveto(4,3)
\multido{\i@=0+1}{#1}
{%
\rmoveto(!\i@\space dup R exch exp exch 90 mul 180 sub PtoC)
\psarc[liftpen=2](!CP \tx@UserCoor){!\i@\space R exch exp}{!\i@\space 90 mul}{!\i@\space 90 mul 90 add}
}
}
\end{pspicture}}
\makeatother
\begin{document}
\multido{\i=1+1}{15}{\Atom{\i}}
\end{document}
答案1
\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\begin{document}
\makeatletter
\begin{pspicture}[showgrid](2,2)(5,5)
\pscustom{
\psarc(3,3){1}{0}{90}
\rmoveto(.5;-90)
\psarc[liftpen=2](!CP \tx@UserCoor){.5}{90}{180}%% liftpen is important
}
\end{pspicture}
\end{document}
版本pstricks.tex
2.47 来自http://texnik.dante.de/tex/generic/pstricks/知道一个特殊坐标(!!CP )
(double!!),它不需要转换为用户坐标。
答案2
以下代码确实可以编译,但是我遇到了rmoveto
找不到命令的问题。我确实将极坐标改为笛卡尔坐标,如果你想画螺旋线,这可能会给你带来麻烦。
\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\begin{document}
\begin{pspicture}[showgrid=true](6,6)
\pscustom
{
\psarc(3,3){1}{0}{90}
\pstVerb{0 -0.5 rmoveto}
\psarc{-}{.5}{90}{180}
}
\end{pspicture}
\end{document}
第二条圆弧的当前点坐标问题的解是给出{-}
箭头参数,因为必须包含箭头参数或 (x,y) 参数。
这是通过定义对象来执行平移的极坐标的第二种变体。
\documentclass[pstricks,border=12pt]{standalone}
\SpecialCoor
\makeatletter
\def\myrmoveto{\pst@object{myrmoveto}}
\def\myrmoveto@i(#1){{%
\pst@killglue%
\pst@getcoor{#1}{\pst@tempa}
\pstVerb{\pst@tempa /yc exch def /xc exch def xc yc rmoveto}
}}%
\makeatother
\begin{document}
\begin{pspicture}[showgrid=true](6,6)
\pscustom
{
\psarc(3,3){1}{0}{90}
\myrmoveto(0.5;90)
\psarc{-}{.5}{90}{180}
}
\end{pspicture}
\end{document}
编辑:这两个示例实际上都不起作用。显然,我在测试时对第二个 psarc 的坐标进行了硬编码,然后在没有进行适当测试的情况下更改了一些内容。我的错。不提供坐标让 pstricks 假设它是 (0,0)。