Melkoplasma

akx 19.10.04 16:07

Ei ihan plasmaefekti, mutta jotain siihen suuntaan.

 Tekstiversio  Arvo: 10 (30 ääntä)  Äänestä: +  -
<?php
        $pointcount=5;
        // Kuvan leveys ja korkeus.
        $w=320;
        $h=240;

        $im=imagecreatetruecolor($w,$h);
        $points=array();
        for($i=0;$i<$pointcount;$i++)
        {
                // Pisteet paikoilleen.
                $points[$i][0]=rand(0,$w);
                $points[$i][1]=rand(0,$h);
                $points[$i][2]=rand(40,120);
       
        }
        $pal=array();

        // Luodaan "paletti".
        for($i=0;$i<128;$i++) $pal[$i]=$i*2;
        for($i=0;$i<128;$i++) $pal[$i+128]=255-$i*2;
       
        $rdist=120;
        $v=255.0/$rdist;
        $ra=rand(2,8);
        $ga=rand(2,8);
        $ba=rand(2,8);
        for($x=0;$x<$w;$x++)
        {
                for($y=0;$y<$h;$y++)
                {
                        $dist=0;
                        $rd2=0;
                        for($p=0;$p<$pointcount;$p++)
                        {
                                // Lasketaan etäisyys pisteistä.
                                $dist2=sqrt(pow($x-$points[$p][0],2)+pow($y-$points[$p][1],2));
                                $dist+=$dist2;
                               
                        }
                        $dist=$dist%$rdist;
                        $col=$dist*$v;
                        if($col<0) $col=0;
                        if($col>255) $col=255;

                        // Lasketaan kiva väri.
                        $rm=0.5+sin($y/$h*$ra)*0.5;
                        $gm=0.5+sin(($x+$y)/($w+$h)*$ga)*0.5;
                        $bm=0.5+sin($x/$w*$ba)*0.5;

                        // Kirkkaus paletista.
                        $sh=$pal[$col];
                        imagesetpixel($im,$x,$y,imagecolorallocate($im,$sh*$rm,$sh*$gm,$sh*$bm));
                }
        }
        // (Ja laitetaan pisteet näkyviin.)
        for($i=0;$i<$pointcount;$i++)
        {
                imageellipse($im,$points[$i][0],$points[$i][1],5,5,imagecolorallocate($im,255,255,255));
        }       
        header("Content-type: image/png");
        imagepng($im);
?>

kihis 19:27 19.10.04 
esimerkki ois kiva ko ei jaksa omalle serverille pistää :P
totti 19:42 19.10.04 
Ihan nätti. En vaan keksi käyttöä, mutta koodi ok. :P
renni 20:26 19.10.04 
Eikä ainuttakaan kommenttia koodissa, ei näin.
editoitu: 20:45 19.10.04
akx 20:44 19.10.04 
Nyt on jotain kommentteja. (Ja tuo oli siis vanha -- no, melko vanha, tein tämän Assyissä tänä vuonna -- pätkä, jonka nimi oli alunperin "karvanaama.php". Hmm.)
BlueByte 23:43 19.10.04 
esimerkki pystyyn
T.M. 03:53 20.10.04 
http://koti.mbnet.fi/winuus/melkoplasma.php
Siisti.
Algoritmistä tosin en tajua paskan vertaa :)
Esko 18:01 20.10.04 
Eikös tuolla saisi helpommin tehtyä moire patternin kuin plasman?
msdos64 22:09 20.10.04 
// Lasketaan kiva väri.

:D

hieno kuva.. näyttää monimutkaiselta tuo koodi. Vaikka sehän on vain matematiikkaa :)
makeuu 11:46 21.10.04 
Aika siisti.. :) + siitä :)
Entropia 20:59 23.10.04 
Onhan se hieno mutta tästä on tuskin kenellekkään mitään käytännönhyötyä.
Akiro 15:38 24.10.04 
Entropia kirjoitti:
Onhan se hieno mutta tästä on tuskin kenellekkään mitään käytännönhyötyä.
Ei jokaista koodipätkää sellaisenaan tarvikaan pystyä hyödyntämään, kyllähän tuosta aloittelija pystyy paljonkin oppimana koodia tutkimalla.
editoitu: 13:52 25.10.04
Jaenis 13:52 25.10.04 
Kiva plasma, plussaa :)
Kommentointia kyllä sais olla enemmältikin, mut kaipa se noinkin.
TonZa 15:47 27.10.04 
aika hieno :)
ares01 13:22 29.10.05 
:) Mässy
rane 03:47 16.6.06 
miinusta esimerkin puutteesta
Teippio 16:07 30.7.06 
Hieno plasma, mutta käyttöä en löydä.