maanantai 31. elokuuta 2020

Viimeinen päivä koulussa ennen internshippiä

Viimeinen päivä koulussa ennen internshippiä

Tänään ajattelin tehdä kuvan käännön z-akselin ympärillä. Jännä kohta siinä on miten laattojen kallistaminen onnistuu. Saa nähärä.

Kuvat lähti kääntymään ihan hyvin. Alla muutama kuva. Kuvista huomaa että piirtäminen voisi olla parempi. Bresenham algoritmi ei oo se paras vaihtoehto. Ehkä kokeilen jo aikaisemmin mainitsemaa Xiaolin Wu’s algoritmia.


Nyt tämä FdF projekti jää jäähylle kun meen puoleksi vuodeksi työharjoitteluun.








perjantai 28. elokuuta 2020

Piirtoa vähän eri tavalla


Ajattelin että voisin kokeilla piirtää kuvan isoina laattoina (tile). Alla olevasta kuvasta saa vähän ymmärrystä mitä pääs pyärii.




Tämmönen siitä tuli.


Tein niin että piirsin nolla laatat mustina ja ne missä numero on laitoin punaiseksi. Ajattelin jatkaa tällä ajatuksella. Toteutuksessa on se puute että kuvan pyöritys X-akselin ympärillä ei toimi, kun kaikki laatat on samalla tasolla. En siis oo ottanut z-akselia käyttöön. Toinen ajatus seuraavaksi on kääntää kuvaa z-akselin ympäri silloin kuva liikkuisi jotenkin tälleen.

Tämä toteutus vaatii sen että teen matsiisien ja vektoreiden kertolaskua. Ei pitäis olla paha rasti. Saa nähärä kuinka käy.



torstai 27. elokuuta 2020

Eka kuva ikkunaan

 Itse itseäni pakottaen

Nyt on pakko (itse itseä pakottaen) sano ... kun häntää heilutti. Siis tänään tehdä eka kuva ikkunaan. Ei muuta plääniä tälle päivälle.


Sain tehtyä ekan kuva joka on jotain sinne päin mitä FdF projektissa pyydetään tekemään. Kuva on orthographic projection (top view) 42 palikasta. Jälkimmäinen kuva kertoo source datan jonka perusteella kuva on tehty. Jäin kyllä vielä pohtimaan että pitäisikö inputissa oleva yksi arvo käsittää koko ruutuna. Jos silleen tekisin niin silloin kuvan mustat alueet tulisivat joko valkoisiksi tai tolla punasella.



Tuli myös pohdittua vähän palikan kuvakulman kääntämistä. Ekaksi ajattelin tehdä kääntämisen z akselilla. Tarkoittaa silloin sitä että x ja y arvot muuttuu. 

Hakasulkujen sisään tulee laskemiseen tarvittava kaava. Kaavassa on sin ja cos arvoja. En nyt vielä osannut tosta lonkalta laittaa arvoja kohdilleen niin jätin tyhjäksi.




keskiviikko 26. elokuuta 2020

Vaihe yksi tuli opiskelussa päätökseen


Tänään oli viimeinen evaluointi (viides) corewar projektista. Se tarkoottaa nyt sitä että opiskelun eka vaihe on paketis ja tiistaina (syyskuun eka) alkaa puolen vuoden internship LM Ericssonilla. Miltä ny tuntuu. Ei tunnu miltää. Ai jaa. Maaliskuussa 2021 jatkuu opiskelut siitä mihin ne nyt jäi. Alla kuva koulun tähtikartasta.


Jatkanen internshipin jälkeen kuvassa oikealle. Siellä on algoritmit ja machine learning jutut. Pohdin tavoitteita lisää sitten joskus 2021 alkupuolella. Voi olla että innostun vähän summaamaan opiskelun ekan vaiheen tapahtumia kohta pian. Vahvasti positiivista se tarina tulee olemaan.

FdF projekti tässä jatkuu (en tiedä millä intensiteetillä) arvauksen mukaan viikonloppuisin.


tiistai 25. elokuuta 2020

Xiaolin Wu’s algorithm


