如何计算Flex中两条相交线之间的角度

时间:2013-04-17 11:10:09

标签: actionscript-3 flash flex flash-builder

如果有两行第1行和第2行。如何计算这两条线之间的角度。

如果line1有点{(x1,y1),(x2,y2)},而line2有点{(x3,y3),(x4,y4)}

我知道如何计算斜率。任何想法在flex中计算角度。

让斜坡知道......

3 个答案:

答案 0 :(得分:2)

var angleRadians:Number=Math.abs(Math.atan2(y2-y1,x2-x1)-Math.atan2(y4-y3,x4-x3));
if (angleRadians>0.5*Math.PI) angleRadians=Math.PI-angleRadians;

简而言之,得到两个斜坡,相互减去,结果绝对化(角度为正),并且由于交叉点周围有4个角度,所以如果我们收到一个更大的斜率,则从中减小一个

答案 1 :(得分:1)

当斜率已知时,您可以计算角度,如..

SLOPE M = y2-y1 / x2-x1,M = tanX,角度X = arc tan(M)

答案 2 :(得分:0)

<强> CODE:

两个向量之间的度数:

public function degreesTwoVectors(v1A:Object, v1B:Object, v2A:Object, v2B:Object):Number 
{
    var angle = (Math.atan2(v1B.y-v1A.y, v1B.x-v1B.x) - Math.atan2(v2B.y-v2A.y, v2B.x-v2B.x)) * (180 / Math.PI);
    if (angle >  180) angle -= 360;
    if (angle < -180) angle += 360;
    return angle;
}

两个向量之间的弧度:

public function radiansTwoVectors(v1A:Object, v1B:Object, v2A:Object, v2B:Object):Number 
{
    var angle = Math.atan2(y2-y1, x2-x1) - Math.atan2(y4-y3, x4-x3);
    if (angle >  Math.PI) angle -= Math.PI*2;
    if (angle < -Math.PI) angle += Math.PI*2;
    return angle;
}



使用示例:

degreesTwoVectors(circle1, circle2, circle3, circle4);

degreesTwoVectors(circle1, circle2, circle2, circle3);

degreesTwoVectors({x:0,y:0}, circle1, {x:100,y:100}, circle2);


描述

//v1A: Object A of vector 1;
//v1B: Object B of vector 1;

//v2A: Object A of vector 2;
//v2B: Object B of vector 2;