【问题标题】:Calculating the Angle of Rotation Instead of Inclination for Angles Greater than 360 degrees计算大于 360 度的角度的旋转角度而不是倾角
【发布时间】:2013-10-19 16:35:04
【问题描述】:

我正在尝试实现一个旋转轮,它输出正整数 - sizeof(int) - 当顺时针旋转和负整数 - sizeof(int) - 当逆时针旋转。我正在使用找到 here 的 SMRotaryWheel 实现并输出方法中生成的弧度值:

continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

它使用atan2f() 函数来计算倾斜角度,并进行一些算术运算来确定要在 2Pi 弧度范围内旋转的位置。

我遇到的问题是,由于它只测量倾斜角度,输出范围仅在 +/- pi 范围内。

对于大于 360 度的角度,是否有一个(或多个)函数可以计算旋转角度而不是倾斜角度?

【问题讨论】:

  • 我和你有同样的问题。你解决了吗?
  • @SeanChense 不幸的是我没有。我最终放弃了旋转轮的想法。它不是 UI 的关键部分。如果您找到解决方案,请发布您的答案。

标签: ios trigonometry


【解决方案1】:

编辑:我误解了原始描述。

假设对于弧度,从(1,0)开始是0,那么(0,1)是π/2,(-1,0)是π (0,-1)是3π/2,反过来到 (1,0) 是 2π(或 0)。

您的设置是,从 III 到 IV 的交叉是 π 到 0,从 I 到 II 的交叉是 0 到 -π。所以我想把I到II变成0到π,然后把III到IV变成π到2π,

伪代码(假设输入θ的范围是{θ | -π

function inclination2rotation(θ)
{
    if (θ <= 0)
    {
        return -θ;
    }
    if (θ > 0)
    {
        return -θ+2π;
    }
}

【讨论】:

  • 谢谢!我正在努力解决的是,当我开始顺时针旋转车轮(通过坐标平面的象限 4 和 3)时,弧度值从 0 变为 pi。一旦我越过从象限 3 到象限 2 的阈值,弧度值就会翻转到 -pi 并在我到达原始起点时返回 0。似乎我需要一些方法来确定何时开始将 2pi 添加到弧度,但我很难过。
  • 是在我建议添加 2pi 之前还是之后?
  • 那是在添加 2pi 之前。
  • 很奇怪,就像,如果你在第三季度的 x 轴下方有一根头发,那么这个值就像是一根低于 +pi 的头发,比如 +3.13,一旦你进入第二季度,值会是-3.13?只是想进入同一页面。
  • 我想我想通了,看编辑,使用分段函数。非分段函数会更漂亮但很棘手,因为您需要进行方向切换
猜你喜欢
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多