我想要制作一个像左边这样的三环图。
我使用以下脚本
\fmfleft{i}\fmfright{o}
\fmf{boson}{i,v1}\fmf{boson}{v2,o}
\fmf{phantom,left,tension=0.1}{v1,v2,v1}\fmffreeze
\fmfipath{p[]}
\fmfiset{p1}{vpath (__v1, __v2)}
\fmfiset{p2}{vpath (__v2, __v1)}
\fmfi{plain}{subpath (0, 1)*length(p1) of p1}
\fmfi{plain}{subpath (0, 1)*length(p2) of p2}
\fmfipair{vn,vs}
\fmfiequ{vn}{point 0.3length(p1) of p1}
\fmfiequ{vs}{point 0.3length(p2) of p2}
\fmfi{gluon}{vn--vs}
结果如下。
但是我不知道如何在现有循环内创建另一个循环(第一张图片中 M1 内的 M2)。
答案1
这不是一个真正合适的答案,因为我不是这方面的专家feynmp
(可能是因为我不是物理学家),但如果你知道一点,metapost
你可以通过使用包中的curly
和wiggly
宏来作弊feynmp
。这是绘制 OP 想要的图片的一种方法。
input feynmp
prologues := 3;
outputtemplate := "ff.eps";
beginfig(1);
path inner_ring, outer_ring;
inner_ring = fullcircle scaled 50;
outer_ring = fullcircle scaled 120;
drawoptions(withpen pencircle scaled 1bp);
drawarrow reverse outer_ring rotated -225;
drawarrow subpath (0,4) of inner_ring;
drawarrow subpath (4,8) of inner_ring;
drawoptions();
draw curly point 2 of outer_ring -- point 2 of inner_ring;
draw curly point 6 of inner_ring -- point 6 of outer_ring;
draw wiggly point 4 of outer_ring + 20 left -- point 4 of outer_ring;
draw wiggly point 0 of outer_ring -- point 0 of outer_ring + 20 right;
label.rt(btex $\rm M_1$ etex, point 1 of outer_ring);
label.rt(btex $\rm M_2$ etex, point 1 of inner_ring);
for p = 0, 2, 4, 6: fill fullcircle scaled 3bp shifted point p of outer_ring; endfor
for p = 2, 6: fill fullcircle scaled 3bp shifted point p of inner_ring; endfor
endfig;
end.