【问题标题】:How do I get the degrees of a 360 circle where 12 o clock is 0 or 360 degrees?如何获得 12 点钟为 0 或 360 度的 360 度圆的度数?
【发布时间】:2015-08-21 06:09:30
【问题描述】:

我正在使用这个 JavaScript/ActionScript 代码来计算给定两个 x 和 y 值的角度,但它不正确:

var deltaX = 10;
var deltaY = -10;
var angleInDegrees:int = -(Math.atan2(deltaY, deltaX) * 180 / Math.PI);
trace(angleInDegrees); // 45'

不同点的结果:

clock    x    y    angle
========================
12:00    0, -10  =    90
 3:00   10,   0  =     0
 6:00    0,  10  =   -90
 9:00  -10,   0  =  -180 

我正在尝试获取以下的角度值:

clock    x    y    angle
========================
12:00    0, -10  =     0
 3:00   10,   0  =    90
 6:00    0,  10  =   180
 9:00  -10,   0  =   270 

我可以使用另一个公式来获取以前的值吗?

更新: 坐标系可能是这里的问题。当您单击鼠标时,它会设置原点。如果您向上或向左移动,您将处于负空间。如果您向右或向下移动,则您处于正空间中。

【问题讨论】:

  • 这是一个错误。我已经修好了。应该是 10, 0。
  • 其他问题看起来不正确。它没有给我在我的问题中描述的结果(或者它有但不清楚)。请留下这个问题。
  • 我不了解您的坐标系。即使 12:00 是 0 度......它在时钟的顶部(即正 y 坐标)。除非你同时旋转和翻转时钟。
  • 坐标系按照您的描述旋转。当您单击鼠标时,如果向上移动,则为负数,如果向左移动,则为负数。如果您向右或向下移动,则处于积极状态。

标签: javascript math actionscript


【解决方案1】:

像下面这样的东西怎么样:

function getAngle(y, x) {
    var angle = Math.atan2(-x, -y) * 180/Math.PI - 90;
    return angle < 0 ? 360 + angle : angle;  // Ensure positive angle
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2018-01-04
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    相关资源
    最近更新 更多