【问题标题】:Actionscript Angle of a Line Trig线三角的 Actionscript 角度
【发布时间】:2009-08-19 15:25:33
【问题描述】:

如何在 actionscript 3 中找到两点之间的直线角度。

我有一个对象可以动态地动画出箭头,给定代表起点、肘部和终点的点。

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

通过检测一个轴是否为0,我可以很容易地得到直角线的角度,但需要两点之间任何一条线的角度。

我很熟悉获取一条线的积分,例如在 47 度处画一条 100px 的线:

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

但我很难从这条线上获得角度:

我需要的是

给定直线的起点和终点,直线的角度是多少。

非常感谢您的任何建议

【问题讨论】:

    标签: actionscript-3 geometry


    【解决方案1】:

    每个人都在建议使用 Math.atan() 的公式,在分母中给出 0 个案例的警告。已经有一个完整的函数可以做到这一点——它是Math.atan2()

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

    【讨论】:

    • 我遇到了分母中的 0,现在用 if 语句过滤掉,但 atan2 更优雅
    【解决方案2】:

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

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

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

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

    angleInDegrees = angle * 180/Math.PI;
    

    【讨论】:

      【解决方案3】:

      您的公式是正确的,用于获取线的终点。您只需要反转方程式:

      tan(theta) = opposite / adjacent
      

      这给出了:

      angle = arctan(opposite / adjacent)
      

      对面是高度 (y),相邻的是长度 (x)。

      要小心,因为当相邻的值为零(除以零)并且 arctan 会引发零本身的异常时,这会发生故障,因此您需要捕获垂直或水平行的特殊情况。

      正如 Miky D 指出的那样,角度是以弧度为单位的,但无论如何您可能都需要以这种形式计算箭头的角度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多