【问题标题】:iBeacon Arrow RotationiBeacon 箭头旋转
【发布时间】:2015-01-22 17:28:40
【问题描述】:

我正在开发一个 iOS 应用程序,我正在尝试旋转具有箭头图形的 UIImageView。我将房间中的位置作为 CGPoint,我想显示到达另一个 CGPoint 所需的方向。如何生成两点之间的角度,并确保箭头指向正确的方向,以及旋转 UIImageView 的最佳方式是什么?

- (CGFloat) pointPairToBearingDegrees:(CGPoint)startingPoint secondPoint:(CGPoint) endingPoint
{
    CGPoint originPoint = CGPointMake(endingPoint.x - startingPoint.x, endingPoint.y - startingPoint.y); // get origin point to origin by subtracting end from start
    float bearingRadians = atan2f(originPoint.y, originPoint.x); // get bearing in radians
    float bearingDegrees = bearingRadians * (180.0 / M_PI); // convert to degrees
    bearingDegrees = (bearingDegrees > 0.0 ? bearingDegrees : (360.0 + bearingDegrees)); // correct discontinuity
    return bearingDegrees;
}

    CGAffineTransform transform = CGAffineTransformMakeRotation([self pointPairToBearingDegrees:yourLocation secondPoint:CGPointMake(0, 0)]);
    self.arrow.transform = transform;

问题是它只是让箭头疯狂跳跃,而不是从我的位置(yourLocation.x,yourLocation.y)指向原点(0,0)

【问题讨论】:

  • 除非您在谈论这个 iBeacon en.m.wikipedia.org/wiki/IBeacon ,否则请从您的主题标题中删除 iBeacon。
  • 这不只是一些更基本的数学问题吗?
  • @Stonz2 我已经附上了我正在使用的代码,我之前没有问过问题并且确定如何附上代码。
  • @HermannKlecker 是的,这是一个相当基本的数学问题,但我在谷歌上找不到好的答案,所以我转向这里寻求帮助。
  • 这是一个比较简单的三角问题,你需要研究一下。

标签: ios objective-c xcode estimote


【解决方案1】:

听起来您可能想要两台设备——一台发送,一台接收,并且您希望接收设备有一个指向广播设备的指南针。这听起来很整洁。

我会通过主要和次要键将广播设备的经度和纬度作为字符串广播。

现在,您应该有两个点 - 经度和纬度广播和接收设备。接收设备还有一个指南针。

您现在可以在此处使用代码:Point to location using compass 来确定指向的方向。

请注意,为使此功能正常工作,必须为两台设备打开蓝牙,并且必须在两台设备上打开应用程序,即使在广播设备上也是如此。

编辑

我假设随机点基本上是另一个正在传输的设备。我知道你只是想感知信号来自哪里,但设备无法知道。蓝牙基于无线电波(即光),无法分辨来源来自哪个方向。要完成这项工作,您需要有两条信息:每个设备的位置,以及用于定位设备的参考点:

  1. 如果您假设接收设备始终指向北方,则每个设备的空间位置将为您提供设备之间的距离和方向
  2. 由于用户在使用 iPhone 时通常不朝北,因此您需要使用设备上的指南针来确定设备上箭头所指图片的方向。

要确定位置,您可以使用 GPS,但如果您谈论的是房间位置,则需要尽可能精确。然后你可以使用上面的链接来确定方向。

请注意,有一个室内定位 SDK Indoor positioning on iOS with Core Location - not accurate?,但它似乎并不像您希望的那样准确。

【讨论】:

  • 我正在使用 iBeacons,所以基本上我知道我在房间里的位置,把房间想象成一个 X 和 Y 坐标平面。我想或多或少地随机选择房间中的另一个点,然后无论我在房间里移动多少,我的应用程序都会有一个指向该点方向的箭头。
  • 随机点基本上是另一个正在传输的设备吗?
  • 不,另一点是房间里的一个物体就像一张桌子或一盏灯,不传输任何东西。地板变成了 X 和 Y 网格,我通过对 iBeacons 进行三角测量来了解我在房间中的位置。我想将箭头从我的位置指向椅子或灯或其他任何东西。即使我的职位是像桌子一样的地位,这也应该有效。我想我要问的是如何从一个 CGPoint 指向另一个 CGPoint 有点像画一条线,但我感兴趣的是,在线的末端我想要一个指向第二个对象的箭头。跨度>
猜你喜欢
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2020-12-18
相关资源
最近更新 更多