如何利用当前点作为\psarc的中心?

如何利用当前点作为\psarc的中心?

我想利用当前点作为 的中心,可以吗?以下代码无法编译,因为尚未指定 的\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.tex2.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)。

相关内容