BRSunTracker 是一组使用 增强现实 的类,允许您根据您当前的 GPS 定位、设备陀螺仪、时间和日期在您的设备屏幕上跟踪和显示太阳的位置。
包含的示例应用在相机预览中显示一个标记,该标记跟随屏幕上的太阳,并在手机朝向它时跳转到视图的中间。
将 BRSunTrackerView
类导入到您的视图控制器中
#import "BRSunTrackerView.h"
实例化 BRSunTrackerView
并将其作为子视图添加。
BRSunTrackerView *sunTrackerView = [[BRSunTrackerView alloc] initWithFrame:CGRectMake(0, 0, 320, 428)];
[self.view addSubview:sunTrackerView];
或者您也可以通过 Interface Builder 直接添加 BRSunTrackerView
。
默认情况下,BRSunTrackerView
将显示相机预览和默认的跟随太阳的标记。您可以通过设置以下属性来启用或禁用相机并自定义标记为 UIView
// Enable or disable the camera preview
// (The default value is YES)
[sunTrackerView setDisplayCameraPreview:YES];
// Provide your own marker subview
// (otherwise will display the default one)
[sunTrackerView setSunView:myMarkerView];
(可选)将您的视图控制器设置为 BRSunTrackerView
的代理,并使其符合 BRSunTrackerViewDelegate
协议。实现以下方法以检测手机是否对齐到太阳
[sunTrackerView setDelegate:self];
- (void)sunTrackerViewGotFocus:(BRSunTrackerView *)sunTrackerView{
NSLog(@"The sun is aligned with the device.");
}
- (void)sunTrackerViewLostFocus:(BRSunTrackerView *)sunTrackerView{
NSLog(@"The sun is not aligned with the device anymore.");
}
以下是一个解释 BRSunTracker 中计算太阳 2D 屏幕坐标大致过程的图表。所有这些都在 BRSunTracker
类内部进行。陀螺仪方向数据目前以每秒 60 次的速度采样,如果 GPS 定位更新或每分钟计算一次太阳球面坐标。
pARk,苹果代码示例,显示基本的增强现实实现
PSA 算法,一个基于 GPS 坐标、时间和日期计算太阳球面坐标的 C++ 函数
Stack Overflow,我关于如何比较设备方向与太阳位置的初始 Stack Overflow 帖子
Julien Ducret - cpwe
/napopxl
在推特上关注我 @jbrocoo
查看我的应用:Spores
BRFlabbyTable处于Apache许可证之下,有关更多信息,请参阅LICENCE文件。