给定两个向量,即绿色向量和红色向量。目标是找到蓝色向量,使得绿色向量和蓝色向量的合向量平行于红色向量,并且与红色向量的方向相同。
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}[showgrid=true](4,3)
\pnode(0,0){O}
\pnode(4,3){A}
\pnode(0,2){B}
\pnode(A|B){C}
\psset{arrows=->}
\psline[linecolor=red](A)
\psline[linecolor=green](B)
\pstInterLL[PointName=none,PointSymbol=none]{B}{C}{O}{A}{D}
\psline[linecolor=blue](D|O)
\psline[linestyle=dashed,linecolor=gray,arrows=-](B)(D)(D|O)
\end{pspicture}
\end{document}
如何以最简单的方式获得蓝色而不使用交集?
我想应用所讨论的方法绘制张力矢量及其水平分量,如下图所示(但此类矢量尚未实现):
答案1
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[showgrid=bottom](4,3)
\pnode(4,3){A}\pnode(0,2){B}
\psline[linecolor=red]{->}(A)
\psline[linecolor=green]{->}(B)
\pnode(!\psGetNodeCenter{A}
\psGetNodeCenter{B}
B.y A.y div A.x mul 0 ){D}
\psline[linestyle=dashed,linecolor=gray](B)(D|B)(D)
\psline[linecolor=blue]{->}(O)(D)
\end{pspicture}
\end{document}
以下适用于 Beta 版本pst-node
(http://texnik.dante.de/tex/generic/pst-node/pst-node.tex)节点的坐标为N-<name>.x
和N-<name>.y
。也许我会把它改成<name>.x
和<name>.y
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[showgrid=bottom](4,3)
\pnode(4,3){A}
\pnode(0,2){B}
\psline[linecolor=red]{->}(A)
\psline[linecolor=green]{->}(B)
\pnode(!N-B.y N-A.y div N-A.x mul 0 ){D}
\psline[linestyle=dashed,linecolor=gray](B)(D|B)(D)
\psline[linecolor=blue]{->}(O)(D)
\end{pspicture}
\end{document}
答案2
以下是 TikZ 的解决方案:
\documentclass[margin=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[green] (0,0) -- (0,2) coordinate (b);
\draw[red] (0,0) -- (4,3) coordinate (a);
\draw[blue] let \p1=(a), \p2=(b) in (0,0) -- (\y2/\y1*\x1,0);
\end{tikzpicture}
\end{document}
答案3
我补充一下 Herbert Voss 的回答。如果矢量尾不在原点,则计算必须包括尾矢量,如下所示。
借助最新的 PSTricks 核心,
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[showgrid=bottom](-1,-2)(4,3)
\pnode(-1,-2){O}
\pnode(4,3){A}
\pnode(0,2){B}
\psline[linecolor=red]{->}(O)(A)
\psline[linecolor=green]{->}(O)(B)
\pnode(!N-B.y N-O.y sub N-A.y N-O.y sub div N-A.x N-O.x sub mul N-O.x add 0){C}
\psline[linestyle=dashed,linecolor=gray](B)(C|B)(C)
\psline[linecolor=blue]{->}(O)(C)
\end{pspicture}
\end{document}