我需要 Tikz 中一些矢量方面的帮助。我不知道如何放置 B 和 v 之间的角度!
它看起来应该像这样(没有粗黄色 q+ 球):
以下是我尝试过的:
\documentclass[border=10pt, tikz]{standalone}
\usetikzlibrary{calc,intersections} %,quotes,angles doesn't work
\begin{document}
\begin{tikzpicture}
\coordinate (start) at (0,0) {};
\coordinate (A) at (0,5) node [above of=A, yshift=-20pt] {$\vec{q} (\vec{v} \vec{B})$};
\coordinate (B) at ($(A)+(-20:3)$) node [above of=B, yshift=-20pt] {$\vec{q} \vec{E}$};
\draw[->] (0,0) -- (A);
\draw[->] (0,0) -- (B);
\draw[->,red] (0,0) -- ($(0,0)!0.3333!(B)$) node [right, yshift=-5pt] {$\vec{E}$};
\draw[->] (0,0) -- (4,1) node [right] (F) {$\vec{B}$};
\draw[->] (0,0) -- (2.5,-.5) node [right] (G) {$\vec{v}$};
%\draw pic["$\alpha$", draw=orange, <->, angle eccentricity=1.2, angle radius=1cm]
{angle=start--F--G};
\end{tikzpicture}
\end{document}
谨此致以亲切的问候并提前感谢您!
答案1
您可以使用let .. in
语法来计算(A)+(B)
,或者使用calc
带有的语法($(A)+(B)$)
。
% Option 1
\draw[violet,->] let \p1 = (A) , \p2 = (B) in (0,0) -- (\x1+\x2,\y1+\y2) coordinate (A+B);
% Option 2
\draw[violet,->] (0,0) -- ($(A)+(B)$) coordinate (A+B);
如果某些库“不起作用”,则可能是您的安装有问题。
以下是完整图片:
\documentclass[border=10pt, tikz]{standalone}
\usetikzlibrary{calc,arrows.meta,angles,bending,quotes}
\renewcommand*\vec{\mathbf}
\begin{document}
\begin{tikzpicture}[ultra thick,>={Triangle[angle=30:4pt 4]}]
\coordinate (O) at (0,0);
\coordinate[label=180:{$q (\vec{v} \times \vec{B})$}] (qvB) at (0,5);
\coordinate[label=0:{$q \vec{E}$}] (qE) at ($(qvB)+(-20:3)$);
\coordinate[label=45:{$\vec{F}$}] (F) at ($(qvB)+(qE)$);
\coordinate[label=0:{$\vec{E}$}] (E) at ($(O)!0.45!(qE)$);
\coordinate[label=0:{$\vec{B}$}] (B) at (4,1);
\coordinate[label=0:{$\vec{v}$}] (v) at (2.5,-.5);
\draw[thin,blue] (qvB) -- (F) -- (qE);
\draw[->,blue] (O) -- (qvB);
\draw[->,blue] (O) -- (qE);
\draw[->,violet] (O) -- (F);
\draw[->,green!70!black] (O) -- (E);
\draw[->,green!70!black] (O) -- (B);
\draw[->,orange] (O) -- (v);
\pic[thick,draw,->,angle radius=1.7cm,angle eccentricity=1.2,"$\theta$"] {angle=v--O--B};
\node[fill=orange!80!yellow,circle,fill] at (O) {$+q$};
\end{tikzpicture}
\end{document}
答案2
如果你正在使用calc
库,则可以使用分数语法
\draw (a) -- ($(a)!0.3333!(b)$);
a
从向画出三分之一的路程b
。
另请参阅PGF/TikZ 中“right of=”和“right=of”之间的区别left of
避免使用由于兼容性原因仍受支持的语法。最佳做法是使用positioning
库。
答案3
感谢大家的精彩回答。结果如下:
\documentclass[border=10pt, tikz]{standalone}
\usetikzlibrary{calc,intersections} %,quotes,angles doesn't work
\begin{document}
\begin{tikzpicture}
\coordinate (start) at (0,0) {};
\coordinate (A) at (0,5) node [above of=A, yshift=-20pt] {$\vec{q} (\vec{v} \vec{B})$};
\coordinate (B) at ($(A)+(-20:3)$) node [above of=B, yshift=-20pt] {$\vec{q} \vec{E}$};
\draw[->] (0,0) -- (A);
\draw[->] (0,0) -- (B);
\draw[->] (0,0) -- ($(A)+(B)$) coordinate (C) node [above,xshift=2pt] {$\vec{F}$};
\draw[gray,dashed] (A) -- (C) -- (B);
\draw[->,red] (0,0) -- ($(0,0)!0.3333!(B)$) node [right, yshift=-5pt] {$\vec{E}$};
\draw[->] (0,0) -- (4,1) coordinate (B2) node[right] {$\vec{B}$};
\draw[->] (0,0) -- (2.5,-.5) coordinate (v) node [right] (G) {$\vec{v}$};
\path[clip] (start) -- (B2) -- (v);
\fill[red, opacity=0.5, draw=black] (start) circle (5mm) node [right, black, xshift=15 pt, opacity=1,yshift=0.5pt] {$\theta$};
\node [black] at ($(start)+(30:7mm)$) {$\theta$};
\end{tikzpicture}
\end{document}