asteroid.PAS

{* Астроида (график) *}

Unit ASTEROID;
Interface
Implementation
Begin
 writeln('
параметрическое уравнение астроиды x = R cos^3(u) y = R sin^3(u)
'
);
End.

Program asteroid;

Uses asteroid.pas; {* Эту строку можно удалить *}
Uses Graph; {* Подключение модулей *}
Const {* Константы *}
  Alpha = 650; {точность построений}
  Ox    = 300; {координаты нового начала координат}
  Oy    = 250;
  Radius = 200; {радиус астроиды}
Var {* Необходимые переменные *}
  grDriver : Integer; {переменные для установки графического режима}
  g        : Integer;
  E        : Integer;
  FillInfo : FillSettingsType; {переменная для хранения заполнения "по умолчанию"}
  u        : integer;
  NewX     : integer;
  NewY     : integer;
  X        : integer;
  Y        : integer;
Begin
  g := Detect;
  InitGraph(grDriver, g, 'c:tp7'); {инициируем графику}
  E := GraphResult;
  If E = grOk Then {если удачно, то продолжаем}
  Begin
    For u := 0 To Alpha Do {* Переменная u увеличивается с 0 до Alpha *}
    Begin
      X := Round(Radius * sqr(cos(u)) * cos(u)); {вычисяем координаты точки}
      Y := Round(Radius * sqr(sin(u)) * sin(u));
      NewX := Ox + X; {сдвигаем начало координат}
      NewY := Oy + Y;
      PutPixel(NewX, NewY, Red); {выводим точку на экран}
    End;
    Readln; {ждем нажатия Enter}
    CloseGraph; {закрытие графики}
  End;
  
End.