与 pstricks 的共生关系

与 pstricks 的共生关系

我正在尝试去掉中间的线。无论我做出什么改变,似乎都会让情况变得更糟。如果有人能告诉我如何正确绘制这条共边,我将不胜感激。

\begin{pspicture}
  \pscustom{
         \psbezier[showpoints=true](1.5,2.5)(1.5,1.1)(.4,1.6)(.5,0)
         \psline(-0.5,0)
         \psbezier[showpoints=true](-0.5,0)(-.4,1.6)(-1.5,1.1)(-1.5,2.5)
         \psline(-.5,2.5)
         \psbezier[showpoints=true](-.5,2.5)(-.6,1.5)(0.6,1.5)(.5,2.5)
         \psline(1.5,2.5)}
\end{pspicture}

玉米芯

答案1

正常方法

\documentclass[pstricks,border=12pt]{standalone}


\begin{document}
\begin{pspicture}[showgrid=true](-2,-1)(2,3)
    \pscustom
    {
        \psset{showpoints}
        \psbezier(1.5,2.5)(1.5,1.1)(.4,1.6)(.5,0)
        \psbezier(-.5,0)(-.4,1.6)(-1.5,1.1)(-1.5,2.5)
        \psbezier[liftpen=1](-.5,2.5)(-.6,1.5)(.6,1.5)(.5,2.5)
        \closepath
    }
\end{pspicture}
\end{document}

在此处输入图片描述

异常方法

、 等考虑了对称性质\reversepath。遗憾的是,和在这里不能一起使用,因此代码变得过于复杂。\scale\nodexn(!N-<nodename>.x N-<nodename>.y)

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\psset{saveNodeCoors}

\begin{document}

\begin{pspicture}[showgrid=true](-2,-1)(2,3)
\pstGeonode[PointName=none,PointSymbol=none]
    (.5,2.5){A}
    (.6,1.5){B}
    (-.6,1.5){C}
    (-.5,2.5){D}
    % P = (A + B)/2
    (!N-A.x N-B.x add 2 div N-A.y N-B.y add 2 div){P}
    % Q = ((A + C)/2 + B)/2
    (!N-A.x N-C.x add 2 div N-A.y N-C.y add 2 div N-B.y add 2 div exch N-B.x add 2 div exch){Q}
    % R = (A + D + 3(B + C))/8
    (!N-A.x N-D.x add N-B.x N-C.x add 3 mul add 8 div N-A.y N-D.y add N-B.y N-C.y add 3 mul add 8 div){R}
\def\path
{
    \psbezier(.5,0)(.4,1.6)(1.5,1.1)(1.5,2.5)
    \psbezier[liftpen=1](!N-A.x N-A.y)(!N-P.x N-P.y)(!N-Q.x N-Q.y)(!N-R.x N-R.y)
}%
\pscustom
{
    \psset{showpoints}
    \path   
    \reversepath
    \scale{-1 1}    
    \path
    \closepath
}
\end{pspicture}
\end{document}

在此处输入图片描述

警告!

(<nodename>)并且(!\pstGetNodeCenter{<nodename>} <nodename>.x <nodename>.y)无法通过 缩放\scale{}。这就是我(!N-<nodename>.x N-<nodename>.y)在这里使用 的原因。

答案2

\pscustom仅在内部第一的 \psbezier有四个点,对于所有其他点,当前点也是第一个贝塞尔点:

\documentclass[border=5mm]{standalone}
\usepackage{pstricks}
\begin{document}

\begin{pspicture}(-2,0)(2,2.5)
\pscustom{
         \psbezier[showpoints](1.5,2.5)(1.5,1.1)(.4,1.6)(.5,0)% 4 points
         \psline(-0.5,0)%% is also the first bezier point for the next \psbezier
         \psbezier[showpoints](-.4,1.6)(-1.5,1.1)(-1.5,2.5)% three
         \psline(-.5,2.5)
         \psbezier[showpoints](-.6,1.5)(0.6,1.5)(.5,2.5)% three
         \closepath
}
\end{pspicture}
\end{document}

在此处输入图片描述

如果你使用 4 分,那么就没有必要\psline liftpen选项:

\documentclass[border=5mm]{standalone}
\usepackage{pstricks}
\begin{document}

\begin{pspicture}(-2,0)(2,2.5)
\pscustom{
         \psbezier[showpoints](1.5,2.5)(1.5,1.1)(.4,1.6)(.5,0)
         \psbezier[showpoints](-0.5,0)(-.4,1.6)(-1.5,1.1)(-1.5,2.5)
         \psbezier[showpoints,liftpen=1](-.5,2.5)(-.6,1.5)(0.6,1.5)(.5,2.5)
         \closepath
}
\end{pspicture}
\end{document}

相关内容