答案1
这是实现此目的的一种方法。
战略
- 使用,它是-pathes
\pic
的一种宏Tikz
\pic
为xy
-系统、com
-框架和lab
-框架设计 3s- 根据需要放置
Documentclass 和包/库
- 对于开发来说使用
standalone
更好 arrows.meta
允许您修改箭头尖,或使用预定义的箭头尖angles
并quotes
用于绘制和标记角度
\documentclass[10pt,border=3mm,tikz]{standalone}% nicer for development
\usetikzlibrary{arrows.meta} % provides arrow tips etc.
\usetikzlibrary{angles,quotes} % to draw angles
xy-pic
所有的\pic
s 都在 style 部分中定义,这里是在 的开头tikzpicture
。您也可以改用\tikzset
。
在 pic 语句中,您只需绘制,即放置一组路径语句。想象一下拥有自己的画布,即只需像在任何其他画布中一样引用坐标。放置stikzpicture
时,将使用正确的绝对位置。\pic
Tikz
除了通过 3 个点画一条线,两端都有箭头外,此路径还包含两个节点,放置轴标签,并根据需要进行移动,在此路径结束之前;
,
请注意末尾的逗号,因为这些图片是在样式部分中定义的。
xy/.pic={ % the coordinate system
\draw[<->] (1,0) node[xshift=1.5mm] {x} -- (0,0)
-- node[yshift=1.5mm] {y} (0,1);
},
实验室图片
相同的想法,但包含更多内容。
这些坐标对于稍后绘制角度很有用:这需要 3 个坐标。
这些向量只是带有一个箭头的线,再次放置标签。我本可以使用 (-1.4,0) 的坐标,但根本没有这样做。above
将节点文本移到路径上方,同时pos=.4
或midway == pos.5
将其沿着要绘制的路径移动。对于 V'2,使用极坐标中的移位很有用。
角度只是一种特殊的东西\pic
,你可以指定它们的外观。最重要的是要正确排列这 3 个点的顺序。
为了方便起见,我将标题与lab
-整合在一起\pic
。这可能是也可能不是一个好主意,因为这样当你改变向量时,你需要重新调整它们的位置。
lab/.pic={ % the lab-frame
% ~~~ most needed coordinates ~~~~~~~~~~~~~~~~~~~~~~~~~
\coordinate (A) at (0,0); % the point of collision
\coordinate (B) at (40:1.3); % V'1
\coordinate (C) at (-50:1.3); % V'2
\coordinate (D) at (15mm,0); % end point of reference line
% ~~~ vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\draw[->] (-1.4,0) -- node[above,midway] {$\vec{V_1}$} (A);
\draw[->] (A) -- node[above,pos=.4] {$\vec{V'_1}$} (B);
\draw[->] (A) -- node[shift=(230:3mm),pos=.4] {$\vec{V'_2}$} (C);
\draw[dotted] (A) -- (D);
% ~~~ angles ~~~~~~~~~~~
\pic[draw,<->,angle radius=7mm,"$\psi$"] {angle={D--A--B}};
\pic[draw,<->,angle radius=8mm,"$\zeta$"] {angle={C--A--D}};
% ~~~ title ~~~~~~~~~~~~~~~~
\node at (0,2) {laboratory frame};
},
漫画
这里没有什么新内容,除了坐标(A1)
稍微向右移动,以及对标题位置进行一些细微的调整。
将你想要的绘图放在一起
现在,您需要做的就是放置 3 \pic
。
% ~~~ intended overall drawing ~~~~~~~~~
\pic at (0 ,0) {xy};
\pic at (3.5,0) {com};
\pic at (7, 0) {lab};
展示潜力
现在您可以根据需要放置 3 张图片的任意多个副本。例如,您甚至可以旋转它、更改其颜色并保持形状不变。
% ~~~ demonstrating the potential ~~~~~~~~~~~~~~~~
\pic[rotate=-30,transform shape,red!80!blue!90] at (4,-5) {lab};
代码
\documentclass[10pt,border=3mm,tikz]{standalone}% nicer for development
\usetikzlibrary{arrows.meta} % provides arrow tips etc.
\usetikzlibrary{angles,quotes} % to draw angles
\begin{document}
\begin{tikzpicture}[
> = {Stealth}, % overwriting default tip
xy/.pic={ % the coordinate system
\draw[<->] (1,0) node[xshift=1.5mm] {x} -- (0,0)
-- node[yshift=1.5mm] {y} (0,1);
},
lab/.pic={ % the lab-frame
% ~~~ most needed coordinates ~~~~~~~~~~~~~~~~~~~~~~~~~
\coordinate (A) at (0,0); % the point of collision
\coordinate (B) at (40:1.3); % V'1
\coordinate (C) at (-50:1.3); % V'2
\coordinate (D) at (15mm,0); % end point of reference line
% ~~~ vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\draw[->] (-1.4,0) -- node[above,midway] {$\vec{V_1}$} (A);
\draw[->] (A) -- node[above,pos=.4] {$\vec{V'_1}$} (B);
\draw[->] (A) -- node[shift=(230:3mm),pos=.4] {$\vec{V'_2}$} (C);
\draw[dotted] (A) -- (D);
% ~~~ angles ~~~~~~~~~~~
\pic[draw,<->,angle radius=7mm,"$\psi$"] {angle={D--A--B}};
\pic[draw,<->,angle radius=8mm,"$\zeta$"] {angle={C--A--D}};
% ~~~ title ~~~~~~~~~~~~~~~~
\node at (0,2) {laboratory frame};
},
com/.pic={ % center of mass frame
% ~~~ most needed coordinates ~~~~~~~~~~~~~~~~~~~~~~~~~
\coordinate (A) at (0,0); % the point of collision
\coordinate (B) at (40:13mm); % v'1
\coordinate (A1) at (.2,0); % slightly shifted towards the right
\coordinate (C) at (230:13mm); % v'2
\coordinate (D) at (1.5,0); %
% ~~~ vectors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\draw[->] (-1.3,0) -- node[above,midway] {$\vec{v_1}$} (A);
\draw[->] (A) -- node[above,pos=.4] {$\vec{v'_1}$} (B);
\draw[->] (D) -- node[below,pos=.35] {$\vec{v_2}$} (A1);
\draw[->] (A1) -- node[right,pos=.5] {$\vec{v'_2}$} (C);
% ~~~ angle ~~~~~~~~~~~
\pic[draw,<->,angle radius=9mm,"$\theta$"] {angle={D--A--B}};
% ~~~ title ~~~~~~~~~~~~~~~~
\node at (0,2.05) {center of mass frame};
},
]
% ~~~ intended overall drawing ~~~~~~~~~
\pic at (0 ,0) {xy};
\pic at (3.5,0) {com};
\pic at (7, 0) {lab};
% ~~~ demonstrating the potential ~~~~~~~~~~~~~~~~
\pic[rotate=-30,transform shape,red!80!blue!90] at (4,-5) {lab};
\end{tikzpicture}
\end{document}