Re: Efektit
Posted: Thu Jun 09, 2011 1:20 pm
Taisit unohtaa lukea wikilinkkini plasmaefektistä. Siinä ei ole kyse fysiikoista, vaan yksinkertaisella kaavalla saadusta aaltoilevasta efektistä. Lisäksi mainitsemasi pyöriminen on vain illuusio. Seuraappa yksittäisiä pisteitä. Ne völlyvät ympyräradan sijaan. Se on tyypillistä plasmaefekteille.
Plasmaefektin määrittää kaava, ei lopputulos. Siinä ei voi olla fysiikoita seinistä törmäilyyn. Plasmasimulaatio on eri juttu.
Wingmanin plasman kaava näyttää tältä:
Siinä on sinin sisässä jotain sijaintiin liittyvää. Se riittää.
Tässä plasma yksinkertaisemmalla kaavalla:
sen ei tarvitse liikkua, vaikka se perinteisesti liikkuukin.
tässä vähän monipuolisempi ja liikkuva:
plasmapalloväreillä kans:
Olikin kiva tehdä vaihteeksi kunnon plasmaefekti
Eli ideana on tuottaa pinnalle joku jatkuva funktio ja heittää ne sinille ja yhdistellä ja liikutella niitä.
Plasmaefektin määrittää kaava, ei lopputulos. Siinä ei voi olla fysiikoita seinistä törmäilyyn. Plasmasimulaatio on eri juttu.
Wingmanin plasman kaava näyttää tältä:
Code: Select all
palikka(x,y)=(((Sin(x*17))*(Cos(y*13)))+((Sin(a+y*23))*(Cos(a+x*25))))*15
Tässä plasma yksinkertaisemmalla kaavalla:
Code: Select all
Const koko= 10
Repeat
For x=0 To 400 Step koko
For y=0 To 300 Step koko
kirkkaus#=Sin(x)+Sin(y)
Color 0,0,(kirkkaus+2)*63
Box x,y,koko,koko
Next y
Next x
drawscreen
Forever
tässä vähän monipuolisempi ja liikkuva:
Code: Select all
Const koko= 5
Repeat
t#=Timer()/20.0
For x=0 To 400 Step koko
For y=0 To 300 Step koko
kirkkaus#=Sin(x*2-y^1.01-t)+Sin(-y+t/5)+Sin(Distance(0,0,x,y)^1.1+t/7+Sin(t)*70)+Sin(Distance(x,y,Sin(t/3)*200+200,Sin(t/5)*150+150)^1.3/3+t*2) 'jännä plasmakaava
kirkkaus#=(Sin(kirkkaus*90+t)+1)*127 'jännä säätö kun pistetään välille 0 ja 255
Color (kirkkaus/16.0)^2,kirkkaus,Sqrt(kirkkaus)*16 'jännä paletti
Box x,y,koko,koko
Next y
Next x
DrawScreen
SetWindow ""+FPS()
Forever
Code: Select all
Const koko= 4
alku=Timer()
Repeat
t#=(Timer())/20.0
t2#=(Timer()+123456)/20.0
t3#=(Timer())/20.0
For x=0 To 399 Step koko
For y=0 To 299 Step koko
kirkkaus#=Sin(x*2-y^1.01-t)+Sin(-y+t/5)+Sin(Distance(0,0,x,y)^1.1+t/7+Sin(t)*70)+Sin(Distance(x,y,Sin(t/3)*200+200,Sin(t/5)*150+150)^1.3/3+t*2) 'jännä plasmakaava
kirkkaus#=(Sin(kirkkaus*50)+1)*127
kirkkaus3#=Sin(x*2-y^1.01-t2)+Sin(-y+t3/5)+Sin(Distance(0,0,x,y)^1.1+t/7+Sin(t3)*70)+Sin(Distance(x,y,Sin(t/3)*200+200,Sin(t/5)*150+150)^1.3/3+t*2) 'jännä plasmakaava
kirkkaus3#=(Sin(kirkkaus3*50)+1)*127
Color (Sqrt(kirkkaus3)*16+(kirkkaus/16.0)^2)/2,((kirkkaus3/16.0)^2+kirkkaus)/2,(kirkkaus3+Sqrt(kirkkaus)*16)/2
Box x,y,koko,koko
Next y
Next x
DrawScreen
SetWindow ""+FPS()
Forever
Eli ideana on tuottaa pinnalle joku jatkuva funktio ja heittää ne sinille ja yhdistellä ja liikutella niitä.