Построить фрактал пентакл. Программа строит пятиконечную звезду, в которую вписана пятиконечная звезда, в которую вписана пятиконечная звезда... Входными данными является длина стороны первоначальной звезды. Далее по формулам вычисляем координаты вершин звезды. R - расстояние между вершинами звезды. Строим звезду, уменьшаем R, строим звезду с новым R, уменьшаем ... uses graph, crt; var gd,gm,i:integer; x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,l,r:integer; procedure calculationx(r:integer); {процедура вычисления Х координат вершин звезды} begin x1:=x0; x2:=x0+trunc(r*sin(36*pi/180)); x3:=x0-trunc(r*cos(18*pi/180)); x4:=x0+trunc(r*cos(18*pi/180)); x5:=x0-trunc(r*sin(36*pi/180)); end; procedure drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5:integer); {процедура построения звезды} begin SetColor(5); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x4,y4); line(x4,y4,x5,y5); line(x5,y5,x1,y1); end; procedure stars(r:integer); var y1,y2,y3,y4,y5:integer; begin calculationx(r); y1:=y0-r; {вычисления Y координат вершин звезды} y2:=y0+trunc(r*cos(36*pi/180)); y3:=y0-trunc(r*sin(18*pi/180)); y4:=y0-trunc(r*sin(18*pi/180)); y5:=y0+trunc(r*cos(36*pi/180)); drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5); {строим звезду по найденым координатам} r:=trunc(r*sin(18*pi/180)/sin(126*pi/180)); {вычисляем расстояние между вершин для звезды, которая будет вписана в предыдущую} calculationx(r); {рассчитываем X координаты звезды, которая будет вписана в предыдущую} y1:=y0+r; {рассчитываем Y координаты звезды, которая будет вписана в предыдущую} y2:=y0-trunc(r*cos(36*pi/180)); y3:=y0+trunc(r*sin(18*pi/180)); y4:=y0+trunc(r*sin(18*pi/180)); y5:=y0-trunc(r*cos(36*pi/180)); drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5); {строим звезду по найденым координатам} if (r>0) then stars(trunc(r*sin(18*pi/180)/sin(126*pi/180))); {если расстояние между вершинами следующей звезды меньше нуля, то нет смысла ее строить. иначе повторяем процедуру} end; begin read(l); {вводим длину стороны начальной звезды,в которую будут вписаны остальные} gd:=detect; {инициализация графики} initgraph(gd,gm,''); x0:=getmaxx div 2; y0:=getmaxy div 2; r:=trunc(l/cos(18*pi/180)/2); {расстояние между вершинами звезды} stars(r); readkey; end.
Ключевые слова:
Пентакл фрактал звезда
|
|||||||