gpt4 book ai didi

math - 如何将 atan2() 映射到 0-360 度

转载 作者:行者123 更新时间:2023-12-03 04:57:00 25 4
gpt4 key购买 nike

atan2(y, x) 在 180° 处存在不连续性,顺时针方向切换到 -180°..0°。

如何将值范围映射到 0°..360°?

这是我的代码:

CGSize deltaPoint = CGSizeMake(endPoint.x - startPoint.x, endPoint.y - startPoint.y);
float swipeBearing = atan2f(deltaPoint.height, deltaPoint.width);

我正在根据给定的 startPointendPoint (两个 XY 点结构)计算滑动触摸事件的方向。该代码适用于 iPhone,但任何支持 atan2f() 的语言都可以。

最佳答案

使用模数的解决方案

一个捕获所有情况的简单解决方案。

degrees = (degrees + 360) % 360;  // +360 for implementations where mod returns negative numbers

说明

正数:1 到 180

如果将 1 到 180 之间的任何正数除以 360,您将得到与输入的数字完全相同的数字。此处的 Mod 只是确保这些正数以相同的值返回。

负数:-180 到 -1

此处使用 mod 将返回 180 到 359 度范围内的值。

特殊情况:0 和 360

使用 mod 意味着返回 0,这使其成为安全的 0-359 度解决方案。

关于math - 如何将 atan2() 映射到 0-360 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1311049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com