Построить график функции x=a(sin(t)-t), y=a(cos(t)-t) (a>0) — Pascal(Паскаль)

{$N+}
{$E+}
program ex;

uses crt, graph;

type
  tcurve = procedure(t: double; var x, y: double);

const

  a = 3;
  b = 9;
  L: double = 4;

  scale = 12; { mashtab izobrageniya }
  step = 0.005;

  {
    procedura dlya otrisovki tochki krivoy,
    parametricheskoe predstavlenie kotoroy zadano funkchiey F
    pri znachenii parametra = T
  }

procedure set_point(t: double; f: tcurve);
var
  x, y: double;
begin
  f(t, x, y);
  putpixel((getmaxx div 2) + trunc(scale * x),
    (getmaxy div 2) - trunc(scale * y), white);
end;

{
  otrisovka krivoy so znacheniem parametra,
  legavshim v intervale [start, finish] i shagom izmeneniya parametra step
}

procedure draw_curve(start, finish, step: double; f: tcurve);
var
  t: double;
begin
  { risovanie osi koordinat }
  setcolor(green);
  line(0, getmaxy div 2, getmaxx, getmaxy div 2);
  line(getmaxx div 2, 0, getmaxx div 2, getmaxy);

  t := start; { nachalo intervala }

  { poka ne vishli za granichu intervala }

  while t <= finish do
  begin
    set_point(t, f);
    t := t + step; { narashivaem parametr }
  end;
end;

procedure evolventa(t: double; var x, y: double); far;
begin
  x := a * (sin(t) - t);
  y := a * (cos(t) - 1);
end;

var
  mode, driver: integer;

begin
  driver := detect;
  initgraph(mode, driver, 'D:\program\bp\bgi');

  { draw_curve(nachalo intervala, konech intervala, shag, my_curve); }

  draw_curve(-10, 10, step, evolventa);
  readln;

  closegraph;

end.

Leave a Comment

8 + 2 =