找到两个位置之间的角度

Posted

技术标签:

【中文标题】找到两个位置之间的角度【英文标题】:Find angle between Two Position 【发布时间】:2013-03-28 12:20:42 【问题描述】:

我有两个位置的纬度和经度。

我已经知道这两个位置之间的距离了。

CLLocation *locA = [[CLLocation alloc] initWithLatitude:[player.strLatitude floatValue] longitude:[player.strLongitude floatValue]];
CLLocation *locB = [[CLLocation alloc] initWithLatitude:app.lat longitude:app.lag];
CLLocationDistance distance = [locB distanceFromLocation:locA];
NSLog(@"Distance%f",distance);
[locA release]; [locB release];

现在我想找出这两个位置之间的角度。

在中心有一个用户位置,我想在该 Cicle 中以适当的角度显示其他用户位置。

感谢您的帮助。

【问题讨论】:

您只是在寻找 atan2f 函数吗? 对不起,我不知道 atan2f 函数。可以给个链接吗? 你有没有跳过初等数学课...? @holex 我知道 atan 的含义,但我不知道如何用它来找到两个 CLLocation 之间的角度!!!!!!!!!!!!!!!!!!!!!跨度> 它只是基本的三角函数。有人提到了tan,但我认为对于该解决方案,cos 的法律可以在这里更容易地实施,check the formula 【参考方案1】:

也许这会对你有所帮助

- (CGFloat)angleBetweenLinesInRadians:(CGPoint)line1Start 
                         line1End:(CGPoint)line1End 
                       line2Start:(CGPoint)line2Start 
                         line2End:(CGPoint)line2End 

CGFloat a = line1End.x - line1Start.x;
CGFloat b = line1End.y - line1Start.y;
CGFloat c = line2End.x - line2Start.x;
CGFloat d = line2End.y - line2Start.y;

CGFloat line1Slope = (line1End.y - line1Start.y) / (line1End.x - line1Start.x);
CGFloat line2Slope = (line2End.y - line2Start.y) / (line2End.x - line2Start.x);

CGFloat degs = acosf(((a*c) + (b*d)) / ((sqrt(a*a + b*b)) * (sqrt(c*c + d*d))));


return (line2Slope > line1Slope) ? degs : -degs;    

【讨论】:

我没有你的函数建议的 4 分。我有两个位置。(经度和纬度)

以上是关于找到两个位置之间的角度的主要内容,如果未能解决你的问题,请参考以下文章

如何找到两个角度之间的差异?

找到两个轴承之间的角度

找到两个轴承之间的角度

ActionScript 3 AS3找到两个角度之间的最短旋转角度

试图找到两个向量之间的角度(三角形)(HTML5 Canvas)

3点之间的角度?