111 lines
2 KiB
ObjectPascal
111 lines
2 KiB
ObjectPascal
program test109;
|
|
|
|
const screenwidth = 640;
|
|
screenheight = 400;
|
|
screenmidx = 319;
|
|
screenmidy = 199;
|
|
|
|
xrange = 14.0;
|
|
yrange = 3.0;
|
|
|
|
xmin = -7.0;
|
|
xmax = 7.0;
|
|
ymin = -1.5;
|
|
ymax = 1.5;
|
|
|
|
xstep = 0.005;
|
|
|
|
|
|
var scalex,scaley: real;
|
|
value:real;
|
|
curx:real;
|
|
|
|
testcounter:integer;
|
|
|
|
function screenx(x:real):integer;
|
|
begin
|
|
screenx := trunc((x + xmax) * scalex);
|
|
{ writeln(x, ' -x-> ', screenx);}
|
|
end;
|
|
|
|
function screeny(y:real):integer;
|
|
begin
|
|
screeny := trunc((ymax - y) * scaley);
|
|
{ writeln(y, ' -y-> ', screeny); }
|
|
end;
|
|
|
|
procedure drawCoords;
|
|
begin
|
|
drawline(screenx(xmin), screeny(0), screenx(xmax), screeny(0), 8);
|
|
drawline(screenx(0), screeny(ymin), screenx(0), screeny(ymax), 8);
|
|
end;
|
|
|
|
procedure plot(x,y:real;nr:integer);
|
|
begin
|
|
if (x>=xmin) and (x<=xmax)
|
|
and (y>=ymin) and (y<=ymax) then
|
|
putpixel( screenx(x), screeny(y), 3 + nr);
|
|
end;
|
|
|
|
procedure test(x:real; delta:real);
|
|
begin
|
|
writeln('-----------test-----------------');
|
|
end;
|
|
|
|
function squareroot(x:real):real;
|
|
begin
|
|
if x = 0.0 then
|
|
squareroot := 0.0
|
|
else
|
|
squareroot := sqrt(x);
|
|
end;
|
|
|
|
function logn(x:real):real;
|
|
begin
|
|
if x <= 0.0 then
|
|
logn := 0.0
|
|
else
|
|
logn := ln(x);
|
|
end;
|
|
|
|
function dafunc(x:real;nr:integer):real;
|
|
begin
|
|
{
|
|
testcounter := testcounter + 1;
|
|
if testcounter = 20 then
|
|
test(x, xstep); }
|
|
{ writeln('dafunc ', testcounter, ' x:', x, ' + 0.1:', x + 0.1); }
|
|
case nr of
|
|
0: dafunc := sin(x);
|
|
1: dafunc := cos(x);
|
|
2: dafunc := arctan(x);
|
|
3: dafunc := tan(x);
|
|
4: dafunc := cotan(x);
|
|
5: dafunc := logn(x);
|
|
end;
|
|
end;
|
|
|
|
procedure graph(nr:integer);
|
|
begin
|
|
curx := xmin;
|
|
{ curx := 0.0; }
|
|
while curx < xmax do
|
|
begin
|
|
value := dafunc(curx, nr);
|
|
plot(curx, value, nr);
|
|
curx := curx + xstep;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
initgraphics;
|
|
scalex := screenwidth / xrange;
|
|
scaley := screenheight / yrange;
|
|
drawCoords;
|
|
graph(0);
|
|
graph(1);
|
|
graph(2);
|
|
graph(3);
|
|
graph(4);
|
|
graph(5);
|
|
end.
|