如何在actionscript 3中找到两点之间的直线角度。
我有一个对象,在给定代表起点、弯头和终点的点的情况下,动态地向外显示箭头。
我需要直线的角度来旋转尖端的箭头,以准确地指向正在绘制的当前线段。
我可以很容易地得到直角线的角度,通过检测其中一个轴是否为0,但需要两点之间的任何线的角度。
我很熟悉获取直线的点,例如,在47度处绘制一条100px的直线:
var length:Number = 100;
var angle:uint = 48
graphics.lineTo(Math.cos(angle) * length, Math.sin(angle) * length);但我很难从线上得到角度:
我需要的是
给定直线的起点和终点,直线的角度是多少。
非常感谢您的任何建议
发布于 2009-08-19 21:30:18
每个人都在建议使用Math.atan()的公式,给出了分母中0种情况的警告。已经有一个完整的函数可以做到这一点--它是Math.atan2()。
只需传入一个X和一个Y值,它就会给出一个角度。没有特殊情况--只有坐标。通常,返回值以弧度表示,从-pi到+pi。
发布于 2009-08-19 15:30:44
角度(也称为直线的斜率)的公式如下:
angle = Math.atan((y2 - y1) / (x2 - x1))其中:(x1,y1)是第一个点(直线起点)的坐标,(x2,y2)是第二个点(直线终点)的坐标
另外,请注意角度是以弧度为单位返回的,因此如果您需要以度为单位获取角度,则需要乘以180,再除以PI:
angleInDegrees = angle * 180/Math.PI;发布于 2009-08-19 15:35:07
你用你的公式得到了这条线的终点,这条线是正确的。你只需要反转这个方程式:
tan(theta) = opposite / adjacent这就给出了:
angle = arctan(opposite / adjacent)其中,反方向是高度(y),相邻方向是长度(x)。
要小心,因为当相邻的值为零(除以零)时,它就会崩溃,arctan会为零本身抛出一个异常,所以你需要捕获垂直或水平的线的特殊情况。
正如Miky D指出的那样,角度是以弧度表示的,但无论如何,您可能需要以这种形式来计算箭头的角度。
https://stackoverflow.com/questions/1300690
复制相似问题