我有一个关于根据对角线计算速度x和y的问题。三角形检查以下图纸
在这种情况下,我知道每个角落的所有角度,我知道它总是600.
我已经开始搜索并遇到了正弦定律,我想我应该使用它,但我无法弄清楚如何在Java中使用它。
非常感谢任何帮助。
这是我到目前为止所得到的
Vector2 pos = mBall.getPosition();
double angleA = Math.atan2(target.x - pos.x, target.y - pos.y) * 180.0d / Math.PI;
double angleB = 90.0f;
double angleC = 180f - (angleA + angleB);
double sideA = MAXIMUM_VELOCITY;
double lawofsines = sideA / Math.sin(Math.toRadians(angleA));
答案 0 :(得分:1)
您使用atan2
错误。调用约定以arcus正切的一个为模型,atan(dy/dx)
为
atan2(dy, dx)
但是从代码中可以看出,你不需要计算天使,因为目标的单位方向就足够了,
dx = target.x-pos.x
dy = target.y-pos.y
ds = Math.hypot(dx,dy)
vel.x = MAXIMUM_VELOCITY * (dx/ds)
vel.y = MAXIMUM_VELOCITY * (dy/ds)
答案 1 :(得分:0)
你不需要正弦法则。因为在普通坐标系中,X和Y尺寸根据定义是垂直的,所以您可以使用:
X = A*Cos(a) where a is the angle and A is the hypotenuse
Y = A*Sin(a)
这来自Right Triangle
。