【问题标题】:clockwise angle between two line两条线之间的顺时针角度
【发布时间】:2010-07-05 01:41:39
【问题描述】:

我想计算两条线段 A 和 B 之间的顺时针角度。所以得到的角度必须在 0 到 360-1 度之间。我在 SO 中看到了所有其他答案,但他们给了我负面的角度。谢谢。

【问题讨论】:

    标签: c# geometry drawing 2d computational-geometry


    【解决方案1】:

    为了在C#中将任意角度变成0-359范围,可以使用以下“算法”:

    public int Normalise (int degrees) {
        int retval = degrees % 360;
        if (retval < 0)
            retval += 360;
        return retval;
    }
    

    C# 遵循与 C 和 C++ 相同的规则,i % 360 将为您提供介于 -359359 之间的任何整数值,然后第二行是确保它在 0 到 359 的范围内。

    一行的鬼鬼祟祟的版本:

        degrees = ((degrees % 360) + 360) % 360;
    

    这将在所有条件下对其进行规范化。除非性能很关键,否则我不确定是否会过分担心使用内联单线,但我解释一下。

    degrees % 360,您将获得一个介于-359359 之间的数字。添加360 会将范围修改为1729 之间。然后最后的% 360 将把它带回到0359 的范围内。

    【讨论】:

      【解决方案2】:

      我会尝试:

      if degrees is between [-360, 360]
          degrees = (degrees + 360) % 360;
      else degrees = (degrees % 360) + 360) % 360;
      

      【讨论】:

        【解决方案3】:

        当然,您可以通过调整将任何具有负角的解决方案调整为始终为 0-360:

        浮点数 = (角度

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-09
          • 2023-03-05
          相关资源
          最近更新 更多