Графика: нарисовать связку из трех воздушных шариков - Pascal ABC
Формулировка задачи:
Нарисовать связку из трех воздушных шариков.
Решение задачи: «Графика: нарисовать связку из трех воздушных шариков»
textual
Листинг программы
uses GraphABC; //Заполненный повернутый эллипс: procedure myEllipse(a,b,x0,y0,cl:integer;fi:real); var x1,y1,x,y,i,n: integer; x2,y2,t:real; begin n:=500; SetPenColor(cl); fi:=pi*fi/180; //угол поворота x:=x0; y:=y0; for i:=1 to n do begin t:=2*pi*i/ n; // уравнение эллипса: x2:=a*cos(t); y2:=b*sin(t); // преобразование координат (поворот эллипса fi на градусов): x1:=x0+round(x2*cos(fi)-y2*sin(fi)); y1:=y0-round(x2*sin(fi)+y2*cos(fi)); if i=1 then MoveTo(x1,y1) else LineTo(x1,y1); x:=x1; y:=y1 end; FloodFill(x0,y0,cl) end; var x,y:integer; begin setwindowsize(400,400); x:=windowwidth div 2; y:=windowheight div 2-70; setpencolor(clRed); setbrushcolor(clRed); Ellipse(x-40,y-70,x+40,y+70); myEllipse(70,40,x-70,y+55,clSkyBlue,125); myEllipse(70,40,x+70,y+55,clLime,55); setpencolor(clBlack); setpenwidth(2); line(x,y+150,x,y+70); line(x,y+150,x-25,y+110); line(x,y+150,x+25,y+110); setpencolor(clBrown); setbrushcolor(clBrown); rectangle(x-5,y+150,x+5,y+200); end.
Объяснение кода листинга программы
- Подключается библиотека GraphABC.
- Создается процедура myEllipse, которая рисует эллипс с заданными параметрами.
- Переменные n, x0, y0, cl и fi инициализируются значениями 500, 0, 0, красный и 125 соответственно.
- Устанавливается цвет кисти в красный.
- Задаются начальные координаты для рисования эллипса (x1, y1).
- В цикле for происходит рисование эллипса с использованием x1, y1 как начальных координат.
- После завершения цикла, происходит заливка области вокруг точки (x0, y0) указанным цветом.
- Устанавливается размер кисти в 2.
- Рисуется линия между точками (x, y+150), (x-25, y+110) и (x+25, y+110).
- Рисуется прямоугольник с координатами (x-5, y+150), (x+5, y+200).
- Задается цвет кисти в коричневый.
- Программа завершается.