Ali*_*lin 6 geometry android velocity
数学又来了,打败了我.我需要你的帮助重组并再次攻击.
我得到了什么:

我有一个surfaceview和一个圆作为位图.我需要在用户围绕圆形边缘移动手指时旋转位图.用户滑动得越快,我需要旋转图像越多.看似简单但不太容易实现.
我需要的
我需要计算在onDraw事件上旋转图像的角度.从我到目前为止的想法,我需要两件事: - 新触点和旧触点之间的角度.我做了一个简单的函数来处理这个问题:
private int getAngleBetweenTwoTouchedPoints(double oldX, double oldY, double newX, double newY)
{
return (int) Math.abs(Math.atan2(newY - oldY, newX - oldX));
}
Run Code Online (Sandbox Code Playgroud)
由此返回的角度从0到1不等,我相信它是正确的.通过将图像旋转矩阵角度增加该值,我得到一个慢速旋转,基本上是1个单位.所以,有机会工作,但还不行. - 所以,我可能需要的第二件事是用户在屏幕上滑动手指的速度.所以基本上是这样的:
rotationAngle + = angleBetweenTouches + speed
我看到命名的速度或速度是我的问题,考虑到我不仅仅在X或Y上移动,而是围绕圆圈移动.我不知道如何计算它.我在Android帮助下看到了VelocityTracker,但我不知道它有什么用.
所以回顾一下:当用户在图像边框周围移动手指时,我需要能够旋转图像.更简单的是,当用户停止滑动时,滑动开始时手指下方的图像像素应该在滑动停止时相同.
任何帮助是极大的赞赏.谢谢
我怀疑考虑到“更简单的是,当用户停止滑动时,滑动开始时手指下方的图像像素应该与滑动停止时相同。”,您可能会更好的是绝对旋转而不是相对的。
随着每个事件增加旋转可能会累积错误,导致位图看起来没有“粘”在手指上。
如果您只跟踪初始事件和最后一个事件,然后始终从初始视图转换为适合最后一个事件的视图,您的代码将更简单(避免速度),并且表现更好。
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |