Oon keksinyt mielestäni kivan tavan tuottaa värikästä komean näköistä abstraktia taidetta liukuhihnalta runsain mitoin :) Siis tapa on niin yksinkertaisen nerokas, että tekisi mieli patentoida se, heh, mutta julkaisen nyt kuitenkin.
Tuolla tuhat:
https://petke.info/albumi.php
Koodin kommenteista seljennee kuinka ne on tuotettu.
rebol[] plot: copy[] ;blockki johon kerätään yleensä grafiikka käskyjä, mutta... maxx: 1000 maxy: 1000 random/seed now/precise main: layout [ ; nyt on tarkoitus luoda vain tyhjä kuvapohja, mikä saadaan kun plot on tyhja box (as-pair (maxx) (maxy)) black effect reduce ['draw plot] ] kuva2: copy/part skip to-image main 20x20 (as-pair maxx maxy) ;REBOL laittaa oletusarvoisesti layouttiin ; ikävät harmaat 20 pixeliä paksut reunat. Otetaan ne kuvapohjasta pois. random/seed now/precise ;satunnaislukugeneraattorin alustus print "wait..." ;tulostetaan konsoliin, jotta ohjelman ajon voi halutessaan lopettaa kerroinx: 0.0001 ;skaalauskerroin x koordinaatille. kerroiny: 0.0001 ;skaalauskerroin y koordinaatille. Nämä ovat välttämättömiä, muuten kuvista tulee rummempia... for kuvaind 1 100 1 [ ;tuotetaan 100 kpl kuvia x0: random maxx ; arvotaan 9 pistettä kuvapohjasta y0: random maxy x1: random maxx y1: random maxy x2: random maxx y2: random maxy x3: random maxx y3: random maxy x4: random maxx y4: random maxy x5: random maxx y5: random maxy x6: random maxx y6: random maxy x7: random maxx y7: random maxy x8: random maxx y8: random maxy x9: random maxx y9: random maxy kuvaindapuri: kuvaind / 100 ;vaikuttaa väriarvoihin for x 0 (maxx - 1) 1 [ ;käydään jokainen kuvan pixeli läpi kahdessa sisäkkäisessä luupissa for y 0 (maxy - 1) 1 [ xp: x0 + (kerroinx * x) yp: y0 + (kerroiny * y) ;lasketaan etäisyyksiä arvottuihin pisteisiin et1: square-root (((xp - x1) * (xp - x1)) + ((yp - y1) * (yp - y1))) et2: square-root (((xp - x2) * (xp - x2)) + ((yp - y2) * (yp - y2))) et3: square-root (((xp - x3) * (xp - x3)) + ((yp - y3) * (yp - y3))) et4: square-root (((xp - x4) * (xp - x4)) + ((yp - y4) * (yp - y4))) et5: square-root (((xp - x5) * (xp - x5)) + ((yp - y5) * (yp - y5))) et6: square-root (((xp - x6) * (xp - x6)) + ((yp - y6) * (yp - y6))) et7: square-root (((xp - x7) * (xp - x7)) + ((yp - y7) * (yp - y7))) et8: square-root (((xp - x8) * (xp - x8)) + ((yp - y8) * (yp - y8))) et9: square-root (((xp - x9) * (xp - x9)) + ((yp - y9) * (yp - y9))) ;sitten aletaan täysin hatusta vedetyillä lausekkeilla laskemaan pisteen x,y RGB väriarvoja Ri: (xp + yp * et1 + kuvaindapuri) Gi: (xp * yp + et2 - kuvaindapuri) Bi: xp + yp + et3 * kuvaindapuri R: 255 * cosine (360 * sine Ri) G: 255 * sine (360 * cosine Gi) + et4 B: 255 * cosine (360 * sine Bi) väri: to-tuple compose [(to-integer (G + B)) (to-integer (G + R)) (to-integer (B + R))] ;kuviin saadaan mukavaa vaihtelua eri ehdoilla. Nekin tietysti hatusta vedettyjä if (R * G * B) <= (3 * 128 * 128 * 128) [ Ri: (xp + yp * et4) Gi: (xp * yp + et5) Bi: xp + yp + et6 R: 255 * sine (360 * cosine Ri) + et3 G: 255 * sine (360 * sine Gi) B: 255 * cosine (360 * cosine Bi) väri: to-tuple compose [(to-integer (G + B)) (to-integer (G + R)) (to-integer (B + R))] ] if (R * G * B) >= (3 * 128) [ Ri: (xp + yp - et7 + et3) Gi: (xp * yp + et8) Bi: xp + yp * et9 + et6 R: 255 * sine (360 * cosine Ri) G: 255 * sine (360 * sine Gi) B: 255 * cosine (360 * cosine Bi) väri: to-tuple compose [(to-integer (R)) (to-integer (G)) (to-integer (B))] ] poke kuva2 (as-pair x y) (väri) ;aikaansaatu väriarvo asetetaan pixeliin ] ] save/png to-file rejoin ["kuva" kuvaind ".png"] kuva2 ;talletetaan aikaan saatu kuva print kuvaind kerroinx: 1.01 * kerroinx ;kasvatetaan huvin vuoksi hieman skaalauskertoimia kerroiny: 1.01 * kerroiny ] halt
Aihe on jo aika vanha, joten et voi enää vastata siihen.