当前位置:编程学习 > JAVA >>

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

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


通过手指放下和拿起来的时候我计算出了角度,可是这还远远不够:
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;
}
求解  谢谢  不甚感激 --------------------编程问答-------------------- 你是用余弦定理做的吧
你首先应该把公式简化一下啊,你这样算误差很大的
b^2+c^2-a^2这个应该直接代入坐标计算
通过坐标参数直接算出cosA --------------------编程问答-------------------- 还有一种方法更好,就是只算出两个点之间的距离,其实就是弦的长度L,然后你的sin2A=L/2R --------------------编程问答-------------------- 写错了,是sinA/2=L/2R
R是半径 --------------------编程问答-------------------- 我觉得,手指的起点和落点,应该是围绕圆心的。也就是说,如果手指从(1,0)划到(0,0)是没有道理的。所以我觉得你不能直接拿两个点加圆心来确定三角形。
在这个基础上,手指的起落点与圆心肯定会形成一个等腰三角形。你可以以圆心为坐标原点,我觉得好像不是很难算吧。注意,半径不是固定不变的,手指可以在靠近轮胎中轴的地方,也可以在靠近边缘的地方。 --------------------编程问答--------------------
引用 4 楼 bayougeng 的回复:
我觉得,手指的起点和落点,应该是围绕圆心的。也就是说,如果手指从(1,0)划到(0,0)是没有道理的。所以我觉得你不能直接拿两个点加圆心来确定三角形。
在这个基础上,手指的起落点与圆心肯定会形成一个等腰三角形。你可以以圆心为坐标原点,我觉得好像不是很难算吧。注意,半径不是固定不变的,手指可以在靠近轮胎中轴的地方,也可以在靠近边缘的地方。


呵呵 算法中
float x = -centerX;
float y = -centerY;就是轮胎的圆心了
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,