Восьми угольная звезда вписанная в окружность - Free Pascal
Формулировка задачи:
Здравствуйте! Помогите пожалуйста с программой. Необходимо нарисовать восьми угольную звезду по принципу безотрывных линий вписанную в окружность. Каждую из полученных фигур закрасить разными цветами.
Решение задачи: «Восьми угольная звезда вписанная в окружность»
textual
Листинг программы
uses graph; var gd,gm,xc,yc,r,i:integer; p,p1:array[1..8] of pointtype; a:real; begin gd:=0; initgraph(gd,gm,''); xc:=getmaxX div 2; yc:=getmaxY div 2; r:=100; a:=0; for i:=1 to 8 do begin p[i].x:=xc+round(r*cos(a)); p[i].y:=yc-round(r*sin(a)); a:=a+pi/4; end; setfillstyle(1,14); bar(xc-r-20,yc-r-20,xc+r+20,yc+r+20); Setlinestyle(0,0,3); setfillstyle(1,10); Setcolor(10); Circle(xc,yc,r); floodfill(xc,yc,10); Setcolor(2); Circle(xc,yc,r); SetColor(13); Moveto(p[1].x,p[1].y); LineTo(p[4].x,p[4].y); LineTo(p[7].x,p[7].y); LineTo(p[2].x,p[2].y); LineTo(p[5].x,p[5].y); LineTo(p[8].x,p[8].y); LineTo(p[3].x,p[3].y); LineTo(p[6].x,p[6].y); LineTo(p[1].x,p[1].y); setfillstyle(1,13); floodfill(xc,yc,13); r:=40; a:=pi/8; for i:=1 to 8 do begin p1[i].x:=xc+round(r*cos(a)); p1[i].y:=yc-round(r*sin(a)); a:=a+pi/4; floodfill(p1[i].x,p1[i].y,13); end; r:=50; a:=pi/4; for i:=1 to 8 do begin p1[i].x:=xc+round(r*cos(a)); p1[i].y:=yc-round(r*sin(a)); a:=a+pi/4; floodfill(p1[i].x,p1[i].y,13); end; SetColor(12); Moveto(p[1].x,p[1].y); LineTo(p[4].x,p[4].y); LineTo(p[7].x,p[7].y); LineTo(p[2].x,p[2].y); LineTo(p[5].x,p[5].y); LineTo(p[8].x,p[8].y); LineTo(p[3].x,p[3].y); LineTo(p[6].x,p[6].y); LineTo(p[1].x,p[1].y); readln end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д