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