Доброго времени суток, форумчане! Помогите с проблемкой, пожалуйста! Мне необходимо написать программу, которая выводит в полярной или декартовой (на выбор) системе координат график спирали Котеса, окно должно масштабироваться. Единственная формула есть на википедии https://en.wikipedia.org/wiki/Cotes%27s_spiral Вот что я намудрил по коду на Pascal ABC.Net
Код | Program Grafik_polar; uses GraphABC;
const W = 800; H = 600; var x0,y0,x1,y1,i,j,m,k:integer; x,y,fi,r:real; s1,s2:string;
// Функция вычисления гиперболического косинуса function cosh(x:real):real; begin cosh:=(exp(x)+(exp(-x))/2); end;
// Функция вычисления гиперболического синуса function sinh(x:real):real; begin sinh:=(exp(x)-(exp(-x))/2);; end;
// Процедура вырисовки осей Оху с подписями и сеткой procedure DrawPlotOxy; begin SetWindowSize(W,H); x0:=WindowWidth div 2; y0:=WindowHeight div 2; setPenWidth(2); line(x0,0,x0,H); line(0,y0,W,y0); { оси координат }
// Вертикальные линии сетки и подписи на оси х i:=0; j:=0; m:=0; SetPenWidth(1); SetPenColor(clGray); while i<x0 do begin line(x0 + i,y0 + trunc(H/2),x0 + i,y0 - trunc(H/2)); // вправо от оси У line(x0 - i,y0 + trunc(H/2),x0 - i,y0 - trunc(H/2)); // влево от оси У s1:=IntToStr(j); s2:=IntToStr(m); // переводим числа в строки TextOut(x0 + i - 2, y0 + 4, s1); TextOut(x0 - i - 2, y0 + 4, s2); // выводим надписи вдоль оси Х i:=i+20; // увеличиваем шаг по оси Ох j:=j+1; m:=m-1; end;
// Горизонтальные линии сетки i:=0; while i<=y0 do begin line(0,y0 + i,W,y0 + i); // вверх относительно оси Ох line(0,y0 - i,W,y0 - i); // вниз относительно оси Ох i:=i+20; end; end;
// Процедура вырисовки графика функции procedure DrawFunc(a,n,eps:real); begin SetPenColor(clGreen); SetPenWidth(1); fi:=0; while fi<2*pi do begin r:=1/(a * exp(n*fi+eps));{уравнение в полярных координатах} x:=r * cos(fi); y:=r * sin(fi); x1:=trunc(x0 + x * k); y1:=trunc(y0 - y * k); { экранные координаты } Circle(x1,y1,1); fi:=fi+0.001; end;
end;
begin DrawPlotOxy; k:=20; DrawFunc(10,1.5,1); end.
|
Да это не тот код, но переделываю под формулу в википедии у меня не получается график. Как исправить данный код, чтоб все работало? Помогите, пожалуйста, очень надо!!! |