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

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

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

Не могу понять как нарисовать закрашенные треугольные лучи солнца (картинка во вложении), код ниже:
Листинг программы
  1. uses crt,graph;
  2. const CENTR_X=200; CENTR_Y=200; {центр окружности}
  3. RADIUS = 50; {радиус}
  4. var
  5. d,m : smallint;
  6. i : integer;
  7. x1,y1,x2,y2,x3,y3 : integer;
  8. begin
  9. clrscr;
  10. d := detect;
  11. initgraph(d,m,'');
  12. setcolor(14); { меняем цвет на желтый }
  13. circle(CENTR_X,CENTR_Y,RADIUS); { рисуем окружность }
  14. setfillstyle(1,14); { устанавливаем стиль закрашивания }
  15. floodfill(CENTR_X,CENTR_Y,14); { закрашиваем окружность }
  16. {теперь рисуем лучи. Всего 8.}
  17. for i:=1 to 8 do
  18. begin
  19. case i of
  20. 1 : begin
  21. Line (190,130,210,130)
  22. end;
  23. end; {case}
  24. moveto(CENTR_X,CENTR_Y);
  25. end;
  26. readln;
  27. closegraph;
  28. end.

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

textual
Листинг программы
  1. uses graph;
  2. {процедура рисования треугольника}
  3. procedure trg(x,y,a:integer;u:real);
  4. var i:byte;
  5.     p:array[1..4] of pointtype;
  6. begin
  7. p[1].x:=x+round(a*cos(u+pi/2));
  8. p[1].y:=y-round(a*sin(u+pi/2));
  9. p[2].x:=x+round(a*cos(u-pi/2));
  10. p[2].y:=y-round(a*sin(u-pi/2));
  11. p[3].x:=x+round(3*a*cos(u));
  12. p[3].y:=y-round(3*a*sin(u));
  13. p[4]:=p[1];
  14. setcolor(14);
  15. setfillstyle(1,14);
  16. fillpoly(4,p);
  17. end;
  18. var x0,y0,r,r1,a,i,x,y: integer;
  19.     u:real;
  20. begin
  21. x0:= detect;
  22. initgraph(x0,y0,'');
  23. x0:=getmaxX div 2;
  24. y0:=getmaxY div 2;
  25. r:=(y0-50) div 3;
  26. a:=r div 4;
  27. setcolor(14);
  28. setfillstyle(1,14);
  29. fillellipse(x0,y0,r,r);
  30. u:=pi/2;
  31. r1:=r+r div 10;
  32. for i:=1 to 8 do
  33.  begin
  34.   x:=x0+round(r1*cos(u));
  35.   y:=y0-round(r1*sin(u));
  36.   trg(x,y,a,u);
  37.   u:=u+pi/4;
  38.  end;
  39. readln
  40. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут