gpt4 book ai didi

android - 计算触摸点的角度并在Android中旋转

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:45 26 4
gpt4 key购买 nike

数学又一次打败了我。这是一项如此简单的任务,但我无法完成它。

场景:我在 SurfaceView 上绘制一个圆形图像。用户触摸图像边框上的一个点并开始将其四处拖动。我需要根据用户的移动旋转圆形图像。我有两个重要的信息,图像中心 X、Y 坐标和触摸点坐标。

enter image description here

如图所示,用户触摸了一个点,根据我的画,触摸点的角度应该在 40 度左右。我无法正确计算。

我试过使用这个公式:

angle = Math.atan2(touchedY - centerY, touchedX - centerX) * 180 / Math.PI 

我无法理解我应该如何计算角度,就像现在一样,它不能正常工作并且值不好。例如,在图像的情况下,角度计算为 -50。

感谢您的宝贵时间,我们很乐意接受任何信息。

LE:实际上我认为我犯了一个错误,如下所述。圆圈应该是这样的:

enter image description here

最佳答案

让我们重新表述问题:您想求出两个向量之间的角度。第一个向量是从您的中心点 (u) 直线上升的向上向量,第二个向量是从中心点到触摸点 (v) 的向量.

现在我们可以记忆(或谷歌)

余弦 a = uv/(|u|*|v|)

其中 a 是向量与 |u| 之间的角度是向量的长度。上向量 u 为 (0, 1),长度为 1。

手动将向量相乘会抵消 x 项并得到类似这样的结果。

double tx = touch_x - center_x, ty = touch_y - center_y;
double t_length = Math.sqrt(tx*tx + ty*ty);
double a = Math.acos(ty / t_length);

请注意如何通过从触摸点减去中心点来获得 v 向量。请记得在需要时转换为学位。

关于android - 计算触摸点的角度并在Android中旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com