【问题标题】:How to calculate winddirection from degrees?如何从度数计算风向?
【发布时间】:2023-01-08 17:58:36
【问题描述】:

我正在将 (JSON) 天气数据读取到一个小型 delphi 应用程序中。风向由 0-360 的浮点值表示。我想要的是在指南针上将此值计算为 8 个方向(N、NE、E、NW、S、SE、W、SW),并将它们作为箭头符号显示在我的申请表上。我可以使用很多 if..then 来解决这个问题,但如果只是计算它,代码会更简洁。我的数学技能不如以前了,所以我希望你们中的一些人能帮助我?谢谢。

【问题讨论】:

    标签: math 360-degrees


    【解决方案1】:

    你可以使用这个公式: direction = (int)((windDegrees / 45) + 0.5) % 8;

    这将为您提供一个从 0 到 7 的值,代表 8 个罗盘方向。 我们从 0 开始计数。

    以下是如何使用此公式的示例:

    var
      windDegrees: float;
      direction: integer;
    begin
      windDegrees := 190.0;
      direction := (int)((windDegrees / 45) + 0.5) mod 8;
      case direction of
        0: ShowMessage('N');
        1: ShowMessage('NE');
        2: ShowMessage('E');
        3: ShowMessage('SE');
        4: ShowMessage('S');
        5: ShowMessage('SW');
        6: ShowMessage('W');
        7: ShowMessage('NW');
      end;
    end;
    

    这将显示一个带有字符串“S”的消息框。

    然后,您可以使用direction 变量在您的申请表上显示适当的箭头符号。

    【讨论】:

      【解决方案2】:
      Not deplhi but perhaps something like this?
      
      winds=["N","NE","E","SE","S","SW","W","NW"]
      wind_={WIND_IN_DEGREES}
      index=int(round(wind_/45,0))
      print(winds[index])
      

      【讨论】: