home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / audio-video / reaper / reaper2028-install.exe / Effects / LOSER / gfxGoniometer < prev    next >
Text File  |  2007-12-12  |  3KB  |  126 lines

  1. (C) 2007, Michael Gruhn.
  2.  
  3. desc:Goniometer
  4. slider1:0<0,2,1{Dots,Lines,Rays}>Display
  5.  
  6. @init
  7. gfx_clear=-1;
  8. off = 500000;
  9. rot=-45*0.017453292;
  10. DOTS = 0;
  11. LINES = 1;
  12. RAYS = 2;
  13. MAXDRAWSPLS = 10000;
  14. PHASEUPDATERATE = srate/8;
  15. n = 0;
  16. phC = 0;
  17. ph = 0;
  18. @slider
  19.  
  20. @block
  21.  
  22. @sample
  23. s0 = sign(spl0);
  24. s1 = sign(spl1);
  25. angle = atan( spl0 / spl1 );
  26. (s0 == 1 && s1 == -1) || (s0 == -1 && s1 == -1) ? angle += 3.141592654;
  27. s0 == -1 && s1 == 1 ? angle += 6.283185307;
  28. spl1 == 0 ? spl0 > 0 ? angle = 1.570796327 : angle = 4.71238898;
  29. spl0 == 0 ? spl1 > 0 ? angle = 0 : angle = 3.141592654;
  30. radius = sqrt( sqr(spl0)+sqr(spl1) ) ;
  31. angle -= rot;
  32. vert = 0[b] = cos(angle)*radius;
  33. horiz = off[b] = sin(angle)*radius;
  34. b<MAXDRAWSPLS ? b += 1;
  35.  
  36.  
  37. s0 != s1 ? phC-=1:phC+=1;
  38. (n+=1) > PHASEUPDATERATE ? (
  39.     ph = (1-(phC/n))/2;
  40.     phC = n = 0;
  41. );
  42.  
  43. @gfx
  44.  
  45. size = min(gfx_w,gfx_h-20);
  46. sizeH = size/2;
  47. sizeDSqr05 = sizeH * 0.70710681;
  48. sizeQ = sizeH/2;
  49. size3Q = 3*sizeQ;
  50.  
  51. (mouse_cap) ? (
  52.     gfx_r=gfx_g=gfx_b=0; gfx_a=1;
  53.     gfx_x=gfx_y=0;
  54.     gfx_rectto(gfx_w,gfx_h);
  55. );
  56.  
  57. gfx_r=gfx_g=gfx_b=0; gfx_a=0.025;
  58. gfx_x=gfx_y=0;
  59. gfx_rectto(gfx_w,gfx_h);
  60.  
  61. x = y = sizeH;
  62.  
  63. i = min(b,MAXDRAWSPLS);
  64. while (
  65.     slider1 == DOTS ? (
  66.     gfx_a=1;
  67.     gfx_x=sizeH+0[i]*sizeDSqr05;
  68.     gfx_y=sizeH-off[i]*sizeDSqr05;
  69.     gfx_setpixel(0.5,1,0);
  70.     ):(
  71.         slider1 == LINES ? (
  72.             gfx_x=x; gfx_y=y;
  73.             x=sizeH+0[i]*sizeDSqr05;
  74.             y=sizeH-off[i]*sizeDSqr05;
  75.         ):(
  76.             gfx_x=sizeH+0[i]*sizeDSqr05;
  77.             gfx_y=sizeH-off[i]*sizeDSqr05;
  78.         );
  79.             gfx_r=0.5; gfx_g=1; gfx_b=0; gfx_a=0.6;
  80.     gfx_lineto(x,y,0);
  81.     );
  82.     (i-=1)>0;
  83. );
  84. b=0;
  85.  
  86. gfx_r=gfx_g=gfx_b=0.8; gfx_a=1;
  87.  
  88. gfx_x=sizeQ; gfx_y=sizeQ;
  89. gfx_lineto(size3Q,size3Q,0);
  90.  
  91. gfx_x=sizeQ; gfx_y=size3Q;
  92. gfx_lineto(size3Q,sizeQ,0);
  93.  
  94. gfx_x = gfx_y = sizeQ;
  95. gfx_drawchar($'L');
  96. gfx_x = size3Q; gfx_y = sizeQ;
  97. gfx_drawchar($'R');
  98. gfx_x = sizeH; gfx_y = 0;
  99. gfx_drawchar($'M');
  100. gfx_x = 0; gfx_y = sizeH;
  101. gfx_drawchar($'+');
  102. gfx_drawchar($'S');
  103. gfx_x = size-20; gfx_y = sizeH;
  104. gfx_drawchar($'-');
  105. gfx_drawchar($'S');
  106.  
  107.  
  108. gfx_r=gfx_g=gfx_b=0; gfx_a=1;
  109. gfx_x=0; gfx_y=size;
  110. gfx_rectto(size+1,size+20);
  111. gfx_r=1; gfx_g=0; gfx_b=0; gfx_a=1;
  112. gfx_x=1+ph*(size-1); gfx_y=size+1;
  113. gfx_lineto(gfx_x,size+19,0);
  114.  
  115. gfx_r=gfx_g=gfx_b=0.8; gfx_a=1;
  116. gfx_x = 0; gfx_y = size+10;
  117. gfx_drawnumber(0,0);
  118. gfx_x = sizeH-8; gfx_y = size+10;
  119. gfx_drawnumber(90,0);
  120. gfx_x = size-25; gfx_y = size+10;
  121. gfx_drawnumber(180,0);
  122.  
  123. gfx_r=0.5; gfx_g=1; gfx_b=0; gfx_a=1;
  124. gfx_x = 0; gfx_y = size;
  125. gfx_drawnumber(ph*180,0);
  126.