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

本文介绍了一种计算二维平面上两点间距离的方法,并提供了两种计算两条线段间夹角的ActionScript实现。注意这些方法并未考虑一些特殊情况,如线段斜率无限大的情形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求两点之间的距离可以这样:
    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值