2013-04-17 33 views
1

如果存在两条线LINE1和LINE2。如何计算这两条线之间的角度。如何计算两个交叉线之间的角度在Flex中

如果一号线有个{(X1,Y1),(X2,Y2)}和2号线有个{(X3,Y3),(X4,Y4)}

我知道如何计算的山坡上。任何想法来计算弯曲角度。

让已知斜坡....

回答

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度的角度,所以如果我们会收到更大的一个,请将其缩小一些。

+0

喜晚祷.. IAM获取值0.12,0.15,0.25。那么从这个角度(例如85度或60度)将会是什么角度 – Nithil

+0

将此结果乘以180并除以PI。我写了“弧度”的目的。 – Vesper

+0

谢谢..快速回复和确切的答案 – Nithil

1

当斜率knwon然后就可以计算角度似..

SLOPE M = Y2-Y1/X2-X1,M =坦,角X =反正切(M)

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; 
相关问题