home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 09 / 2d / demo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-03-24  |  4.4 KB  |  189 lines

  1. program DEMO;
  2. (* Demonstrationspgm. für die Plotter-UNITS *)
  3.  
  4. uses
  5.   HPGL, PLGRAPH;
  6.  
  7. var
  8.   f,x,y,x1,y1:Vektor;
  9.   xmin,xmax,ymin,ymax:real;
  10.   n:word;
  11.  
  12. function f1(x:real):real;              { zu Beispiel 1 }
  13. begin
  14.   f1:=  sin(2*x)+2*cos(x);
  15. end;
  16.  
  17. function f2(x:real):real;              { zu Beispiel 1 }
  18. begin
  19.   f2:=2*cos(2*x)-2*sin(x);
  20. end;
  21.  
  22. procedure Frequenzgang;                      { zu Beispiel 2/3 }
  23. const C=10E-6; R1=1; R2=1.0; f1=100; f2=1E6;
  24. var i:word; w,Freq,dLogf,z:real;
  25. begin
  26.   n:=100; dLogf:=(LOG10(f2)-LOG10(f1))/(n-1);
  27.   for i:=1 to n do begin
  28.     Freq:=f1*EXP10((n-i)*dLogf); w:=2*Pi*Freq;
  29.     z:=1+w*R2*C*w*R2*C;
  30.     x[i]:=R1+R2/z;
  31.     y[i]:=-w*R2*R2*C/z;
  32.     f[i]:=Freq;
  33.   end;
  34. end;
  35.  
  36. procedure Spirale;                       { zu Beispiel 5 }
  37. const a=300; k=0.19;
  38. var r,phi,dphi:real; i,m:word;
  39. begin
  40.   i:=0; phi:=0; dphi:=pi/20;
  41.   for m:=1 to 3 do begin                       { 3 Umdrehungen }
  42.     repeat
  43.       i:=i+1;
  44.      r:=a*EXP(k*phi); x[i]:=r*cos(phi); y[i]:=r*sin(phi);
  45.       phi:=phi+dphi;
  46.     until phi>=2*m*pi;
  47.   end;
  48.   n:=i;
  49. end;
  50.  
  51. procedure Beispiel1;
  52. var i:byte; a,b,dx:real;
  53. begin
  54.   n:=50; a:=-2*PI; b:=2*PI; dx:=(b-a)/(n-1);      { Werte berechnen }
  55.   for i:=1 to n do begin
  56.     x[i]:=a+(i-1)*dx;                             { Funktion f1(x) }
  57.     y[i]:=f1(x[i]);
  58.     x1[i]:=x[i];                                  { Ableitung f2(x) }
  59.     y1[i]:=f2(x[i]);
  60.   end;
  61.  
  62.   OpenGraphik ('PRN');   (* oder z.B.: 'C:Test.Dat' *)
  63.  
  64.   GraphikWindow(20, round (uAXmAX /2  - 20 ), 20, round(vAXMAX / 2 - 20));
  65.   (*             ^ Einheit in mm  ! *)
  66.   (* oder auch
  67.      GraphikWindow(XLi, XRe, YOb, YUn);
  68.   *)
  69.  
  70.   Extrema(x,n,xmin,xmax);
  71.   Extrema(y,n,ymin,ymax);
  72.  
  73.   Uscale(xmin,xmax,ymin,ymax,true,true, 5);
  74.  
  75.   XAxis(xmin,xmax, 'x', P_DefaultFont, P_FontSize);
  76.   YAxis(ymin,ymax, 'f(x)', P_DefaultFont, P_FontSize);
  77.  
  78.   XGrid(0);   Ygrid(0);
  79.   XGrid(1);   YGrid (1);
  80.  
  81.   Curve(x,y,n, P_NormalLn, P_NormStep, Yellow);
  82.   Curvex(x,y,n,red);
  83.  
  84.   Curve(x1,y1,n, P_CenterLn, P_NormStep, LightRed);
  85.   (* Curvex(x1,y1,n, red); *)
  86.   CloseGraphik;
  87. end;
  88.  
  89.  
  90. procedure Beispiel2;
  91. begin
  92.   Frequenzgang;
  93.   OpenGraphik ('PRN');
  94.   GraphikWindow(20, round (uAXmAX /2  - 20 ), 20, round(vAXMAX / 2 - 20));
  95.   Extrema(x,n,xmin,xmax);
  96.   Extrema(y,n,ymin,ymax);
  97.   Uscale(xmin,xmax,ymin,ymax,false,true,5);
  98.   XAxis(xmin,xmax,'Re Z', P_DefaultFont, P_FontSize);
  99.   YAxis(ymin,ymax,'Im Z', P_DefaultFont, P_FontSize);
  100.   XGrid(0);
  101.   Ygrid(0);
  102.   Curve(x,y,n, P_NormalLn, P_NormStep, Yellow);
  103.   Curvex(x,y,n,Red);
  104.   CloseGraphik;
  105. end;
  106.  
  107.  
  108. procedure Beispiel3;
  109. var i:word;
  110. begin
  111.   Frequenzgang;
  112.   for i:=1 to n do begin
  113.     f[i]:=LOG10(f[i]);
  114.     y[i]:=-y[i];
  115.     x[i]:= x[i]-1;
  116.   end;
  117.  
  118.   OpenGraphik ('PRN');
  119.   GraphikWindow(20, round (uAXmAX /2  - 20 ), 20, round(vAXMAX / 2 - 20));
  120.   Extrema(f,n,xmin,xmax);
  121.   Extrema(y,n,ymin,ymax);
  122.   Extrema(x,n,ymin,ymax);
  123.   Uscale(xmin,xmax,ymin,ymax,false,false,5);
  124.   LogXAxis(xmin,xmax,'f [Hz]', P_DefaultFont, P_FontSize);
  125.   YAxis(ymin,ymax,'Im Z', P_DefaultFont, P_FontSize);
  126.   XGrid(1);  YGrid (0);
  127.   YGrid (0.5);  Ygrid(1);
  128.  
  129.   Curve(f,x,n, P_NormalLn, P_NormStep, yellow);
  130.   (* Curvex(f,x,n,Red); *)
  131.   Curve(f,y,n, P_NormalLn, P_NormStep, red);
  132.   (* Curvex(f,y,n, Red);  *)
  133.   CloseGraphik;
  134. end;
  135.  
  136. procedure Beispiel4;
  137. var i:word; a,b,dx:real;
  138. begin
  139.   n:=100; a:=-50; b:=200; dx:=(b-a)/(n-1);
  140.   for i:=1 to n do begin
  141.     x[i]:=a+(i-1)*dx;
  142.     y[i]:=EXP10(f1(x[i]));
  143.   end;
  144.  
  145.   OpenGraphik ('PRN');
  146.   GraphikWindow(20, round (uAXmAX /2  - 20 ), 20, round(vAXMAX / 2 - 20));
  147.   Extrema(x,n,xmin,xmax);
  148.   Extrema(y,n,ymin,ymax);
  149.   Uscale(xmin,xmax,ymin,ymax,false,false,5);
  150.   LogXAxis(xmin,xmax, 'x', P_DefaultFont, P_FontSize);
  151.   LogYAxis(ymin,ymax,'y', P_DefaultFont, P_FontSize);
  152.  
  153.   Curve(x,y,n, P_NormalLn, P_NormStep, Yellow);
  154.   (* Curvex(x,y,n, yellow); *)
  155.   CloseGraphik;
  156. end;
  157.  
  158.  
  159. procedure Beispiel5;
  160. var i:word; a,b,dx:real;
  161. begin
  162.   Spirale;
  163.   OpenGraphik ('PRN');
  164.   GraphikWindow(20, round (uAXmAX /2  - 20 ), 20, round(vAXMAX / 2 - 20));
  165.   Extrema(x,n,xmin,xmax);
  166.   Extrema(y,n,ymin,ymax);
  167.   Uscale(xmin,xmax,ymin,ymax,true,true, 5);
  168.   XAxis(xmin,xmax,'x', P_DefaultFont, P_FontSize);
  169.   YAxis(ymin,ymax,'y', P_DefaultFont, P_FontSize);
  170.   XGrid(0);     Ygrid(0);
  171.   XGrid(1000);  Ygrid(1000);
  172.  
  173.   Curve(x,y,n, P_NormalLn, P_NormStep, Yellow);
  174.   CloseGraphik;
  175. end;
  176.  
  177.  
  178. begin
  179.   Beispiel1;
  180. {
  181.   Beispiel2;
  182.   Beispiel3;
  183.   Beispiel4;
  184.   Beispiel5;
  185.   }
  186. end.
  187.  
  188.  
  189.