Actions Trig线的角度

时间:2009-08-19 15:25:33

标签: actionscript-3 geometry

如何在动作脚本3中找到两点之间的直线角度。

我有一个动态动画箭头的对象,给定代表开始,肘部和终点的点。

我需要线条的角度来旋转尖端处的箭头,以准确地指向当前正在绘制的线段

通过检测一个轴是否为0但是需要两个点之间任意直线的角度,我可以轻松获得直角线的角度。

我熟悉获取一行的积分,例如在47度绘制100px线:

var length:Number = 100;
var angle:uint = 48
graphics.lineTo(Math.cos(angle) * length, Math.sin(angle) * length);

但我正在努力从这条线上获得角度:

我需要的是

给定一条线的起点和终点,该线的角度是多少。

非常感谢任何和所有建议

3 个答案:

答案 0 :(得分:5)

每个人都在使用Math.atan()建议公式,给出分母中0个案例的警告。有一个完整的功能已经做到了 - 它是Math.atan2()

只需传入一个X和Y值,它就会给你一个角度。没有特殊情况 - 只是坐标。像往常一样,返回值以弧度为单位,从-pi到+ pi。

答案 1 :(得分:1)

angle 的公式(也称为线的斜率)如下:

angle = Math.atan((y2 - y1) / (x2 - x1))

其中:(x1,y1)是第一个点(线的起点)的坐标,(x2,y2)是第二个点的坐标(行尾)

另外,请注意角度以弧度为单位返回,因此如果您需要获得以度为单位的角度,则需要乘以180并除以PI:

angleInDegrees = angle * 180/Math.PI;

答案 2 :(得分:1)

你正好在那里用你的公式来获得线的终点。你只需要反转等式:

tan(theta) = opposite / adjacent

给出了:

angle = arctan(opposite / adjacent)

其中相反的是高度(y),相邻的是长度(x)。

小心,因为当相邻为零(除以零)时会发生故障,而arctan会自动引发零异常,因此您需要捕获垂直或水平线的特殊情况。

正如Miky D所指出的那样,角度是弧度,但你可能还需要它来计算箭头的角度。