我们可以在陀螺仪给出的两点之间在android画布上画线吗?
Posted
技术标签:
【中文标题】我们可以在陀螺仪给出的两点之间在android画布上画线吗?【英文标题】:Can we Draw line in android canvas between two points given by gyroscope? 【发布时间】:2015-04-19 07:02:47 【问题描述】:是否可以通过相机在android中从点A(用户首先触摸的地方)和点B(用户第二次触摸的地方)画一条线。
用户可以触摸第一个点并在另一个方向旋转他的相机来点击第二个点。
我正在使用gyroscope
、accelerometer
和magnetometer
(传感器融合),我在触摸时获得 x、y、z 坐标。
但是我们可以在画布上用户触摸的任何地方绘制 3D 图像吗?类似于MagicPlan
app 正在做的事情。
【问题讨论】:
我建议您使用 openGL 进行 3D 绘图。 谢谢@chipopo,但真正关心的是,是否可以在陀螺仪传感器给出的两点之间画一条线。 正是我需要的,就像 MagicPlan 应用程序一样。但对于 ios。 :) 如果您可以使用陀螺仪记录旋转速率并且您知道经过的时间,您应该能够计算发生的总旋转量并确定两点之间的距离。即,90 度/秒的平均旋转速度 * 1500 毫秒 = 135 度旋转。这有帮助吗? 不用于翻译 - 您必须对(加速度计 - 估计的重力矢量)进行双重积分才能获得位置。该数据在高频下运行准确,但在低频下的零跟踪效果不佳,这意味着积分经常会引入漂移。由于您集成了两次,因此您得到了漂移平方。 【参考方案1】:感谢@chipopo,但真正关心的是,是否可以在陀螺仪传感器给出的两点之间实际画一条线。
简短的回答,不。陀螺仪是速率传感器,而不是位置传感器。你需要做数学才能获得积分。
因为你在安卓,我会推荐Orientation 一旦你有了这个,你需要决定一个最适合你的用例的半径,并建立一个参考方向。一旦你抓住了两个方向,如何map shperical points to a 2d canvas 由你决定。
我过去使用的一种方法只是在 Y 上绘制增量间距,在 X 上绘制增量航向,但是您可能需要考虑在您的应用尝试执行的上下文中滚动对您意味着什么。
您可能应该使用 openGL,但您可能需要某种绘图库。
【讨论】:
更正:我忘了在 Android 手机的上下文中,摄像头指出您可能对滚动(用户围绕垂直身体转动)和俯仰(用户向上或向下倾斜)最感兴趣。在这种情况下,标题将是您需要小心处理的角度,因为它可能毫无意义或没有意义,具体取决于您尝试做什么以上是关于我们可以在陀螺仪给出的两点之间在android画布上画线吗?的主要内容,如果未能解决你的问题,请参考以下文章