Мне пришло в голову, что если вам не нужны чертежи точек и линий друг на друга, то эта проблема довольно проста. Ниже уродлив, как грех, в основном из-за определения точки, используя только 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
Этот подход должен работать для всех п -gonal чисел.
Чтобы быть ясным, вам нужна программа, которая генерирует серию диаграмм, таких как диаграммы для первых четырех шестиугольных чисел на странице WP. Это немного нерешительно: рекурсивный случай должен относиться к двум сторонам иначе, чем к другим четырем, но я не вижу, что это сложно. Можете ли вы опубликовать код, который у вас есть, который не работает, чтобы мы могли видеть, где вы ошибаетесь? –