\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}