Нарисовать Солнце - Turbo Pascal (29797)

Узнай цену своей работы

Формулировка задачи:

Не могу понять как нарисовать закрашенные треугольные лучи солнца (картинка во вложении), код ниже:

Решение задачи: «Нарисовать Солнце»

textual
Листинг программы
uses graph;
{процедура рисования треугольника}
procedure trg(x,y,a:integer;u:real);
var i:byte;
    p:array[1..4] of pointtype;
begin
p[1].x:=x+round(a*cos(u+pi/2));
p[1].y:=y-round(a*sin(u+pi/2));
p[2].x:=x+round(a*cos(u-pi/2));
p[2].y:=y-round(a*sin(u-pi/2));
p[3].x:=x+round(3*a*cos(u));
p[3].y:=y-round(3*a*sin(u));
p[4]:=p[1];
setcolor(14);
setfillstyle(1,14);
fillpoly(4,p);
end;
var x0,y0,r,r1,a,i,x,y: integer;
    u:real;
begin
x0:= detect;
initgraph(x0,y0,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
r:=(y0-50) div 3;
a:=r div 4;
setcolor(14);
setfillstyle(1,14);
fillellipse(x0,y0,r,r);
u:=pi/2;
r1:=r+r div 10;
for i:=1 to 8 do
 begin
  x:=x0+round(r1*cos(u));
  y:=y0-round(r1*sin(u));
  trg(x,y,a,u);
  u:=u+pi/4;
 end;
readln
end.

Объяснение кода листинга программы

  1. В начале кода подключается библиотека graph, которая, вероятно, содержит функции для работы с графиками.
  2. Затем определяется процедура trg, которая рисует треугольник. В ней используются переменные i, p и u. Переменная i является байтом, а переменные p - массивом типа pointtype (предположительно, это структура или запись, представляющая точку на графике). Переменная u - вещественное число, вероятно, используется для вычисления углов.
  3. Далее определяются переменные x0, y0, r, r1 и a. Переменные x0 и y0 представляют координаты центра графического окна, а переменные r и r1 представляют радиус и увеличенный радиус эллипса соответственно. Переменная a представляет собой отношение между радиусом и высотой эллипса.
  4. Затем вызывается функция initgraph, которая инициализирует график с указанными координатами центра и именем графика.
  5. После этого вычисляются координаты верхней и нижней точек эллипса с помощью формулы (y0-50) / 3 и (y0+50) / 3 соответственно.
  6. Далее определяется цикл, который будет выполняться 8 раз. Внутри цикла вычисляются координаты левой и правой точек эллипса с помощью формулы (x0+round(r1cos(u))) и (y0-round(r1sin(u))) соответственно. Затем вызывается процедура trg с этими координатами и значением u, которое увеличивается на pi/4 после каждой итерации цикла.
  7. В конце кода вызывается функция readln, которая ожидает ввода с клавиатуры и завершает выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5