额外的

额外的

我希望使用 PSTricks 在半径为 2 的圆盘中绘制一个随机点,遵循极坐标的均匀分布(使其在远处密度较小)。我尝试了以下三种方法,但 PSTricks 都不理解其中任何一种:

\SpecialCoor
\psdot( Rand(0,2) ; Rand(0,360) )
\psdot( \pscalculate{Rand*2} ; \pscalculate{Rand*360} )
\psdot( ! Rand 2 mul ; ! Rand 360 mul )

答案1

非常感谢,MOP!!您的解决方案有效,并且作为赠品,它包含了我正在寻找的小答案:命令

                             PtoC

它将极坐标耦合转换为笛卡尔耦合。如果你只向我透露了那四个秘密字母,我就可以自己完成这一切了 ;-)

现在我的小情节程序来了:

\begin{document}
\psset{unit=2cm}
\begin{pspicture}(-2,-2)(2,2)\SpecialCoor
\psframe[framearc=0,linecolor=black,fillstyle=solid,fillcolor=white](-2,-2)(2,2)
\pscircle[fillstyle=solid,fillcolor=lightgray,linewidth=1.1pt](0,0){2}
\psLoop{2500}{\psdot[dotscale=.25](! 2 Rand mul 360 Rand mul PtoC)}
\end{pspicture}
\end{document}

答案2

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

\psset{unit=4cm}
\begin{pspicture}(1,1)
\psRandom[dotsize=1pt,fillstyle=solid](1,1){\pscircle (0.5,0.5){0.5}}
\end{pspicture}

\begin{pspicture}(1,1)
\psRandom[randInit=42,dotsize=2pt,randomPoints=5000,color, 
  fillstyle=solid](1,1){\pscircle(0.5,0.5){0.5}}
\end{pspicture}

\end{document}

在此处输入图片描述

答案3

请考虑以下模板。其后给出了解释。

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node,pst-plot}
\pstVerb
{
    realtime srand 
    /RMax 5 def
    /AMax 360 def
}

\begin{document}
\psLoop{10}{%
\begin{pspicture}(-5,-5)(5,5)
\curvepnodes[plotpoints=100]{0}{360}{RMax Rand mul AMax Rand mul PtoC}{A}
\pscircle{!RMax}
%\foreach \i in {0,1,...,99}{\psline[linecolor=lightgray](0,0)(A\i)}
\foreach \i in {0,1,...,99}{\pscircle*[linecolor=red](A\i){2pt}}
\end{pspicture}}
\end{document}
  • \pstVerb{...}:仅在 PostScript 上下文中有效的标识符。
  • realtime srand:为 PSTricks 的伪随机数生成器播种。
  • RMax:最大半径
  • AMax:最大角度
  • \psLoop{... integer number ...}{... PSTricks objects ...}:循环构造
  • \curvepnodes{... start ...}{... stop ...}{... coordinate expression in RPN ...}{... Node ...} :定义曲线上的节点
  • Rand:产生0到1之间的随机浮点数。
  • RMax Rand mul:等于 0 到 之间的随机浮点数RMax
  • AMax Rand mul:等于 0 到 之间的随机浮点数AMax
  • r t PtoC:将极坐标转换为笛卡尔坐标
  • !:默认情况下不接收 RPN 的参数的 RPN 前缀。

如有任何问题,请发表评论!

额外的

如果您需要了解其PtoC工作原理,请参阅以下内容。新动词MOP 将极坐标转换为笛卡尔坐标PtoC

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node,pst-plot}
\pstVerb
{
 /MOP {2 copy cos mul 3 1 roll sin mul} bind def
}

\begin{document}
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
    \psdots(!5 0 MOP)(!5 90 MOP)
\end{pspicture}
\end{document}

请注意,如果您自己的 PostScript 动词与现有动词冲突,则不会发出警告。根据经验,始终使用至少 3 个大写字母。

相关内容