如何在代码中使用正弦定律
问题描述:
我有一个问题涉及基于对角线计算速度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));
答
您正在使用atan2
错误。调用约定是一个用于反正切后蓝本,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)
答
你不需要正弦定理。因为在正常的坐标系中的X和Y尺寸被定义垂直你可以使用:
X = A*Cos(a) where a is the angle and A is the hypotenuse
Y = A*Sin(a)
这是来自一个Right Triangle
的属性。
+0
问题是:“X”和“Y”已知。我真的不知道OP想要什么。 –
正弦值≤1。_B_的长度≤_A的长度。很显然'B = A * sin(a)'和'C = A * sin(c)';注意到_c =90º - a_,也是'C = A * cos(a)'。 – 9000
@ 9000:在“清楚”之后编写公式后,您应该非常小心。 –
您需要更好地定义您的问题,因为目前尚不清楚。请只说明输入是什么,以及预期的输出是什么。没有Java代码,没有正弦规律,......现在,你从'x,y'坐标计算一个角度,并且你尝试从相应的角度计算这些坐标。 –