home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 2 / amigaformatcd02.iso / pd / graphics / graph3d / funcgen.p < prev    next >
Encoding:
Text File  |  1996-05-20  |  1006 b   |  48 lines

  1. PROGRAM funcgen;
  2. { Create a Graph3D data file of function z=f(x,y) }
  3.  
  4. CONST x0=-1; x1=9; dx=0.25;
  5.       y0=-4; y1=4; dy=0.25;
  6.       title='function f(r)=sin(r)/r';
  7.       quantity='f(r)';
  8.  
  9. FUNCTION f(x,y: Real): Real;
  10. VAR r: Real;
  11. BEGIN
  12.   r := Sqrt(Sqr(x)+Sqr(y));
  13.   IF r=0 THEN f := 1 ELSE
  14.     f := Sin(r)/r;
  15. END;
  16.  
  17. VAR datei: Text;
  18.     nx,ny,i,j: Integer;
  19.     x,y: Real;
  20.  
  21. BEGIN
  22.   nx := Round((x1-x0)/dx)+1;
  23.   ny := Round((y1-y0)/dy)+1;
  24.   ReWrite(datei,'RAM:function.3D');
  25.   WriteLn(datei,title);
  26.   WriteLn(datei,quantity);
  27.   WriteLn(datei);
  28.   WriteLn(datei,ny);
  29.   FOR j := 1 TO ny DO BEGIN
  30.     y := y0 + (j-1)*dy;
  31.     IF Abs(y-Round(y))<dy/4 THEN WriteLn(datei,Round(y))
  32.       ELSE WriteLn(datei);
  33.   END;
  34.   WriteLn(datei);
  35.   WriteLn(datei,nx);
  36.   FOR i := 1 TO nx DO BEGIN
  37.     x := x0 + (i-1)*dx;
  38.     IF Abs(x-Round(x))<dx/4 THEN WriteLn(datei,Round(x))
  39.       ELSE WriteLn(datei);
  40.     FOR j := 1 TO ny DO BEGIN
  41.       y := y0 + (j-1)*dy;
  42.       WriteLn(datei,f(x,y))
  43.     END;
  44.     WriteLn(datei);
  45.   END;
  46. END.
  47.  
  48.