我很差Asymptote
,我需要创建下图的一个版本(如果这不起作用,请参见屏幕截图,但没有不知何故出现在我的屏幕截图中的那个灰点):
\begin{asymptote}
unitsize(0.5cm);
for (int n = 1; n <= 6; ++n) {
picture p;
for (int i =0; i <= 6; ++i) {
draw(p, expi(-pi/2+(2i-1)*pi/n)--expi(-pi/2+(2i+1)*pi/n));
dot(p, expi(-pi/2+(2i-1)*pi/n));
}
add(shift((3*n, cos(pi/n)))*p);
}
\end{asymptote}
除了那些多边形是 3D 的。我正在尝试学习Asymptote
,但现在我太忙于编辑我的项目(今晚截止),所以如果有人能asymptote
为此创建图表就太好了。我希望这不会太难,如果有人创建图表,我将非常感激 :)
提前致谢!
答案1
欢迎来到 TeX.SX!您可能想阅读TeX.SX 入门指南,这说明这实际上不应该是一个“请帮我做这件事”的网站。您将获得针对具体问题的更好答案,而不是请求帮助完成作业。
有一些很好的教程适用于 Asymptote,如果你真的想要 3D,它可能是最好的工具。但如果你想要展示的 2D 多边形,那么你也可以考虑评论中推荐的 TikZ 或(我的偏好)元帖子。
这是 MP 中的图表版本。它已包含在内,luamplib
因此您需要使用 进行编译lualatex
。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
numeric r; r = 21;
path C, c; c = fullcircle scaled 2r rotated 90;
for n=1 upto 6:
C := c if not odd n: rotated (180/n) fi
shifted ((2.8n, sind(90-180/n)) * r);
draw point 0 of C for i=1 upto n: -- point 8i / n of C endfor;
for i=1 upto n:
drawdot point 8i / n of C withpen pencircle scaled 4;
endfor
endfor
endfig;
\end{mplibcode}
\end{document}
这里唯一棘手的是调整每个圆路径,使绘制在它们周围的多边形位于基线上。这是通过旋转偶数路径并垂直移动sind(90-180/n)
半径倍数来实现的。
还要注意,MP 的for
循环在需要时可以“内联”使用。
答案2
首先,使用 TikZ(我认为这是最简单的一个):
\documentclass{article}
\usepackage{tikz,lipsum}
\begin{document}
\lipsum[1]
\begin{center}
\begin{tikzpicture}[thick,nodes={circle,draw,fill=red},inner sep=1.5pt]
\def\a{1} % length of an edge
\path (0,0) node{};
\draw[shift={(0:1)}] (0,0) node{}--(0:\a) node{};
\draw[shift={(0:3)}] (0,0) node{}--(0:\a) node{}--
([turn]120:\a) node{}--cycle;
\draw[shift={(0:5)}] (0,0) node{}--(0:\a) node{}--
([turn]90:\a) node{}--
([turn]90:\a) node{}--cycle;
\draw[shift={(0:7)}] (0,0) node{}--(0:\a) node{}--
([turn]72:\a) node{}--
([turn]72:\a) node{}--
([turn]72:\a) node{}--cycle;
\draw[shift={(0:9.5)}] (0,0) node{}--(0:\a) node{}--
([turn]60:\a) node{}--
([turn]60:\a) node{}--
([turn]60:\a) node{}--
([turn]60:\a) node{}--cycle;
\end{tikzpicture}
\end{center}
\lipsum[10]
\end{document}
Asymptote
稍后会给出代码!