我想使用 PSTricks 画一条线。但是,我只有一个点,但我知道要以哪个角度画线,以及要画多长。
有没有办法从点 (x,y) 以给定角度、给定长度绘制一条线?
是否有任何宏包可以帮助我?
答案1
PSTricks 有极坐标:参见手动的。
\SpecialCoor
\psline[linewidth=2pt](4;50)(0,0)(4;10)
\psarc[arcsepB=2pt]{->}{3}{10}{50}
生产
这将要求您移动坐标系,以便原点位于您拥有的点上。
\SpecialCoor
否则,您可以使用第 72 页列出的更复杂的选项。特别是([par]node)
描述
angle
使用、nodesep
和参数确定相对于节点的位置offset
。例如,([angle=45]A)
、
但要求您将当前点定义为命名节点(不那么痛苦)。
因此:
\documentclass{article}
\usepackage{pstricks}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}(4,5)
\pnode(1,1){Y}
\SpecialCoor
\psline(Y)([angle=30,nodesep=2]Y)
\end{pspicture}
\end{document}
创建:
答案2
可以绘制一条始终从最后一个当前点开始的矢量线。它只需要一个坐标,另一个是当前点。所有点都内部保存为节点,以后可以使用。
\documentclass{article}
\usepackage{pstricks-add,multido}
\begin{document}
\begin{pspicture}[showgrid,linewidth=1pt](10,10.4)
\psStartPoint[A](1,1)% nodes have the base name A
\psVector(3;30)\psVector(4;60)\psVector[linecolor=red](3;10)
\psVector[linestyle=dashed](4;110)
\psline{->}(A0)(A4)
\psStartPoint[B](1,1)\psset{markAngle}% nodes have the base name B
\psVector[linestyle=dashed](4;110)
\psVector[linecolor=red](3;10)
\psVector(4;60)\psVector(3;30)
\multido{\iA=0+1}{5}{\uput[0](A\iA){A\iA}\uput[180](B\iA){B\iA}}
\end{pspicture}
\end{document}
答案3
你需要了解一点后记语言和逆波兰表示法:
\documentclass{article}
\usepackage{pstricks-add}
\usepackage[top=3cm,bottom=3cm,left=3cm,right=3cm]{geometry}
\begin{document}
\begin{figure}[h]
\def\xA{1}
\def\yA{2}
\def\Length{4}
\def\Angle{45} % angles are in degrees
\begin{pspicture}(0,0)(6,6)
\psgrid
% define point A
\cnode*(\xA,\yA){0pt}{A}%
% define point B
\cnode*(! \Length\space \Angle\space cos mul \xA\space add \Length\space \Angle\space sin mul \yA\space add){0pt}{B}%
% draw line
\psline[linewidth=1pt](A)(B)%
\end{pspicture}
\end{figure}
\end{document}
答案4
我认为最简单的方法是使用\SpecialCoor
、极坐标形式和origin
选项,如下例所示。
\documentclass{article}
\usepackage{pstricks}
\begin{document}
\begin{pspicture}[showgrid=true](5,5)
\SpecialCoor
% draw a line from a point (1,2) at angle 45 degrees and of length 3 unit.
\psline[origin={1,2}](3;45)
\end{pspicture}
\end{document}
输出:
编辑1:
为了确保线长为 3 厘米,我画了一个半径为 3 厘米的红色圆圈。