Построение графиков функций в декартовой системе координат. у1=Sqrt(x2+2)Sin(x); у2=(x+1)Sin(x) диапазон (-10 … 10) — Pascal(Паскаль)

uses graph;

const
  x1 = -10; { начало и конец графика в реальных значениях }
  x2 = 10;

var
  mx, my, a, x, dx, y1, y2, y3, y4: real;
  x0, y0, grD, px, py, grM, i, k: integer;
  s, s1: string;

begin
  grD := detect;
  initgraph(grD, grM, '');
  x0 := getmaxX div 2; { начало координат в центре экрана }
  y0 := getmaxY div 2;
  { коэффициенты по осям для перевода реальных координат в экранные }
  mx := 600 / (x2 - x1); { длина в пикселах по оси Х/реальная длина }
  my := 420 / 18; { длина оси по У/(2*макс }
  SetBkColor(7); { цвет фона }
  setlinestyle(0, 0, 1); { сплошная линия }
  SetColor(1); { цвет линий осей }
  line(0, y0, getmaxX, y0); { ось Х }
  line(x0, getmaxY, x0, 0); { ось У }
  setlinestyle(1, 0, 0); { пунктирная линия }
  SetColor(8); { цвет сетки }
  for i := 1 to 10 do { максимальное количество засечек в одну сторону }
  begin
    line(10, y0 - round(i * my), 630, y0 - round(i * my)); { засечки на оси У }
    line(10, y0 + round(i * my), 630, y0 + round(i * my));
    line(x0 + round(i * mx), 0, x0 + round(i * mx), getmaxY);
    { засечки на оси Х }
    line(x0 - round(i * mx), 0, x0 - round(i * mx), getmaxY);
    str(i, s);
    { подпись оси У }
    outtextXY(x0 - 10, y0 - round(i * my), s); { соответственно засечкам }
    outtextXY(x0 - 20, y0 + round(i * my), '-' + s);
    { подпись оси Х }
    str(i, s);
    outtextXY(x0 + round(i * mx), y0 + 10, s);
    outtextXY(x0 - round(i * mx), y0 + 10, '-' + s);
  end;
  { центр }
  outtextXY(x0 + 5, y0 + 10, '0');
  { подписи концов осей }
  outtextXY(getmaxX - 10, y0 - 10, 'X');
  outtextXY(x0 + 10, 10, 'Y');
  dx := 0.001;
  { график }
  x := x1;
  while x <= x2 do
  begin
    px := x0 + round(x * mx); { изменение по оси Х }
    y1 := sqrt(x * x + 2) * sin(x); { график в реальных координатах }
    py := y0 - round(y1 * my); { в экранных }
    putpixel(px, py, 9);
    y2 := (x + 1) * sin(x); { график в реальных координатах }
    py := y0 - round(y2 * my); { в экранных }
    putpixel(px, py, 5);
    x := x + dx; { наращиваем х }
  end;
  setlinestyle(0, 0, 1);
  SetColor(9);
  outtextXY(30, 30, 'Grafik functii Y1=sqrt(x^2+2)*sinx');
  SetColor(5);
  outtextXY(30, 60, 'Grafik functii Y2=s(x+1)*sinx');
  readln

end.

Leave a Comment

− 2 = 1