波の干渉Bitmap

by 12346
重いのでFPS : 4
強め合いが青、弱め合いが黒
3つめの波源入れようかなんて血迷ったり。
♥0 | Line 23 | Modified 2010-08-15 15:10:24 | MIT License
play

ActionScript3 source code

/**
 * Copyright 12346 ( http://wonderfl.net/user/12346 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ycuG
 */

//重いのでFPS : 4
//強め合いが青、弱め合いが黒
//3つめの波源入れようかなんて血迷ったり。
package{import flash.display.*;import flash.events.*;
[SWF(frameRate="4")]
public class m extends Sprite{
 public var B:BitmapData=new BitmapData(256,256,!1),S1:S,S2:S
 public function m(){
  addChild(new Bitmap(B));S1=new S(180,200),S2=new S(70,200)
  addEventListener("enterFrame",E)}
 private function E(e:Event):void{S1.E(),S2.E()
  for(var i:int=256,j:int;i--;)for(j=256;j--;)B.setPixel(i,j,128+S1.u(i,j)+S2.u(i,j))
 }
}}
class S{
 public var v:Vector.<Vector.<int>>,x:int,y:int,t:int=0,w:int,h:int
 public function S(X:int,Y:int){
  x=X,y=Y,w=x<128?256-x:x,h=y<128?256-y:y
  v=new Vector.<Vector.<int>>(++w,true);++h
  for(var i:int=w;i--;)v[i]=new Vector.<int>(h,true)
 }
 public function E():void{
  for(var i:int=w,j:int;i--;)for(j=h;j--;)v[i][j]=64*Math.sin(Math.sqrt(i*i+j*j)-++t/65536)
 }   
 public function u(X:int,Y:int):int{return v[X>x?X-x:x-X][Y>y?Y-y:y-Y]}
}