2013. augusztus 22., csütörtök

Óra

Hirtelen eszembe jutott, milyen pofon egyszerű egy mutatós órát készíteni a gpp_rulesban, ezt talán felesleges kivesézni, lám az eredmény:



2013. augusztus 17., szombat

The game of life

Harmadik lecke

Egy "sajátautomata" algoritmust valósítottam meg GPP-RULES-ban, a híres
John Conway, a Cambridge Egyetem matematikusa " The game of life", magyarul életjáték. A cím megtévesztő, ez komoly algoritmus!




Itt most csak a GPP-RULES specifikus dolgokat ismertetem:


Változók:

  • lena - megadja az aktuális sorban az oszlopok számát 
  • lenn megadja az aktuális oszlopban az sorok számát
  • thisa - megadja az aktuális cella melyik oszlopban van
  • thisn - megadja az aktuális cella melyik sorban van

Függvények:

  • prev( a,n ) - lehetőség van a cella korábbi tartalmához hozzáférni 
  • call( a,n ) - szubrutin cella hívás

Tervezett rubrikák:

  • a0 - idő
    • beállítás
      • prev (ez a parancs bekapcsolja, hogy tárolja el a rubrika eredményét mielött újjat számoln)
    • képlet
      • = sec
  • b0 - frame/sec
    • képlet
      • = 1/(sec-prev(0,0))    // ugye most kivonjuk az aktuális időből az elözőt és veszük a reciprokát
  • a1:h1  - képsorozat első a halott, második élő és még lehet további 6 kép
    • beállítások
        • a1 - enter pen 0 pic die.png
        • b1 pen 1 pic live.png
        • c1:h1pen 0 pic die.png
    • képleterk(sime értékek)
      • a1 - 0
      • b1 - 1
      • c1:h1 - 0 

  • a2 - csak egy sima elválasztó
  • a3 - automatikusan megkaphatjuk itt a játék terület magasságát, hogy tetszés szerint lehessen bővíteni. Ezzel fogjuk modulozni az num-okat(oszlop cím).
    • képlet
      • = lenn - prot + 1
  • b3 - num offszet
    • képlet
      • = a3-prot
  • c3 - a subrutinként használt cella, itt nem csinál semmit, majd a játéktér elemei hivogatják ( csak egyszer kell ilyen hosszú képletet implementálni és a cellák relatívan használják )
    • képlet
      • = prev( (thisa-1+lena)%lena, (thisn-1+b3)%a3+prot) prev( thisa, (thisn-1+b3)%a3+prot) prev( (thisa+1+lena)%lena, (thisn-1+b3)%a3+prot) prev( (thisa-1+lena)%lena, thisn)+prev( (thisa+1+lena)%lena, thisn) prev((thisa-1+lena)%lena, (thisn+1+b3)%a3+prot) prev( thisa, (thisn+1+b3)%a3+prot) prev((thisa+1+lena)%lena, (thisn+1+b3)%a3+prot)

  • d3 - a teremtő bioritmusa, ez gyujtja be a z élet lángját
    • képlet
      • = ((sin(sec/10)+1)/2)*2
  • a5:h12 - a játék mező de tetszőleges
    • beálítások
      • a5 - enter protect prev
      • b5:h5 - prev
      • a6 - enter prev
      • b6:h6 - prev
      • .
      • .
      • an - enter prev
      • bn:hn - prev
    • képlet (gyakorlatilag az összes, egy tetszőlegeset kiválasztasz és ott hozzáadod a gyujtó számot, ha beindult meg beszorzod a d3-at 0-lal)
      • = call(2,3)/8 ? a1:h1



2013. augusztus 14., szerda

Bob

Második lecke - Figyelem a tetőn dolgoznak!

Megismerhetik kegyelmetek, hogyan tudnak bob formulával kiragadni elemeket egy képről.

Változók:

  • crsa - (CuRSorAlfa)cursor ebben az oszlopban található 
  • crsn - (CuRSorNum)cursor ebben az sorban található
  • prot - magadja annak a sorpozíciójának az értékét ahol véget ér a "protect" terület
  • sec - megadja az indítás óta eltelt másodpercek értékét

