gpt4 book ai didi

iphone - 增强现实方位/航向/方位角困惑。 (iPhone ARKit 代码)

转载 作者:行者123 更新时间:2023-12-03 18:36:52 25 4
gpt4 key购买 nike

- (float)angleFromCoordinate:(CLLocationCoordinate2D)first toCoordinate:(CLLocationCoordinate2D)second {

//first is origin

//second is point

float longitudinalDifference = second.longitude - first.longitude;
float latitudinalDifference = second.latitude - first.latitude;
float possibleAzimuth = (M_PI * .5f) - atan(latitudinalDifference / longitudinalDifference);

if (longitudinalDifference > 0)
{
return possibleAzimuth;
}
else if (longitudinalDifference < 0)
{
return possibleAzimuth + M_PI;
}
else if (latitudinalDifference < 0)
{
return M_PI;
}

return 0.0f;
}

上面的代码(取自开源 ARkit 项目)计算从兴趣点到原点(用户位置)的角度。给定以弧度计算的方位角(航向),在正在构建的 AR 应用程序中,我可以使用以下代码检测某个点是否在其视口(viewport)内:

- (BOOL)viewportContainsCoordinate:(ARCoordinate *)coordinate {

double centerAzimuth = self.centerCoordinate.azimuth;
double leftAzimuth = centerAzimuth - VIEWPORT_WIDTH_RADIANS / 2.0;

if (leftAzimuth < 0.0) {
leftAzimuth = 2 * M_PI + leftAzimuth;
}

double rightAzimuth = centerAzimuth + VIEWPORT_WIDTH_RADIANS / 2.0;

if (rightAzimuth > 2 * M_PI) {
rightAzimuth = rightAzimuth - 2 * M_PI;
}

BOOL result = (coordinate.azimuth > leftAzimuth && coordinate.azimuth < rightAzimuth); //THIS LINE

if(leftAzimuth > rightAzimuth) {
result = (coordinate.azimuth < rightAzimuth || coordinate.azimuth > leftAzimuth);
}

double centerInclination = self.centerCoordinate.inclination;
double bottomInclination = centerInclination - VIEWPORT_HEIGHT_RADIANS / 2.0;
double topInclination = centerInclination + VIEWPORT_HEIGHT_RADIANS / 2.0;

//check the height.
result = result && (coordinate.inclination > bottomInclination && coordinate.inclination < topInclination);

//NSLog(@"coordinate: %@ result: %@", coordinate, result?@"YES":@"NO");

return result;
}

问题是我不完全理解它是如何工作的,特别是在它检查坐标(兴趣点)方位角(航向)是否位于原点航向的左右方位角点之间的视口(viewport)范围内的行中。

举一个我的误解的例子 - 以度为单位,如果坐标(兴趣点)计算到原点 90 度的方位,然后原点视口(viewport)以 270 度的方位面向它坐标,这意味着用户正在查看该点,但我不明白为什么代码仍然有效,因为它检查坐标方位角轴承是否在原点视口(viewport)内,我认为例如250 - (270) - 290 度。显然,相对于原点的坐标方位角是 90,所以它应该是错误的。

非常感谢任何帮助了解这里到底发生了什么的信息。

最佳答案

我认为你可以使用像

这样的函数
#define degreesToRadians(x) (M_PI * x / 180.0)

让您更清楚按照度数和弧度。希望这会对您有所帮助..

关于iphone - 增强现实方位/航向/方位角困惑。 (iPhone ARKit 代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9680819/

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