如何使用metapost生成多边形数字?

发布于 2024-08-21 14:12:37 字数 208 浏览 6 评论 0原文

我正在学习 Metapost,我想知道如何生成像多边形数字这样的图形 http://en .wikipedia.org/wiki/Polygonal_number,我得到了三角形数字,但没有六边形。

感谢您的帮助。

I'm learning metapost and i want to know how to generate a figure like a polygon number http://en.wikipedia.org/wiki/Polygonal_number , i got triangular numbers but not hexagonal.

Thanks for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那请放手 2024-08-28 14:12:37

我突然想到,如果你不关心彼此绘制点和线,那么这个问题就很容易了。以下内容与罪恶一样丑陋,主要是因为仅使用 fullcircle scaled 来定义点,但它有效:

beginfig(1);
pair right, nright;
u:=1cm; right:=(u,0);
path p,q,dot,seg;
dot:=fullcircle scaled (u/2);
seg:=(0,0)-- (dot shifted right);
for N=1 upto 6:
  p:=dot; nright:=(N*u,0);
  for i=1 upto N:
    p:=seg -- (p shifted right);
  endfor
  q:=(0,0);
  for j=1 upto 6:
    q:=p -- ((q rotated 60) shifted nright);
  endfor
  draw q;
endfor
endfig

此方法应该适用于所有 n 角数。

It occurred to me that if you don't care about drawing points and lines upon each other, then this problem is pretty easy. The following is as ugly as sin, mostly because of the definition of dot using just fullcircle scaled, but it works:

beginfig(1);
pair right, nright;
u:=1cm; right:=(u,0);
path p,q,dot,seg;
dot:=fullcircle scaled (u/2);
seg:=(0,0)-- (dot shifted right);
for N=1 upto 6:
  p:=dot; nright:=(N*u,0);
  for i=1 upto N:
    p:=seg -- (p shifted right);
  endfor
  q:=(0,0);
  for j=1 upto 6:
    q:=p -- ((q rotated 60) shifted nright);
  endfor
  draw q;
endfor
endfig

This approach should work for all of the n-gonal numbers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文