flash中一个二维的类

最近看了flash
觉得很有趣,而且差不多都是面对对象的语言,上手很快,如果大家有兴趣可以学一下!!
  1class vector 
  2{  var x;
  3  var y;
  4    public function vector(x,y)
  5    {     this.x=x;
  6          this.y=y;
  7        
  8  
  9    }

 10    //
 11    function toString()
 12    { var rx=Math.round (x*1000)/1000
 13      var ry=Math.round(y*1000)/1000;
 14     return "["+ rx+","+ry+"]";
 15     }

 16     function reset(x,y)
 17     {this.x=x;
 18      this.y=y;
 19      }

 20      function equals(v)
 21      {return (x==v.x&&y==v.y)}
 22      //向量相加
 23      function plus(v)
 24      {this.x+=v.x;
 25      this.y+=v.y;}

 26      //仅返回相加值
 27      function plusNew (v)
 28      {return (this.x+v.x,this.y+y);
 29        }

 30    //减法
 31    function minus(v)
 32    {this.x-=v.x;
 33    this.y-=v.y;}

 34    function minusNew(v)
 35    {return (this.x+v.x,this.y+v.y);}
 36    //取反
 37    function negate(v)
 38    {this.x=-this.x;
 39    this.y=-this.y}

 40    function negateNew(v)
 41    {return(-this.x,-this.y);}
 42    
 43    //向量的缩放
 44    function scale(s)
 45    {this.x*=s;
 46    this.y*=s;
 47    }

 48    function scaleNew(s)
 49    {return (this.x*s,this.y*s)
 50    }

 51    //get length
 52    function getLength()
 53    return Math.sqrt (this.x*this.x+this.y*this.y);}
 54    //set length
 55    function setLength(len)
 56    {var r=this.getLength();
 57    if(r){this.scale(len/r)}
 58    else
 59    {this.x=len;}}

 60    
 61    
 62    //get angle
 63    function getAngle()
 64    {return(Math.atan2 (this.x,this.y));}
 65    
 66    //set angle
 67    function setAngle(angle)
 68    {var r=getLength();
 69    this.x=r*Math.cos (angle);
 70    this.y=r*Math.sin(angle);}

 71    
 72    //rotate
 73    function rotate (angle)
 74    {var ca=Math.cos (angle);
 75    var sa=Math.sin(angle);
 76    with(this)
 77    {var rx=x*ca-y*sa;
 78    var ry=x*sa+y*ca;
 79    x=rx;
 80    y=ry;
 81    }
}

 82    
 83    function rotateNew(angle)
 84    {var v=new vector(this.x,this.y);
 85     v.rotate(angle);
 86     return v;}

 87     
 88     //点击 dot
 89     function dot(v)
 90     {return (this.x*v.x+this.y*v.y)}
 91     //法向量
 92     function getNormal()
 93     {return({-this.y,this.x})}
 94     //垂直验证
 95     function isPerpTo(v)
 96     {return(this.dot(v)==0)}
 97     //计算两向量的角度
 98     function angleBetween(v)
 99     {var dp=this.dot(v);
100     var cosAngle=dp/(this.getLength()*v.getLength());
101     return Math.acos (cosAngle);
102     }

103     
104     
105    
106      
107
108

下载 vector.rar
posted @ 2006-10-18 09:40  释天  阅读(402)  评论(1编辑  收藏  举报