gpt4 book ai didi

iphone - 使用 iPhone 罗盘从当前位置到麦加的角度

转载 作者:可可西里 更新时间:2023-11-01 05:57:41 32 4
gpt4 key购买 nike

我有一个关于 Qibla 方向的问题,我正在构建一个同时显示北方向和 Qibla 方向的 iPhone 应用程序,我在 CLLocationManager 的帮助下显示北方向,并使用 CLHeading 将其更新为 newHeading.magneticHeading,并且我用以下代码显示朝拜方向

double A = MECCA_LONGITUDE - lon;
double b = 90.0 - lat;
double c = 90.0 - MECCA_LATITUDE;
NSLog(@"tan -1( sin(%f) / ( sin(%f) * cot(%f) - cos(%f) * cos(%f)))", A, b, c, b, A);
double qibAngle = atan(sin(A) /( sin(b) * (1 / tan(c)) - cos(b) * cos(A) ));
NSLog(@"qib Angle- %f",qibAngle);
qibla.transform = CGAffineTransformMakeRotation(qibAngle * M_PI /180);

所以,在这里我得到了角度,但是当我旋转设备时它不会更新角度,任何人都可以帮助我,我知道我需要对航向做一些事情,但我不知道是什么做什么?

最佳答案

我假设您发布的代码计算了地理北方与当前位置朝向麦加的方向之间的角度。您现在需要做的就是考虑用户的标题。

例如,假设用户所在的位置使麦加正对西方,而用户正对正东方。由于 tan 返回 +/-90 度,因此朝拜角必须为 -90 度。现在调整应该很明显了:您需要从相对于地理北方 (-90) 的朝拜角度减去 90 度,以达到 (-180) 度,这是用户为了面向麦加需要转动的角度。

简单地说,您需要“撤消”用户的偏差,您可以通过从朝拜角中减去用户相对于地理北方的航向来实现。

随着数学的发展,现在您需要观察航向变化并在航向变化时重新计算朝拜角。最后,确保使用 trueHeading 属性。

关于iphone - 使用 iPhone 罗盘从当前位置到麦加的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9766437/

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