我使用 pst-intersect 包时哪里失败了?

我使用 pst-intersect 包时哪里失败了?
\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-plot,amsmath,xfp,pst-intersect}
\begin{document}
    \psset{unit=1.25cm}
    \def\Func{x^2} % y=x^2
    \def\Iy#1{#1^2+1/4} % \delta = b^2-4ac = 4R^2+1-4Iy => Iy=(4R^2+1)/4
    \multido{\rA=1+0.1}{10}{% \rA is R
    \begin{pspicture}[algebraic,plotstyle=curve](-2,-1)(2,5)
    \pnodes(0,\fpeval{\Iy{\rA}}){I}(0,\fpeval{\rA+\fpeval{\Iy{\rA}}}){M}
    \psaxes[labels=none,ticks=none]{->}(0,0)(-2,-1)(2,5)[$x$,-90][$y$,0]
    \uput[-135](0,0){$O$}
    \uput{3pt}[35](I){\small $I(0,\dfrac{5}{4})$}
    \psdot[linecolor=blue](I)
    \pssavepath{Circle}{\pscircle[linecolor=red](I){\rA}}
    \pssavepath{Func}{\psplot{-2}{2}{x^2}}
    \psintersect[showpoints]{Circle}{Func}
    \end{pspicture}}
\end{document}

在此处输入图片描述

如我所见,intersection失败了。如何修复?(或者我的代码失败了:))

答案1

可以想象,问题在于抛物线图是一系列小延伸的集合,比“真”抛物线有更多的交点。也就是说,延伸的斜率使得可以有两个交点。我试图在这个图中说明这一点:

在此处输入图片描述

还应该提到,鉴于这是用 (La)TeX 编写的,你得到的交集实际上非常好。

因此,在这种简单情况下,您可能只想通过分析确定交点。这是一个简单的 Ti说明这一点的 Z 代码。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\foreach \X in {0.5,0.6,...,2}
{\begin{tikzpicture}[thick]
 \draw[-stealth] (-3,0) -- (3,0) node[below left]{$x$};
 \draw[-stealth] (0,-1) -- (0,2.5*2.5+0.5) node[below left]{$y$};
 \draw (-2.5,2.5*2.5) parabola bend (0,0) (2.5,2.5*2.5);
 \draw (0,\X*\X+1/2) circle[radius={sqrt(1/4+\X*\X)}];
 \fill (\X,\X*\X) circle[radius=1.5pt] (-\X,\X*\X) circle[radius=1.5pt];
\end{tikzpicture}}
\end{document}

在此处输入图片描述

这个解析解当然也可以与 PSTricks 一起使用......(我知道的标签I可能有问题,但我只是从问题中复制了它。)

\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-plot,amsmath,xfp}
\begin{document}
    \psset{unit=1.25cm}
    \def\Func{x^2} % y=x^2
    \def\Iy#1{#1^2+1/2} % \delta = b^2-4ac = 4R^2+1-4Iy => Iy=(4R^2+1)/4
    \multido{\rA=0.6+0.1}{12}{% \rA is x
    \begin{pspicture}[algebraic,plotstyle=curve](-2,-1)(2,5)
    \pnode(0,\fpeval{\Iy{\rA}}){I}
    \psaxes[labels=none,ticks=none]{->}(0,0)(-2,-1)(2,5)[$x$,-90][$y$,0]
    \uput[-135](0,0){$O$}
    \uput{3pt}[35](I){\small $I(0,\dfrac{5}{4})$}
    \psdot[linecolor=blue](I)    
    \pscircle[linecolor=red](I){\fpeval{sqrt(\rA*\rA+1/4)}}
    \psplot{-2}{2}{x^2}
    \psdots(-\rA,\fpeval{\rA*\rA})(\rA,\fpeval{\rA*\rA})
    \end{pspicture}}
\end{document}

在此处输入图片描述

答案2

您已经对另一个问题找到了答案! 以下问题中“计算”和“交点”的 PostScript 命令如何编写?

半径是\rx/sin(alpha)。就这样...

\documentclass{standalone}
\usepackage{libertinus}
\usepackage{pstricks-add,xfp}
\pagestyle{empty}
\begin{document}
\def\a{1}
\def\func{\a*x^2}
\def\rx{1.5 }
\begin{pspicture}[showgrid=false,algebraic](-2.5,-0.75)(7.2,7.5)
  \psplot{-1.75}{2.5}{\func}\pnode(!1.5 dup dup mul \a\space mul){Pp}\psdot(Pp)\uput[125](Pp){$P_p$}
  \def\psAlpha{\fpeval{atan(2*\a*\rx)} }%  in radiant
  \def\radius{\fpeval{\a*\rx*\rx/(1+cos(\psAlpha))} }%
  \pnode(!\rx \radius \psAlpha RadtoDeg sin mul add \radius){Pk}\psdot(Pk)\uput[90](Pk){$P_k$}%
  \pnode(!0 \psGetNodeCenter{Pp}\psGetNodeCenter{Pk}Pp.y dup add Pk.y sub){Pki}\psdot(Pki)\uput[45](Pki){$P_{ki}$}%
  \psdot(Pk|0,0)\uput[-90](Pk|0,0){$P_x$}
  \pscircle(Pk){\radius}%
  \pscircle(Pki){\fpeval{\rx/sin(\psAlpha)}}%
  \pscustom[fillstyle=solid,fillcolor=gray!50!orange,linestyle=none,opacity=0.6]{%
   \psplot{0}{\rx}{\func}
   \psarc(Pk){\radius}{!180 \psAlpha sub}{270}
  }%
  \psaxes[labels=none,ticks=none]{->}(0,0)(-2,-0.5)(7,7)[$x$,0][$y$,90]
  \rput[rb](2,4){$y=ax^2$}\rput[lb](2.3,4){$y_T$}
  \pnode(!\rx dup mul \a\space mul neg \psAlpha RadtoDeg tan div \rx add 0){yT0}
  \pcline[linestyle=dashed,nodesepB=-4cm](yT0)(Pp)
  \pcline[linestyle=dashed,nodesepA=-2cm,nodesepB=-1cm](Pp)(Pk)
  \pcline[linestyle=dashed,nodesep=-1cm](Pp|Pk)(Pk)
  \pcline[linestyle=dashed](Pk|0,0)(Pk)\nbput{$r$}
  \pcline[linestyle=dashed](Pp)(Pp|0,0)\uput[-90](Pp|0,0){$x_{P_p}$}
  \psarc{->}(Pp){0.5}{!90 \psAlpha RadtoDeg sub neg}{!\psAlpha RadtoDeg }\psdot[origin={Pp}](0.3;25)
  \psarc{->}(yT0){0.5}{0}{!\psAlpha RadtoDeg }
  \rput(yT0){\rput(0.3;30){$\alpha$}}
  \ncline[linestyle=none]{Pp}{Pk}\naput{$r$}
  \psarc{->}(Pp){0.5}{-90}{!90 \psAlpha RadtoDeg sub neg}\rput(Pp){\rput(0.3;-50){$\alpha$}}
  \pcline[offset=-0.25,arrows=|-|](Pp|Pk)(Pk)\ncput*{$\scriptstyle r\cdot\sin\alpha$}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容