gpt4 book ai didi

iOS 指南针导航

转载 作者:行者123 更新时间:2023-11-29 02:58:32 30 4
gpt4 key购买 nike

我正在为自己和同事制作一个 iPhone 应用程序来定位我们的设备。它涉及一个指向北方的指南针和一个指向设备给定坐标的指针。

但是我无法将针指向设备。我正在使用以下代码来尝试创建一个“三角形”并根据给定的罗盘北计算“弧度量”,因此我可以将针从北旋转到与 triangleC 的“量”偏移量。

triangleA = curLocation.coordinate.latitude - setLocation.coordinate.latitude;
if(triangleA < 0) { east = NO; } else { east = YES; }
triangleB = curLocation.coordinate.longitude - setLocation.coordinate.longitude;
if(triangleB < 0) { north = NO; } else { north = YES; }

float tempC = pow(fabs(triangleA),2) + pow(fabs(triangleB),2);

triangleC = sqrtf(tempC);

但是 triangleC 不包含 -360 到 360 之间的“弧度”。

除此之外,我还有一个问题。是否有任何私有(private)框架来获取用户的当前位置?因为普通的 locationManager 有一个相当大的最小偏移量。 5 米。

我希望有人能为我指明正确的方向,以便从北方获得正确的“弧度”。

最佳答案

您可以使用三角函数来代替勾股定理。首先得到你的点的x和y之间的差

float x = curLocation.coordinate.latitude - setLocation.coordinate.latitude;
float y = curLocation.coordinate.longitude - setLocation.coordinate.longitude;

然后使用反正切得到角度。

float angle = atan2(y,x);

如果您想要所有正值,请添加此行:

if(angle<0) angle += 2.0*M_PI;

然后,如果您想使用度数 (0-360) 而不是弧度,请使用以下行进行转换:

angle = angle * (180/M_PI);   

还有你的 bool 值。当角度大于 270° 或小于 90° 时,您将指向东方。当角度在 0° 到 180° 之间时,您将指向北方。

east = (angle >= 270) || (angle <= 90);
north = (angle >= 0) && (angle <= 180);

关于iOS 指南针导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23569186/

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