修改我的费曼图:绘制正方形和从正方形中引出的线条

修改我的费曼图:绘制正方形和从正方形中引出的线条

我有以下代码:

\documentclass[border=3mm]{standalone}
\usepackage{tikz-feynman}
\usetikzlibrary{shapes.geometric}
\usepackage{amsmath}

\begin{tikzpicture}
\begin{feynman}
\node[shape=circle,draw=black, inner sep=0pt,minimum size=20pt] (m) at ( 0, 0) {};
\node[shape=rectangle,fill=black] (n) at (3, 0) {square };
\vertex (a) at ( 210:2cm) {};
\vertex (b) at ( -30:2cm) {};
\vertex (c) at (150:2cm) {};
\vertex (d) at (30:2cm) {};      
        
\diagram* {
(a) -- [photon,edge label'=$q_2$] (m) 
-- [photon,edge   label'=$q_1$] (c),
(n) -- [bend left=45, edge label=$\pi^+(K^+)$] (m)
-- [bend left=45, edge label=$\pi^-(K^-)$] (n),
};
\end{feynman}
\end{tikzpicture}

\end{document}

生成结果:

在此处输入图片描述

我有三个问题:

  1. 怎样才能将长方形变成正方形呢?

  2. 如何才能使曲线从左边的两个顶点进入正方形?

  3. 我们如何才能从右边正方形的另外两个顶点创建两条直线?

感谢您的帮助!

答案1

  1. 现在,节点(n)包含文本“square”,其宽度比高度大得多。您可以通过\rule在此处添加一个来使其成为正方形。
  2. 由于几何关系,上述内容也将解决这个问题...
  3. 您还需要两个以节点n为原点计算出的坐标处的顶点。我将它们称为(e)(f)
\documentclass[border=3mm]{standalone}
\usepackage{tikz-feynman}
\usetikzlibrary{shapes.geometric,calc}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\node[shape=circle,draw=black,inner sep=0pt,minimum size=20pt] (m) at (0, 0) {};
\node[shape=rectangle,fill=black] (n) at (3, 0) {\rule{0.5cm}{0.5cm}};
\vertex (a) at (225:2cm) {};
\vertex (b) at (-45:2cm) {};
\vertex (c) at (135:2cm) {};
\vertex (d) at (45:2cm) {};
\vertex (e) at ($(n) + (-45:2cm)$) {};
\vertex (f) at ($(n) + (45:2cm)$) {};

\diagram*{
(a) -- [photon,edge label'=$q_2$] (m)
-- [photon,edge   label'=$q_1$] (c),
(n) -- [bend left=45, edge label=$\pi^+(K^+)$] (m)
-- [bend left=45, edge label=$\pi^-(K^-)$] (n),
(e) -- (n) -- (f),
};
\end{feynman}
\end{tikzpicture}
\end{document}

我还将线条的角度改为 45 度,而不是 30 度,否则离开黑色方块的线条将不会落在顶点上(同样,因为几何原因)。

结果如下所示:

结果

相关内容