如何在动作脚本3中找到两点之间的直线角度。
我有一个动态动画箭头的对象,给定代表开始,肘部和终点的点。
我需要线条的角度来旋转尖端处的箭头,以准确地指向当前正在绘制的线段
通过检测一个轴是否为0但是需要两个点之间任意直线的角度,我可以轻松获得直角线的角度。
我熟悉获取一行的积分,例如在47度绘制100px线:
var length:Number = 100;
var angle:uint = 48
graphics.lineTo(Math.cos(angle) * length, Math.sin(angle) * length);
但我正在努力从这条线上获得角度:
我需要的是
给定一条线的起点和终点,该线的角度是多少。
非常感谢任何和所有建议
答案 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所指出的那样,角度是弧度,但你可能还需要它来计算箭头的角度。