Рисование с применением циклов

Рисование  с применением циклов


       Нарисуем объекты и графики функций в Pascal ABC, используя циклы.
       1. Нарисуем случайным цветом 30 окружностей случайного радиуса в пределах от 5 до 50, центры которых лежат в произвольных точках экрана. Раскрасим эти окружности цветом границы.
       Будем использовать цикл  For, поскольку известно число итераций.
       В каждой итерации случайно определяется цвет, радиус и координаты центра каждой окружности.

Program p1;
uses graphABC;                   { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin                                  {начало основного блока операторов программы}
Randomize;                         {инициализируем генератор случайных чисел}
{цикл счета 30 окружностей}
for n:=1 to 30 do
begin
     c:=clRandom;
     SetBrushColor(c);        {установка случайного цвета}
     SetPenColor(c);
     x0:=random(641);    {случайная координата х из диапазона 0-640}
     y0:=random(321);    {случайная координата у из диапазона 0-320}
     R:=5+random(46);    {случайная величина радиуса от 5 до 50}
     Circle(x0,y0,R);    {вывод окружности на экран}
end;
End.


       2. Изменим программу так, чтобы центры окружностей лежали на одной горизонтальной прямой (у = 200).


program p2;
uses graphABC;                   { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c : Integer;
Begin                                  {начало основного блока операторов программы}
Randomize;                         {инициализируем генератор случайных чисел}
y0:=200;                        { координата у }

       {цикл счета 30 окружностей}
for n:=1 to 30 do
begin
     c:=clRandom;                {выбор случайного цвета для кисти и пера}
     SetBrushColor(c);        {установка случайного цвета}
     SetPenColor(c);
     x0:=random(641);        {случайная координата х из диапазона 0-640}
     R:=5+random(46);        {случайная величина радиуса от 5 до 50}
     Circle(x0,y0,R);        {вывод окружности на экран}
end;


End.


       3. Изменим программу так, чтобы центры окружностей лежали на одной вертикальной прямой (х = 300). Раскрасить эти окружности цветом границы.


Program p3;
uses graphABC;                   { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin                                  {начало основного блока операторов программы}
Randomize;                         {инициализируем генератор случайных чисел}
x0:=300;                        {значение x - постоянно}
               {цикл счета 30 окружностей}
for n:=1 to 30 do
begin
     c:=clRandom;                {выбор случайного цвета для кисти и пера}
     SetBrushColor(c);        {установка случайного цвета}
     SetPenColor(c);
     y0:=random(421);        {случайная координата у из диапазона 0-320}
     R:=5+random(46);        {случайная величина радиуса от 5 до 50}
     Circle(x0,y0,R);        {вывод окружности на экран}
end;
End.

  


       4. Выполним последнее задание с помощью циклов с пред- и постусловием.


Цикл с предусловием:


Program p4;
uses graphABC;                   { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin                                  {начало основного блока операторов программы}
Randomize;                         {инициализируем генератор случайных чисел}
n:=1;
x0:=300;                        {значение x - постоянно}
               {цикл с постусловием, пока n<=30}
While n <= 30 do
begin
     c:=clRandom;                {выбор случайного цвета для кисти и пера}
     SetBrushColor(c);        {установка случайного цвета}
     SetPenColor(c);
     y0:=random(421);        {случайная координата у из диапазона 0-320}
     R:=5+random(46);        {случайная величина радиуса от 5 до 50}
     Circle(x0,y0,R);        {вывод окружности на экран}
     n:=n+1;                 {увеличение счетчика}
end;
End.

Цикл с постусловием


Program p5;
uses graphABC;                           { подключаем модуль GraphABC для работы }
var
R, x0, y0, n, c: Integer;
Begin                                          {начало основного блока операторов программы}
Randomize;                                 {инициализируем генератор случайных чисел}
n:=1;
x0:=300;                                {значение x - постоянно}
               {цикл с постусловием, пока n<=30}
Repeat
     c:=clRandom;                        {выбор случайного цвета для кисти и пера}
     SetBrushColor(c);                {установка случайного цвета}
     SetPenColor(c);
     y0:=random(421);        {случайная координата у из диапазона 0-320}
     R:=5+random(46);        {случайная величина радиуса от 5 до 50}
     Circle(x0,y0,R);        {вывод окружности на экран}
     n:=n+1;                 {увеличение счетчика}
until n > 30;
End.


5. Кривая кардиоида


Формула кардиоиды:


x:=320+round(2Rsin(t)+Rsin(2t));
y:=240+round(2Rcos(t)+Rcos(2t));

Program card;
uses graphABC;                           { подключаем модуль GraphABC для работы }
var R,x,y,t: integer;                  {объявления переменных}
Begin
R:=25; 

t:=0;
Repeat
x:=320+round(2*R*sin(t)+R*sin(2*t));  {вычисление координаты х}
y:=240+round(2*R*cos(t)+R*cos(2*t));  {вычисление координаты у}
PutPixel(x,y,clRed);  {вывод точки красного цвета в указанные координаты}
t:=t+1;  {увеличение счетчика цикла}
until t>3600;                  {цикл выполняется, пока значение t не превысит 3600}
End.


6. Кривая астроида


Формула для вывода астроиды:


x:=320+round(Rsin^3(t));
y:=240+round(Rcos^3(t));

Program astr;
uses graphABC;                           { подключаем модуль GraphABC для работы }
var R,x,y,t: integer;                  {объявления переменных}
Begin
R:=25; t:=0;
Repeat
x:=320+round(R*sin(t)*sin(t)*sin(t));  {вычисление координаты х}
y:=240+round(R*cos(t)*cos(t)*cos(t)); {вычисление координаты у}
PutPixel(x,y,clRed);                                  {вывод точки красного цвета в указнные кординаты}
t:=t+1;  {увеличение счетчика цикла}
until t>3600;  {цикл выполняется, пока значение t не превысит 3600}
End.


7. Нарисуем кривую – эпициклоиду за 3600 итераций цикла.


Формула эпициклоиды:


x:=320+round(6.2Rsin(t)+Rsin(6.2t));
y:=240+round(6.2Rcos(t)+Rcos(6.2t));

Program ec;
uses graphABC;                   { подключаем модуль GraphABC для работы }
var R,x,y,t: integer;          {объявления переменных}
Begin
R:=25; t:=0;
Repeat
x:=320+round(6.2*R*sin(t)+R*sin(6.2*t));          {вычисление координаты х}
y:=240+round(6.2*R*cos(t)+R*cos(6.2*t));         {вычисление координаты у}
PutPixel(x,y,clRed);  {вывод точки красного цвета в указнные кординаты}
t:=t+1;  {увеличение счетчика цикла}
until t>3600;  {цикл выполняется, пока значение t не превысит 3600}
End.


8. Нарисуем нефроиду.


Параметры нефроиды:

x:=320+round(6Rcos(t)-4Rcos^3(t));
y:=240+round(4Rsin^3(t));

Program nefr;
uses graphABC;   { подключаем модуль GraphABC для работы }
var R,x,y,t: integer;  {объявления переменных}
Begin
R:=25; t:=0;
Repeat
x:=320+round(6*R*cos(t)-4*R*cos(t)*cos(t)*cos(t)); {вычисление координаты х}
y:=240+round(4*R*sin(t)*sin(t)*sin(t)); {вычисление координаты у}
PutPixel(x,y,clRed);  {вывод точки красного цвета в указнные кординаты}
t:=t+1;  {увеличение счетчика цикла}
until t>3600;  {цикл выполняется, пока значение t не превысит 3600}
End.

 


9. Нарисуем синусоиду (y=10sin(x/10)) в системе координат с осями ОХ и ОУ, и началом координат, расположенным в точке (300,200) экрана.


Сначала нарисуем координатные оси, затем в цикле саму синусоиду.

Program s;
uses graphABC;   { подключаем модуль GraphABC для работы }
var x,y: integer;  {объявления переменных}
Begin
Line(0,200,600,200);{ось х}
Line(300,0,300,400);{ось у}
x:=-300;
Repeat
y:=Round(10*sin(x/10)); {вычисление координаты у}
PutPixel(x+300,200-y,clBlue);  {вывод точки синего цвета с учетом начала координат}
x:=x+1;  {увеличение счетчика цикла}
until x>300;  {цикл выполняется, пока значение x не превысит 300}
End.


Как рисовать различные объекты в Pascal ABC, можно посмотреть здесь.