`
wangangie18
  • 浏览: 43741 次
  • 性别: Icon_minigender_2
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

flash中两条线段之间的夹角算法

阅读更多

求两点之间的距离可以这样:
    static function distance (x1:Number, y1:Number, x2:Number, y2:Number) :Number
    {
        var dx:Number = x2 - x1;
        var dy:Number = y2 - y1;
        return Math.sqrt(dx*dx + dy*dy);
    }
两条线段之间的夹角
这个是普遍的算法,没把特殊的情况考虑进去,比如说当某一线的斜率为无穷大的情况.
line.fla
var line1:line=new line(0,0,30,0)
var line2:line=new line(0,0,15,15*Math.sqrt(3))
var myTwoLine:twoLine=new twoLine(line1,line2)
trace(myTwoLine.calAngle())
line.as
class line {
       var x1:Number;
       var y1:Number;
       var x2:Number;
       var y2:Number;
       public function line(x1:Number, y1:Number, x2:Number, y2:Number) {
              this.x1 = x1;
              this.x2 = x2;
              this.y1 = y1;
              this.y2 = y2;
       }
}
twoLine.as
class twoLine{
       var line1:line
       var line2:line
       public function twoLine(_line1:line,_line2:line){
              line1=_line1
              line2=_line2
       }
       function calAngle():Number{
              var k1:Number=(line1.y1-line1.y2)/(line1.x1-line1.x2)
              var k2:Number=(line2.y1-line2.y2)/(line2.x1-line2.x2)
              var k:Number=Math.abs((k1-k2)/(1+k1*k2))
              return Math.atan(k)/(Math.PI/180)
       }
}
方法2
twoLine.as
class twoLine {
       var line1:line;
       var line2:line;
       public function twoLine(_line1:line, _line2:line) {
              line1 = _line1;
              line2 = _line2;
       }
       function calAngle():Number {
              var k1:Number = (line1.y1-line1.y2)/(line1.x1-line1.x2);
              var k2:Number = (line2.y1-line2.y2)/(line2.x1-line2.x2);
              var angle1:Number = Math.abs(Math.atan(k1)/(Math.PI/180));
              var angle2:Number = Math.abs(Math.atan(k2)/(Math.PI/180));
              return Math.abs(angle1-angle2);
       }
}
本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/488.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics