62,614
社区成员
发帖
与我相关
我的任务
分享
if (y > 300) {
v = -v;// 如果碰地面,则反弹,反弹就是速度反向
v = v - 10 * t;// 瞬时速度 v1=v0+at
}
package test;
import java.io.*;
public class BouncingBall implements Runnable {
public static void main(String[] args) {
Thread t = new Thread(new BouncingBall());
t.start();
}
@Override
public void run() {
int ball = 0;
int v = 0;// 初始速度
int y = 0;// 初始总坐标
int t = 1;// 单位时间
File f = new File("D:\\test1.txt");
OutputStream is=null;
try {
is = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
for (int i = 0;i<1000;i++) {
v = v + 10 * t;// 瞬时速度 v1=v0+at
y = y + v * t;// v*t就是单位时间的位移。y就是单位之间后纵坐标
if (y > 300) {
v = -v;// 如果碰地面,则反弹,反弹就是速度反向
}
try {
is.write("y,".getBytes());
is.write(Double.toString(y).getBytes());
is.write("\n".getBytes());
is.write("v,".getBytes());
is.write(Double.toString(v).getBytes());
is.write("\n".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
然后稍微处理了一下数据, 这是速度曲线,这样就很明显了吧
因为接触地面的时候并不是"恰好"300,而是300多一点,这样反方向的加速度就少了一个. 也算是离散产生的误差吧