TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
14 stars 4 forks source link

Pyyhekumi ImageX:ään ja velppehin #3073

Open vesal opened 2 years ago

vesal commented 2 years ago

Ollaan toivottu pyyhekumia piirtämiseen

Nyt on lisätty, jatkokehitykseen:

sijualle commented 2 years ago

Halutaanko pyyhekumilla läpinäkyvää piirtoa vai objektien poistamista tietyltä alueelta?

Läpinäkyvä piirto on aika helppo toteuttaa, tosin velpeissä saattaa tulla hassuja tilanteita. Esim tilanne, jossa päällekkäisissä velpeissä on käytetty päällimmäisessä velpissä kumittamista, koska silloin se tekee aukon myös siihen alla olevaan velppiin. Lisäksi se läpinäkyvä piirto tulee myös siihen velppialueeseen, eli jos piirtää ympyrän, kumittaa siitä puolet ja tekee velpin, niin silloin se koko alkuperäinen ympyrä on edelleen velpin sisällä (ja velpistä saattaa tulla jopa ympyrää isompi jos lähti kumittamaan jo kaukaa). Ehkä jollain algoritmilla saisi laskettua missä on menee ne oikeasti näkyvät rajat ja sen mukaan rajoitettua velppiä.

Toinen tapa on objektien poistaminen, esim jonkinlainen kumiominaisuus joka poistaa kaikki objektit jota se koskettaa (silloin pitäisi tosin laskea tarkemmin mitkä piirrokset osuvat oikeasti alueelle). Tällöin tosin ei voi esim piirtää puoliympyrää tekemällä ympyrän ja kumittamalla siitä puolikasta, vaan silloin se koko ympyrä katoaisi kun siihen osuu.

Tuossa voi testaa läpinäkyvää piirtoa: https://timdevs01-3.it.jyu.fi/teacher/eraser

sijualle commented 2 years ago

Kokeilin etsiä pikseli kerrallaan että missä ne oikeat rajat menee. Tuon voi periaatteessa laskea valmiiksi ja tallentaa mukaan siihen velppidataan niin ei tarvitse kun kerran tehdä se laskenta. Eli nyt pitäisi toimia aito kumittaminen

https://timdevs01-3.it.jyu.fi/teacher/eraser

vesal commented 2 years ago

Siis tuon voisi tehdä että viivan paksuus ja onko fill vai ei olisi tallennettu erikseen erase asenolle ja tavalliselle piirtämiselle. Eraselle voi hyvinkin haluau paksumman viivan ja oletuksen se voisikin olla jo isompi. Samoin fill voisi olla eraselle oletuksena päällä.

sijualle commented 2 years ago

Tästä on nyt eka versio tuotannossa

Velppien kanssa pitää vielä myöhemmin säätää lisää, sillä nyt pyyhekumi tarttuu myös edellisiin velppeihin eikä vain työn alla olevaan velppiin. Lisäksi päällekkäisissä velpeissä päällimmäisin velppien pyyhekumi voi tehdä aukkoja alla oleviin velppeihin, vaikka niiden pitäisi vain näkyä läpi päällimmäisimmän velpin kumituksista.

Lisäksi pyyhekumitettu alue lasketaan pikseli kerrallaan. Myöhemmin tuon voi tallentaa suoraan piirtodataan (laskea oikeat rajat selaimessa tai palvelimella imagemagickilla), tai laskea ensimmäisellä canvaksen aukeamisella rajat muistiin niin ettei tarvitse joka klikkauksella tehdä tuota isoa laskentaa. Tuota nykyistä pikselilaskentaa joutuu varmaan muokkaamaan, sillä se ei ole vielä täysin pikselitarkka

vesal commented 2 years ago

Voiko jo velpatusta kumittaa? Mistä tallennetaan?

vesal commented 2 years ago

mää luulen että kummallekin voisi olla käyttöä. tuossa läpinäkyvässä pelkään että tulee isoja piirroksia jos kumittaa ohuella viivalla paljon.

On Tue, 21 Jun 2022, sijualle wrote:

Halutaanko pyyhekumilla läpinäkyvää piirtoa vai objektien poistamista tietyltä alueelta?

Läpinäkyvä piirto on aika helppo toteuttaa, tosin velpeissä saattaa tulla hassuja tilanteita. Esim tilanne, jossa päällekkäisissä velpeissä on käytetty päällimmäisessä velpissä kumittamista, koska silloin se tekee aukon myös siihen alla olevaan velppiin. Lisäksi se läpinäkyvä piirto tulee myös siihen velppialueeseen, eli jos piirtää ympyrän, kumittaa siitä puolet ja tekee velpin, niin silloin se koko alkuperäinen ympyrä on edelleen velpin sisällä (ja velpistä saattaa tulla jopa ympyrää isompi jos lähti kumittamaan jo kaukaa). Ehkä jollain algoritmilla saisi laskettua missä on menee ne oikeasti näkyvät rajat ja sen mukaan rajoitettua velppiä.

Toinen tapa on objektien poistaminen, esim jonkinlainen kumiominaisuus joka poistaa kaikki objektit jota se koskettaa (silloin pitäisi tosin laskea tarkemmin mitkä piirrokset osuvat oikeasti alueelle). Tällöin tosin ei voi esim piirtää puoliympyrää tekemällä ympyrän ja kumittamalla siitä puolikasta, vaan silloin se koko ympyrä katoaisi kun siihen osuu.

Tuossa voi testaa läpinäkyvää piirtoa: https://timdevs01-3.it.jyu.fi/teacher/eraser

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored thethread.[AAGJYGAEC3DT34HFHILR6ITVQGI7FA5CNFSM5ZIBDFDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63L NMVXHJKTDN5WW2ZLOORPWSZGOIU55FSA.gif] Message ID: @.***>

sijualle commented 2 years ago

Voiko jo velpatusta kumittaa? Mistä tallennetaan?

Ei voi, jo tehty velppi on lukittu valmis piirros. Sellainen bugi jäi jatkokehitykseen että jos piirtää ja kumittaa uutta piirrosta niin se ei saisi kumittaa jo tehtyä velppiä