Advertisement
glokyfull

blob table

Feb 11th, 2018
560
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.51 KB | None | 0 0
  1. /*
  2.         the creation of the file used for 3 blob fx on st
  3.  
  4. (c) gloky
  5. */
  6.  
  7. program calcST;
  8. uses crt;
  9. /*
  10.  
  11.   lngtab: table de longueur => TX*TY= 50*50
  12. */
  13. const TX = 50;
  14.       TY = 50;
  15.  
  16.       maxLOG  = 8192 ;
  17.       maxEXP  = 8192 ; // = maxLOGval
  18.       maxLNGval = 1024;
  19.  
  20. var f:word;
  21.     lngtab:array[0..100*100-1] of word;
  22.     logtab:array[0..8191] of smallint;
  23.     exptab:array[0..1024+768-1] of word;
  24.     cst1:double;
  25.     g:word;
  26.  
  27.     valeur,cpt:word;
  28.     packExp:array[0..1024+768] of word;
  29.  
  30.     logtabST:array[0..16383] of byte;
  31.     exptabST:array[0..2048+768*2-1] of byte;
  32.     lngtabST:array[0..100*100*2-1] of byte;
  33.     fi:file;
  34.     sinq:array[0..511] of word;
  35.     sinqST:array[0..1023] of byte;
  36.  
  37.  
  38. begin
  39.  
  40.      cst1:=256*32/sqrt(48*48+48*48);
  41.      for g:=0 to 47 do begin;
  42.      for f:=0 to 47 do begin;
  43.          lngtab[f+g*48]:=round(sqrt(f*f+g*g)*cst1);      // val lng de zero a 255
  44.      end;
  45.      end;
  46.      // log(lng) faisable donc log[f]=v:  f de 0 a 255*32 surechantillonage = 8192
  47.      for g:=0 to 8192-1 do begin;
  48.          logtab[g]:=round((ln(g*256/8192+128/8192)/ln((8191*256+128)/8192)*1023.5))*16;
  49.          exptab[768+logtab[g] div 16]:=g;
  50.      end;
  51.      //; de 0 a 1024 * 16 = 16384
  52.  
  53.   /*
  54.      cpt:=0;
  55.      for f:=0 to 1023+768 do begin;
  56.          if (exptab[f]=0) then inc(cpt) else begin;
  57.             if (cpt = 0) then begin;
  58.                 limite=cpt;
  59.             end;
  60.             pacexp[off]:=cpt;
  61.             cpt:=0;
  62.             pacexp[off]:=
  63.          end;
  64.      end;
  65.  
  66.      */
  67.      cpt:=0;
  68.      for f:=0 to 1023+768 do begin;
  69.          if (exptab[f]=0) then inc(cpt) else begin;
  70.              valeur:=exptab[f];
  71.              while (cpt>0) do begin;
  72.                     exptab[f-cpt]:=valeur;
  73.                     dec(cpt);
  74.              end;
  75.          end;
  76.      end;
  77.  
  78.      for f:=0 to 1023+768 do begin;
  79.          exptabST[f*2]:= exptab[f] div 256;
  80.          exptabST[f*2+1]:=exptab[f] and 255;
  81.      end;
  82.      for f:=0 to 8192-1 do begin;
  83.          logtabST[f*2]:= logtab[f] div 256;
  84.          logtabST[f*2+1]:= logtab[f] and 255;
  85.      end;
  86.      for f:=0 to 100*100-1 do begin;
  87.          lngtabST[f*2]:=lngtab[f] div 256;
  88.          lngtabST[f*2+1]:=lngtab[f] and 255;
  89.      end;
  90.  
  91.  
  92.      assign(fi,'c:\ln1.dat');
  93.      rewrite(fi);
  94.      blockWrite(fi,logtabST,16384);
  95.      close(fi);
  96.  
  97.      assign(fi,'c:\exp1.dat');
  98.      rewrite(fi);
  99.      blockWrite(fi,exptabST,2048+768*2);
  100.      close(fi);
  101.  
  102.      assign(fi,'c:\lng1.dat');
  103.      rewrite(fi);
  104.      blockWrite(fi,lngtabST,48*48*2);
  105.      close(fi);
  106.  
  107.      for g:=0 to 95 do begin;
  108.      for f:=0 to 95 do begin;
  109.          lngtab[f+g*96]:=round(sqrt((f-47.5)*(f-47.5)+(g-47.5)*(g-47.5))*cst1);
  110.      end;
  111.      end;
  112.      for f:=0 to 100*100-1 do begin;
  113.          lngtabST[f*2]:=lngtab[f] div 256;
  114.          lngtabST[f*2+1]:=lngtab[f] and 255;
  115.      end;
  116.  
  117.  
  118.      assign(fi,'c:\lng3.dat');
  119.      rewrite(fi);
  120.      blockWrite(fi,lngtabST,96*96*2);
  121.      close(fi);
  122.  
  123.      for f:=0 to 511 do begin;
  124.          sinq[f]:=round((23+23*sin(f*2*PI/512))/2);
  125.          sinqST[f*2]:=sinq[f] div 256;
  126.          sinqST[f*2+1]:=sinq[f] and 255;
  127.      end;
  128.  
  129.      assign(fi,'c:\sin1.dat');
  130.      rewrite(fi);
  131.      blockWrite(fi,sinqST,1024);
  132.      close(fi);
  133.  
  134.      for f:=0 to 1024+768-1 do begin;
  135.          writeln(exptab[f]);           //1 a 8192
  136.          if (f mod 24)=23 then readln;
  137.      end;
  138.  
  139.      for f:=0 to 8191 do begin;
  140.      writeln(logtab[f] div 16);                 // -768 a 1024
  141.      if (f mod 23)=22 then readln;
  142.      end;
  143. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement