求两点之间的距离可以这样:
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
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