Tänään (corewar) evaluointien lisäksi ajatuksena on tehdä [Xiaolin Wu’s algoritmilla viivoja. Algoritmi on hitaampi (niin olen lukenut) kuin Bresenham’s algoritmi. Hyviä puolia siinä on se että viivan pitäisi olla suorempi ja alku ja loppupisteet ovat paremmin paikallaan. Ennen sitä rakennan loopin joka pyörittää viivoja (hullun lailla) ikkunassa. Tarkoitus on mitata millä nopeudella piirtohjelma (kaks oota muka tuolla. Toinen on ihan turha, sanoo Laihialaanen) toimii. Jos aikaa on lähden piirtämään niitä pisteitä josta jo pari päivää sitten haaveilin. Jotenki on hassua että kun aamulla ajattelee (pläänää) tekevänsä jotain niin sitten päivällä tulee tehtyä jotain muuta. Toisaalta kun projekti on (tässä tapauksessa FdF) asettanut inputin ja outputin niin jotenkin kirjoitukset (C-koodaus) on ohjautunut siihen suuntaan että edellisetkin pojektit on tavoitteeseen päässy. Joku vois sanoa että taiteilijan vapaus (mä en sano niin, moon hiliaa).


Tälleen Xiaolin Wu’s algoritmi toimii. Idea siinä on maalata (jännä sana toi) pikseli molemmin puolin (ylhäällä ja alhaalla). Pikselin kirkkaus on sen mukaan miten vahvasti viiva osuu pikselin keskiosaan.




Jäi Xiaolin Wu’s algoritmi tekemättä tänäänkin (aamun innostukset ei aina ota tuulta alleen). Meni aikaa paljon kirjoitetun koodin re-strukturointiin. Haaveena oli että piirtäminen vähän nopeutuisikin. Ei nopeutunut ainakaan näkyvästi. Tein vertailevaa tutkimusta koulukaverin kanssa ja huomasimme että eroa ei ole midän toteutusten välillä nopeuden suhteen (siis niinku silmämääräisesti katsottuna). Keskustelimme myös sdl2 kirjastosta (libsdl2 lienee oikea nimi), joka ollee nopeampi kuin minilibx. sdl2 kirjastossa on paljon valmiita palikoita piirtämiseen. Se kait lienee syy miksi käytämme minilibx kirjastoa. Elikkä saamme tehdä kaikki piirtämiseen liittyvät palikat itse. Corewar evaluointi söi illan (reilut 2 tuntia). Sain vielä tehtyä FdF-mapin luku funktion (se josta kuva eilen).


maanantai 24. elokuuta 2020

Viivoja kahdella eri algoritmilla.

Aamun innostus ei tarkoita yhtään mitään

Tänään innostuin (siihen se sitten jäikin) junassa lukemaan toisesta algoritmista, jolla viivaa voi piirtää. Semmonen kuin Xiaolin Wu’s algorithm. Sitä ajattelin kokeilla tänään. Kunhan saan ensin Bresenham’s algoritmin valmiiksi. Tänään on myös corewar projektin evaluointeja. Tulee (ja niin tulikin) taas normipäivä 12+ tuntia.

Tuli möhellettyä tänään tavallista enemmän. Corewar evaluoinnit meni ihan kivasti. Viivapiirto sen sijaan takkus. Tein virheitä koodiin (jos joku kysyy, en myönnä) ja niiden metsästäminen otti aikansa. Lopulta sain Bresenham’s algoritmin valmiiksi. Kirjoitin Bresenham koodin wikipediassa olevan rakenteen mukaan. Jäi vielä vaivaamaan olisko sen saanut nopeammaksi. Alla olevassa videossa näkyy hitautta. Tein myös silleen että viivaa voi liikuttaa nuolinäppäinten avulla. Se toinen algoritmi jäi tulevaisuuteen. Koulukaveri vinkkas mulle koodinpätkän jossa oli toteutettu Bresenham’s algoritmi lyhyesti ja ytimekkäästi. Mun toteutuksessa käytetään integer lukuja ja tässä minkä sain tehdään laskutoimituksia float (double) luvuilla. Ajattelin että testaan kumpi on nopeampi toteutus. Alla kolme kuvaa tämän päivän tuloksista.






sunnuntai 23. elokuuta 2020

Pisteitä ikkunaan

Ei mennyt päivä suunnitelmien mukaan

Ajattelin tänään tehdä silleen että (sen ajatellun tutorial opiskelun sijaan) teen suorakaiteen ikkunaan alla näkyvän inputin perusteella. Toinen kuva ei oo ihan se mitä siitä tulee, mutta jotain sinne päin. Teen 2D kuvan plane of projection ajatuksella (jos sitä voi ajatukseksi sanoa). Kuvassa on vain pisteitä (ehkä väreillä) ja kuvakulma on ylhäältä (orthographic projection). Elikkä tämmönen plääni tälle päivälle.


Ekaksi tein viivanpiirron vasemmasta yläkulmasta about siihen kohtaan missä hiiri on. Samaten kirjoitin että ESC-nappula sulkee ikkunan. AamuAamu meni siinä kun laitoin libft kirjastoon jo aikaisemmin tehtyjä funktioita (strtoi, abs ja step_args). Nyt on kirjasto taas hyvässä järjestyksessä.

Projektin alut on aina tiedon valtavan määrän kanssa painimista (pohojalaaset on hyviä siinä). Sain vinkkinä koulukaverilta tänään yhden sivuston missä kerrotaan vektorilaskennasta, jipii.

Jutut joita pläänäsin aamulla jäi jonnekin (junaan unohtu tai jotain). Huomiselle jäävät ne.

 Muutin viivanpiirtoa siten että se noudattaa Bresenham’s basic versiota jossa piirtäminen toimii ainoastaan nollakulmasta (vasen ylhäällä) oikealle ja max 45astetta alas. Huomenna tarvii tehdä silleen että toimii jokasuuntaan. Kuvan päivitysnopeutta jäin vielä pohtimaan (tai siis kuvan vilkkumista). Nyt tyhjään koko näytön joka kerta kun hiiri liikkuu ja sen jälkeen viiva uusiksi. Ehkä olisi pitänyt tehdä silleen että piirrän uuden imagen ensin valmiiksi sitten resetoin ikkunan ja sen jälkeen heti uusi valmiina oleva image päälle. Huomiselle menee toi ajatus.

 Video alla näyttää miten se nyt toimii.


Tekstiäkin (C-koodi) on tullu kirjoitettua. Tässä kuvat aiheeseen liittyen.






 

lauantai 22. elokuuta 2020

FdF imagen opiskelu

Piirtamisen perusfunktiot hanskaan

Tänään ajattelin opiskella miten saan minilibx ikkunaan lisättyä imagen. Sen tehtävä on päivittää ikkunan sisältöä mahdollisimman nopeasti (ei viliku eikä väläky) siten että image rakennetaan valmiiksi ja sen jälkeen lätkäistään johonkin kohtaan ikkunaa. Aiheeseen liittyviä harjoittelu löytyy täältä. Kuten huomaat oon siirtyny enemmän ja enemmän hakemaan netistä opiskelun palasia joilla preparoin itseäni että varsinainen projekti (tässä tapauksessa FdF) sujuu mahdollisimman hyvin. Tässä oli plääni tälle päivälle. Saas nähärä kuinka menöö.

Sain tehtyä image kokeilun silleen että ymmärrys funktioista syntyi. Nyt just huamasin että get_color_value ja destroy_image jäi kokeelematta. Ne jää huamiselle. Junamatkalla aloin pohtimaan miten asioita pitäisi ajatella (siis tätä FdF projektia ajatellen). Ajattelin piirtää kuvaa sanajotaentiedä näkökulmasta.

No, ei tuasta kuvasta mitään tullu. Päädyn nyt siihen että teen huomenna sellaasen toteutuksen jossa piirrän viivan kulmasta siihen kohtaan missä hiirtä klikkaan. Toinen toteutus on semmonen jossa yhden pikselin koko on useampi pientä pikseliä. Esim jos yksi pikseli on 10 pikkupikseliä niin viivoista tulee röpelöösempiä. Sillä tavalla näen miten mun viivanpiirto algoritmi toimii. Eiköhän siinä oo plääniä huomiselle. Niinku tapoohin kuuluu, saattaa suunnitelma muuttua aamulla. Ja mitä lopuuksi teen ei tiärä viälä kukaa.

 

Tässä muutamia kuvia tämän päivän toteutuksista:





Tehdäkkö neliö kahdesta vai neljästä kolmiosta?




perjantai 21. elokuuta 2020

One more time

Meinasin että huilaan, mutta en viittiny

Ajattelin vielä tässä ennen työharjoitteluun menoa (Reseach Ericsson) tehdä vielä yhden projektin. Valmistuuko ennen syyskuun ekaan, en tiedä, eikä oo niin väliksikään (On tietysti väliä, kunhan selitän).

Innostuin aiheesta lopulta kun algoritmi branchissä  bonus tehtävänä kysytään usein visualisointia. Elikkäs, aloitin tänään FdF projektin. Siinä tehtävänä on piirtää alla näkyvän kaltaisia kuvia ja esittää niitä eri kuvakulmista (Graphical projections). Tänään otin asiaksi (pohojalaasilla on tapana ruveta tekemähän) hariootella kuinka mlx libraryn (C kirjasto) tarjoamat funktiot toimii. Parin koulukaverin kanssa pidin kaffeetunteja asian tiimoolta ja sain paljon hyviä vinkkejä (muummoassa toi mlx library linkki. FdF on eka projekti jossa saa käyttää valmista kirjastoa. Tähän asti on kaikki tehty itte (hyviähän nistä on pakannu tulla). Alla olevissa kuvissa pohdin (sinisiä ja keltaasia kolomioota väritetty kuvassa) että miten käsittelen kuvan pikseleitä. Kolmioina vai neliöinä vai jonain muina. Selevyyttä ei vielä tullu. Kaffi keskusteluissa (non just yks Hive koodikoulun parhaita juttuja) tuli juttua myös matriisien ja vektoreiden yhteenlaskuista ja kertolaskuista. Vektorit (ja niiden implementointi) jäi vielä orotustilahan. Sen verran pääsin alkuun että sain avattua C-koodilla kirjoitetulla ohjelmalla mlx ikkunan ja siihen piirrettyä viivan (vihriällä värillä, joka ei näy alla olevas kuvas). Siihenkin sain apua yhdeltä koulukaverilta. Huomenna teen vielä lisää mlx hariootuksia jotta osaan käsitellä imageja (mlx termi on toi) jollakin tavalla. Sen jälkeen ajattelin käydä läpi tutorial pagen (linkki sinne täs) jonka sain vinkkinä kahviittelun lomas. Oli muuten taas 12 tuntinen koulupäivä. Siihen kuului myös eka evaluointi corewar projektista. Se on se viimeinen projekti joka tarvii olla läpäästy ennen kuin internship voi alkaa. Hyvältä näyttää sen suhteen (siis sen suhteen että corewar projekti valamistuu ajoos). 



Täs yks kuva kirootetusta C-koodista (siinon vikoja).