Függvények:

  • an( a,n ) - (AlphaNum) abszolút címzés a táblázatba számok megadásával
  • int( a ) - veszi az egész részét a számnak
  • min( a,b ) vagy max( a,b ) - maximumát veszi a tényezőknek
  • sin( a ) vagy cos( a ) - radiánhoz tartozó szinusz vagy koszinusz értéket adja eredményül
  • vec( a,b,c,....,n ) - vektort csinál a tényezőkből
  • bob( c2xy, dim_xy, spec, mul, add, alfa, u2xy, v2xy, s_pic, bob_id, c1xy, u1xy, v1xy, s_gpu )
    • Cél poziciója
      • c2xy - célközeppontja
      • dim_xy - a xy koordináták dimenziója
    • Szín meghatározás
      • spec - finoman lehet hangolni a színt szint
        • 0.0 piros
          • 0.5 narancs
        • 1.0 zöld
          • cián
        • 2.0 kék
          • viola
        • 3.0 piros
      • mul - a szín értékét megszorozza
      • add - a szín értékéhez hozzá adódik
      • alfa - átlátszóságot lehet beállítani
    • UV cél
      • u2xy - cél u tengely
      • v2xy - cél v tengely
    • Forrás kép neve
      • s_pic - forrás kép(bogyó) neve
      • bob_id - ha egy kép több elemből áll az elem sorszáma (-1 az összes elemből egy képet kombinál és együtt alkalmazza)
    • Forrás kordináta
      • c1xy - forrás középpontja
    • UV forrás
      • u1xy - forrás u tengely
      • v1xy - forrás v tengely
    • GPU shader
      • s_gpu - a shader neve amit a megjelenítéshez szeretnénk használni
pl:
|  target na pic na clr | 
= bob( vec(sin(a1),  cos(a1))/4,vec(1,1),  0,0.5,0.5,1,  vec(0.25,0),vec(0,0.25),  "Cam",0,  vec(0,0),vec(0.5,0),vec(0,-0.5) )

Tervezett rubrikák:

  • a0:b0 - képtár tömbjének kívánt felosztása oszlop*sorok
  • c0 -  elem kívánt sorszáma
  • d0 - képfeldolgozó szolgáltatni fog a képen talált elemekről egy listát az alábbi pár művelettel meghatározható hányadik elemet szeretnénk rögzíteni
    • képlet
      • = max( 0, crsn-(prot+5))+prot+5
  • e0 = a0*2
  • f0 = b0*2
  • b1 - berajzoljuk az elemet a megfelelő képtár megfelelő oszlopába és sorába
    • beállítás
      • target clr sprite pic sprite  
    • képlet
      • = bob( b6:c6 * vec(-0.5+1/e0, 0.5+1/f0+ vec(int(c0%a0), int(c0/a0))*vec(1/a0,-1/b0), b6:c61,0,1,1, vec(b6/e0,0), vec( 0, -c6/f0 ), "Bob", d0-prot-5, vec( an(3,d0), an(4,d0)), vec( an(5,d0), an(6,d0))*1.1, vec( an(7,d0), an(8,d0))*1.1 )
  • b6:c6 - kép dimenziója szélesség és magasság

2013. július 4., csütörtök

G++ kezdődik!

AliveMOon...

A környezet indítása történhet közvetlenül és társítás segítségével.
  1. Közvetlenül indítás esetén egy általános könyvtárból indul a munka
  2. Lehetőség van a Windowsban társítani a .icon kiterjesztésű könyvtárakat és alkalmazásokat  

Szia, ki vagy?

Első interakció, környezet azonosítja a felhasználót!
  • Felhasználó kategóriák 
    • 0 - legjobb ( a felhasználó legmagasabb rangjával lép be )
    • 1 - általános felhasználó ( operátor, fogyasztó, néző, játékos egyszóval laikus )
    • 2 - karbantartó
    • 3 - fejlesztő
    • 4 - GRANDPACE 
  • Név
  • Jelszó
Tesztelés céljából lehetőség van átmenetileg lefokozni magunkat, megvizsgálhassuk alsóbb rangú felhasználók végre tudják e hajtani a feladatukat.

Hello world!

Most pedig egy kis ízelítő, miként készíthető el a közismert "minimális" program G++-ban. 
  1. Létrehozunk egy új alkalmazást
  2. Megnyitjuk a "debug" ablakot és grafikus felület
  3. Létrehozunk egy fő szálat 
  4. Kap egy vissza ugrást, hogy ne csak egyszer fusson le
  5. A főszál kap egy táblázat kezelő műveletet, és kicsit játszom vele, gyakorlatilag bármilyen pozíciót felvehet a képernyőn (később megmutatom, hogy animálni is lehet)
  6. Létre hozok még egy második folyamatot a kamerának, hogy aszinkron párhuzamosan működjön a fő folyamattal
  7. Játszom egy kicsit az élőképpel
  8. Később bevetem a GPU-t egy egyszerűbb "Sobel" transzformációra