.                           
                                                             


      Najprv by som xcel upozorniť čitatelov že som relatívne začiatočník,
      takže, ak tieto texty spôsobia ujmu na zdraví, prípadne na niečom
      inom, Já to nebyl !

      Myslím že ako vyzerá sinusoida nemusím vysvetlovať (je to taká
      vlnouka :). Daju sa sňou zrobiť celkokom zaujímavé veci. Napr. Ak si
      chceme urobit nejakú writeln() procedúrku, a nechceme aby string len
      suchopádne postával na obrazovke, ale aby sa (suchopádne) vlnil,
      nieje nič jednoduchšie.

      Potrebujeme si spraviti pole sinusov, najlepšie veľkosti 256. Prečo,
      to si vysvetlíme potom. Takže:

           int sin[256]; // je jedno či int alebo char
                         // masochisti môžu použiť aj float :)
           for(i=0; i<256; i++)
              sin[i]=10*sin(i*2*M_PI/256); // M_PI je konstanta pi

      Toto pole bude nadobúdať hodnoty -10 až 10.

      Ďalej potrebujeme nejakú unsigned char premennú,nazvime si ju napr.
      start, ktorá nám bude určovat, jak má vlnouka vyzerat. Bude vlastne
      štartovacim indexom (štartérom?) do naseho poľa. Prve písmenko bude
      mat y-súradnicu y=y+sin[start], dalšie y=y+sin[start+10], dalšie
      y=y+sin[start+20] etc...
      Túto premennú budeme neustále zvyšovať, preto je vhodné voliť pole
      256 prvkov, a premennú typu unsigned char. Odpadne nám starosť
      porovnávať kedy premenná presiahne veľkosť poľa.
      bRadšej uvediem nejaky ten pseudokód:

      void writeln(int x, int y, int start, char *str... ){
        unsigned char pos=start;
        int i;
        for(i=0; i<pocet_pismen; i++){
          vypis_pismenko(x, y+sin[pos], str[i]);
          x+=sirka_pismenka;
          pos+=inkrement; // nejake cislo, trebars 3
        }
      }

      A v maine to bude vyzerať asi takto:

      start=0;
      while(!kbhit()){
        writeln(20, 20, start, "Z biologie mam štyrku.");
        start+=5;
      }

      To je cela finta.

      PLASMA

      Plasma je v podstate to isté. Potrebujeme 4 štartovacie indexy. Dve
      pre x a dve pre y. A tieto budeme, najlepšie o rôzne hodnoty,
      zvyšovať.

       py1=sy1;
       py2=sy2;
       for(y=0; y<200; y++){
         px1=sx1;
         px2=sx2;
         for(x=0; x<320; x++){
           putpixel(x, y, sin[px1]+sin[px2]+sin[py1]+sin[py2]);
           px1+=?;
           px2+=?;
         }
         py1+=?;
         py2+=?;
       }

      kde s* sú štartovacie indexy, p* sú pomocné premenné.

      Neviem, či je tu ešte niečo na vysvetlovanie, na  zdrojáku 
      by to mal každý pochopiť.
      Zdrojáky sú: 1. neoptimilizované, ale o to ľahšie pochopiteľné
                   2. je to infarktware, tzn. ak z nich dostanete infarkt,
                      pošlite 50  na moju adresu.
                   3. mali by fungovať v BC 3.1 v pohode.

      Uvedeným zdrojákom generovaná plazma je dosti pravidelná
      a nezáživná. Ale ak si budete robiť vlastú plazmu, možete použiť aj
      väčšiu tabuľku, a naplniť ju nejakými diabolskými hodnotamy, nemusí
      to byť sínus.  Môže to byť sqrt(x), 1/x, x^2, etc. A, prečo sa
      obmedzovať na jednu tabuľku?

      Na záver ešte jeden zdroják + obrázok. Tentoraz negenerujeme pixely,
      ale posúvame pôvodný obrázok, ktorý sa tým pádom deformuje. Veď si
      to pozrite.

      Pevné nervy a mäkkú stoličku pri programovaní želá.
                                                            TRang

      Prípadné neviemčo adresujte na: trang@post.sk ,ale istejšie je
      použiť telefón (to je taká tá vec s tým slúchadlom a takými
      očíslovanými tlačítkami) na +421 095 747773. Bye.


            výheň