home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / pas / gfxfx / dypppp.pas < prev    next >
Pascal/Delphi Source File  |  1994-06-22  |  2KB  |  94 lines

  1.  
  2. program Different_Y_Pixel_Position_Per_Pixel;
  3. { Failed-backward-old and slow DYPP, not worth looking at... }
  4. { The posebilities of BGI. ;-) }
  5. uses
  6.   crt,graph;
  7.  
  8. const
  9.   SinTabLen   = 200;
  10.   Amplitude   = 50;
  11.  
  12. type
  13.   SinTableArr = array[0..SinTabLen] of word;
  14.  
  15. var
  16.   SinTable    : SinTableArr;
  17.  
  18. {----------------------------------------------------------------------------}
  19.  
  20. procedure InitGraphics;
  21.  
  22. var
  23.   grDriver,
  24.   grMode    : integer;
  25.  
  26. begin
  27.   grDriver := CGA;
  28.   grMode := CGAHi;
  29.   initgraph(grDriver,grMode,'I:\BGI');
  30. end;
  31.  
  32. {----------------------------------------------------------------------------}
  33.  
  34. procedure CalcSinTable(var SinTab : SinTableArr; SinLen,Amp : word);
  35.  
  36. var
  37.   X,
  38.   Step : real;
  39.   I    : word;
  40.  
  41. begin
  42.   Step := (2*pi)/SinLen;
  43.   for I := 0 to SinLen do begin
  44.     X := I*Step;
  45.     SinTab[I] := round(sqr(sin(X))*cos(sin(X))*Amp);
  46.   end;
  47. end;
  48.  
  49. {----------------------------------------------------------------------------}
  50.  
  51. procedure DoDypp(SinTab : SinTableArr; SinLen,Amp : word);
  52.  
  53. const
  54.   Sentence  = 'Explorer was here';
  55.   Len       = length(Sentence)*8;
  56.  
  57. type
  58.   BitMapArr = array[0..Len] of pointer;
  59.   YPosArr   = array[0..Len] of word;
  60.  
  61. var
  62.   BitMap    : BitMapArr;
  63.   YPos      : YPosArr;
  64.   I,J,Size,
  65.   Tabpos    : word;
  66.  
  67. begin
  68.   settextstyle(defaultfont,horizdir,1);
  69.   outtextxy(1,10,Sentence);
  70.   for I := 0 to Len do begin
  71.     Size := imagesize(I,5,I,25);
  72.     getmem(BitMap[I],Size);
  73.     getimage(I,5,I,25,BitMap[I]^);
  74.     YPos[I] := 0;
  75.   end;
  76.   cleardevice;
  77.   TabPos := 0;
  78.   while not keypressed do begin
  79.     for I := Len downto 0 do YPos[I] := YPos[I-1];
  80.     YPos[0] := SinTab[TabPos];
  81.     TabPos := (TabPos+1) mod SinLen;
  82.     for I := 0 to Len do putimage(I,Amp+YPos[I],BitMap[I]^,andput);
  83.   end;
  84. end;
  85.  
  86. {----------------------------------------------------------------------------}
  87.  
  88. begin
  89.   InitGraphics;
  90.   CalcSinTable(SinTable,SinTabLen,Amplitude);
  91.   DoDypp(SinTable,SinTabLen,Amplitude);
  92.   closegraph;
  93. end.
  94.