一个轮胎的旋转角度的算法问题 求解

fairytale_zyy 2011-10-09 02:27:59
一个正面的圆形轮胎
我用手指来滑动从而可以控制轮胎的正向逆向的旋转,可是角度的计算算法问题一直困扰着我,请解


通过手指放下和拿起来的时候我计算出了角度,可是这还远远不够:
private float angleCalculator(float x1, float y1, float x2, float y2) {
float x = -centerX;
float y = -centerY;
double a=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
double b=Math.sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
double c=Math.sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));
double cosA=(b*b+c*c-a*a)/(2*b*c);
double arcA = Math.acos(cosA);
double angleA = arcA * 180 /Math.PI;
return (float)angleA;
}
求解 谢谢 不甚感激
...全文
253 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fairytale_zyy 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bayougeng 的回复:]

我觉得,手指的起点和落点,应该是围绕圆心的。也就是说,如果手指从(1,0)划到(0,0)是没有道理的。所以我觉得你不能直接拿两个点加圆心来确定三角形。
在这个基础上,手指的起落点与圆心肯定会形成一个等腰三角形。你可以以圆心为坐标原点,我觉得好像不是很难算吧。注意,半径不是固定不变的,手指可以在靠近轮胎中轴的地方,也可以在靠近边缘的地方。
[/Quote]

呵呵 算法中
float x = -centerX;
float y = -centerY;就是轮胎的圆心了
bayougeng 2011-10-09
  • 打赏
  • 举报
回复
我觉得,手指的起点和落点,应该是围绕圆心的。也就是说,如果手指从(1,0)划到(0,0)是没有道理的。所以我觉得你不能直接拿两个点加圆心来确定三角形。
在这个基础上,手指的起落点与圆心肯定会形成一个等腰三角形。你可以以圆心为坐标原点,我觉得好像不是很难算吧。注意,半径不是固定不变的,手指可以在靠近轮胎中轴的地方,也可以在靠近边缘的地方。
wtc860104 2011-10-09
  • 打赏
  • 举报
回复
写错了,是sinA/2=L/2R
R是半径
wtc860104 2011-10-09
  • 打赏
  • 举报
回复
还有一种方法更好,就是只算出两个点之间的距离,其实就是弦的长度L,然后你的sin2A=L/2R
wtc860104 2011-10-09
  • 打赏
  • 举报
回复
你是用余弦定理做的吧
你首先应该把公式简化一下啊,你这样算误差很大的
b^2+c^2-a^2这个应该直接代入坐标计算
通过坐标参数直接算出cosA

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