为什么必须使用两个 \psframe 进行剪辑?

为什么必须使用两个 \psframe 进行剪辑?
\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-eucl,pst-plot}
\begin{document}
    \begin{pspicture}[algebraic,saveNodeCoors](-1.5,-1.5)(2.5,2)
    \psset{linewidth=0.5pt,unit=1.25cm,plotstyle=curve}
    \psclip{\psframe[framearc=0.1](-1,-1)(2,1.5)}% <<-- ,linestyle=none
\psaxes[Dx=1,dx=1,Dy=1,dy=1,subticks=2,subticksize=1,labels=none,ticksize=2pt -2pt]{->}(0,0)(-1,-1)(3,2)
    \def\f{x^4-x}
    \def\g{x/(sqrt(x^2+1))}
    \psset{PointSymbol=none,PointName=none}
    \pstInterFF{\f}{\g}{0}{M_1}
    \pstInterFF{\f}{\g}{1}{M_0}
    \pscustom[fillstyle=solid,fillcolor=cyan,opacity=.5,linestyle=none]{%
    \psplot{N-M_0.x}{N-M_1.x}{\f}
    \psplot{N-M_1.x}{N-M_0.x}{\g}}
    \psplot[linecolor=blue]{-1}{1.5}{\f}
    \psplot[linecolor=green]{-1}{2}{\g}
    \rput(M_0){\psframebox{}}
    \endpsclip
    % \psframe[framearc=0.1](-1,-1)(2,1.5)   % <<--
    \rput(1,-0.6){\tiny $y=x^4-x$}
    \rput(0.5,1.2){\tiny $ \displaystyle \frac{x}{\sqrt{x^2+1}}$}
    \psline{->}(0.6,0.95)(0.8,0.65)
\uput{3pt}[180](-1,0){$-1$}
\uput{3pt}[-90](0,-1){$-1$}
\uput{3pt}[0](2,0){$2$}
\uput{3pt}[90](0,1.5){$1.5$}
    \end{pspicture}
\end{document}

在此处输入图片描述

如果

\psclip{\psframe[framearc=0.1,linestyle=none](-1,-1)(2,1.5)}
...
\psframe[framearc=0.1](-1,-1)(2,1.5)   

输出是正确的

在此处输入图片描述

要在两个函数之间填充颜色,你可以看到这样的效果:

以下如何在函数和圆之间填充颜色?

答案1

这里需要注意的是,从pstricks 文档(部分28 剪辑),

命令

\psclip{<graphics>} ... {} \endpsclip

设置剪切路径到对象绘制的路径<graphics>,直到 \endpsclip到达命令。

我在这里强调了“剪切路径”,它排除了中风(及其相关宽度)。当您将元素内的 增加到linewidth某个不合适的值(例如10pt)时,您会看到这一点<graphics>

在此处输入图片描述

这就是为什么建议使用linestyle=none并在事后重置相同的帧以实现良好的叠加。文档中的第一个示例执行相同的操作:

在此处输入图片描述

\documentclass{article}

\usepackage{pst-plot}

\begin{document}

\begin{pspicture}(10,10)
  \psclip{%
    \pscustom[linestyle=none]{%
      \psplot{.5}{4}{2 x div}% 2/x
      \lineto(4,4)}
    \pscustom[linestyle=none]{%
      \psplot{0}{3}{3 x x mul 3 div sub}% 3-(x^2)/3
      \lineto(0,0)}}
    \psframe*[linecolor=gray](0,0)(4,4)% Sets the shaded fill
  \endpsclip
  \psplot[linewidth=1.5pt]{.5}{4}{2 x div}% Redraw 2/x
  \psplot[linewidth=1.5pt]{0}{3}{3 x x mul 3 div sub}% Redraw 3-(x^2)/3
  \psaxes(4,4)% Axes
\end{pspicture}

\end{document}

因此,本质上,“形状”用于剪辑,这不包括笔触,可能需要重新绘制笔触才能获得所需的效果。

答案2

我只需要 \psclip为蓝色曲线。填充可以用 完成\pscustom。您已经拥有交点:

\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-eucl,pst-plot}
\begin{document}

\def\f{x^4-x}
\def\g{x/(sqrt(x^2+1))}
\begin{pspicture}[algebraic,saveNodeCoors](-1.5,-1.5)(2.5,2)
    \psset{linewidth=0.5pt,unit=1.25cm,plotstyle=curve}
    \psaxes[subticks=2,subticksize=1,labels=none,ticksize=2pt -2pt]{->}(0,0)(-1,-1)(2,1.5)[2,0][1.5,90]
    \psset{PointSymbol=none,PointName=none}
    \pstInterFF{\f}{\g}{0}{M_1}
    \pstInterFF{\f}{\g}{1}{M_0}
    \psdot[dotstyle=square,dotsize=0.25](M_0)
    \pscustom[fillstyle=solid,fillcolor=cyan,opacity=0.5,linestyle=none]{%
        \psplot{N-M_0.x}{N-M_1.x}{\f}
        \psplot{N-M_1.x}{N-M_0.x}{\g}}
    \psclip{\psframe[framearc=0.1](-1,-1)(2,1.5)}
      \psplot[linecolor=blue]{-1}{1.5}{\f}
    \endpsclip
    \psplot[linecolor=green]{-1}{2}{\g}
    \rput(1,-0.6){\tiny $y=x^4-x$}
    \rput(0.5,1.2){\tiny $ \displaystyle \frac{x}{\sqrt{x^2+1}}$}
    \psline{->}(0.6,0.95)(0.8,0.65)
    \uput{3pt}[180](-1,0){$-1$}
    \uput{3pt}[-90](0,-1){$-1$}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容