我正在研究Java的一个项目,该项目描述了驾驶给定距离的汽车。函数驱动器具有三个参数:一个用于行进的距离,一个用于x比,一个用于y比。这是功能的描述
这是迄今为止我对驱动器功能所拥有的。我有c变量,因为我想到了使用毕达哥拉斯的therom,但我不确定从那里去哪里。
public double drive(int distance, double xRatio, double yRatio)
{
double disTraveled = 0.00;
boolean empty = false;
double c = 0.00;
c = Math.sqrt((xRatio * xRatio) + (yRatio * yRatio));
for( int i = 0; i < distance && empty == false; i++ )
{
if( gasTank.getLevel() == 0 )
{
System.out.printf("Ran out gas after driving %.2f milesn", disTraveled);
empty = true;
}
else
{
/*xCoord += xRatio;
yCoord += yRatio;
gasTank.setLevel(gasTank.getLevel() - (1.00 / engine.getMpg()));
disTraveled ++;*/
}
}
return disTraveled;
}
我在需要使用的算法上遇到麻烦,以找到最终的坐标。我能找到什么终点?
步骤1
写下您的已知数量。这应该包括您的角度,距离和参考坐标。例如:
Angle: 37 degrees Distance: 27 feet Starting point: x0 = 3; y0 = 5
步骤2
计算角度的余弦并乘以距离。
cos(37) = 0.7986 27 * 0.7986 = 21.563
步骤3
计算角度的正弦并乘以距离。
sin(37) = 0.6018 27 * 0.6018 = 16.249
步骤4
将余弦结果从起点添加到x坐标中,并将正弦结果添加到y坐标中以获取第二点的坐标。
x1 = x0 + 21.563 = 3 + 21.563 = 24.563
y1 = y0 + 16.249 = 5 + 16.249 = 21.249
注意
从X/y坐标中计算角度。
将其写成Java代码不应该太难。看一下java.math