Мне пришло в голову, что если вас не волнует рисование точек и линий друг на друге, тогда эта проблема довольно проста. Следующее так же безобразно, как грех, в основном из-за определения точки, использующего просто 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 -гональных чисел.