- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的雷达 View 遇到了一些问题,我很接近找到解决方案,但我无法找出问题所在。为此,我创建了一个类 radarView。问题是,当我浏览周围的位置时,几个白色点代表的位置都散布在雷达 View 的对角线上,从左上角到右下角。
下面是我如何根据位置的方位角和我自己的方位角之间的差异计算点的坐标:
-(float)calculateDelta:(double*)currentAzimuth withLoc:(ARGeoLocation *)location{
double deltaAzimuth;
deltaAzimuth = ABS(location.locationAzimuth - *currentAzimuth);
if (*currentAzimuth < 0.0)
*currentAzimuth = 2*M_PI + *currentAzimuth;
else if (*currentAzimuth > 2*M_PI)
*currentAzimuth = *currentAzimuth - 2*M_PI;
deltaAzimuth = location.locationAzimuth - *currentAzimuth;
if (deltaAzimuth < 0.0)
deltaAzimuth = 2*M_PI + deltaAzimuth;
else if (deltaAzimuth > 2*M_PI)
deltaAzimuth = deltaAzimuth - 2*M_PI;
return deltaAzimuth;
}
-(float)calculateXPointWithLoc:(ARGeoLocation *)loc andDelta:(float)delta{
float angle = radiansToDegrees(delta);
float dpx = ([myPos distanceFromLocation:loc.geoLocation]*20)/DISTANCE_FILTER;
if(0<=angle<=90)
return self.center.x + sin(angle)*dpx;
else if(90<angle<=180)
return self.center.x + cos(angle-90)*dpx;
else if(180<angle<=270)
return self.center.x - cos(270-angle)*dpx;
else if(270<angle<360)
return self.center.x - sin(360-angle)*dpx;
}
-(float)calculateYPointWithLoc:(ARGeoLocation *)loc andDelta:(float)delta{
float angle = radiansToDegrees(delta);
float dpx = ([myPos distanceFromLocation:loc.geoLocation]*20)/DISTANCE_FILTER;
if(0<=angle<=90)
return self.center.y - cos(angle)*dpx;
else if(90<angle<=180)
return self.center.y + sin(angle-90)*dpx;
else if(180<angle<=270)
return self.center.y + sin(270-angle)*dpx;
else if(270<angle<360)
return self.center.y - cos(360-angle)*dpx;
}
上面的 dpx 表示该位置距雷达 View 中心的距离(以像素为单位)。最后,我用这些数据更新了雷达上的点,实际上 UIView 存储在类 radarView 的数组“plots”中:
-(void)updateRadar:(double*)currentAzimuth andRange:(float)range{
float x,y;
int i=0;
float deltaAz;
for(ARGeoLocation *loc in coordinates){
deltaAz = [self calculateDelta:currentAzimuth withLoc:loc andRange:range];
x = [self calculateXPointWithLoc:loc andDelta:deltaAz];
// NSLog(@"x: %f",x);
y = [self calculateXPointWithLoc:loc andDelta:deltaAz];
// NSLog(@"y: %f",y);
[[plots objectAtIndex:i] setFrame:CGRectMake(x, y, DIAMETER_PLOT, DIAMETER_PLOT)];
i++;
}
}
有没有人已经体验过创建雷达 View ?
最佳答案
对不起,我不应该问这个问题。我想我做的时候太累了,我的计算没有错,我没有意识到我做了一个愚蠢的复制和粘贴,所以而不是:
y = [self calculateXPointWithLoc:loc andDelta:deltaAz];
我应该写:
y = [self calculateYPointWithLoc:loc andDelta:deltaAz];
当调试器让我意识到这一点时,我真的很失望。
关于ios - 在增强现实应用程序中实现雷达 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112050/
我想尝试用 Java OpenGL 构建雷达。基本上,在该方法中,您传递玩家的当前位置、玩家面对的角度以及敌人的位置。如果敌人就在正前方,那么红点(象征敌人)应该在圆圈(雷达)的顶部,可以说是0度。如
我只是对声纳设备有一个总体的思考。声纳结果如何用数据类型表示。 目前我想出的解决方案是拥有一个 360 2D array,其值表明物体被击中时的距离,最大范围意味着那里什么也没有。这样做的问题是,对于
我有一个雷达图Js。 我不知道如何在区域内放置径向渐变。放置当前代码时,默认只取1种颜色作为background-color 当前代码: let ctx = document.getElementBy
我用在线生成器实现了 amChart。这是结果: https://live.amcharts.com/ODVhY/ 如您所见,带有值的标签仅在红牛上可见。 如何将其扩展到所有 5 个项目符号? 我的配
我需要一种灵活的方法在 ggplot2 中制作雷达/蜘蛛图。从我在 github 和 ggplot2 组上找到的解决方案,我已经走到了这一步: library(ggplot2) # Define a
我想用radare2调试程序“id3v2 -c halo test.mp3”。 如何将参数“-c halo test.mp3”传递给radare2? 我只用 rarun2 找到了一些东西,但是当我这样
我在哪里可以找到适用于 iOS 的优秀蜘蛛(雷达)图表库? (如下图) 我检查了“Core Plot”和“iOSPlot”开源项目,但这些都不支持蜘蛛图。 BR,元一。 最佳答案 在 Github 上
我是一名优秀的程序员,十分优秀!