如果有两行 line1 和 line2 。如何计算这两条线之间的角度。
如果 line1 有点 {(x1,y1),(x2,y2)} 而 line2 有点 {(x3,y3),(x4,y4)}
我知道如何计算斜率。计算弯曲角度的任何想法。
让斜坡已知....
如果有两行 line1 和 line2 。如何计算这两条线之间的角度。
如果 line1 有点 {(x1,y1),(x2,y2)} 而 line2 有点 {(x3,y3),(x4,y4)}
我知道如何计算斜率。计算弯曲角度的任何想法。
让斜坡已知....
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 个角度,所以如果我们会收到一个更大的,那就把它变小。
当斜率已知时,您可以计算角度,如..
斜率 M = y2-y1/x2-x1 , M = tanX , 角度 X = arc tan(M)
代码:
两个向量之间的度数:
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;