力学:弹跳球模拟程序
2012-3-29 ~ 2022-10-25
(5)
本程序根据物理原理模拟一个球自由落体并持续弹跳的效果,小球只受重力影响,忽略空气阻力,反弹时能量损耗 10%。
程序源代码如下:
////////////////////////////////////////////////////////////////////
// 程序名称:物理反弹球模拟程序
// 编译环境:VC6.0 / 2019,EasyX_20220901
// 作 者:yw80@qq.com
// 最后修改:2012-3-29
//
#include <graphics.h>
#include <conio.h>
int main()
{
double h = 300; // 高度
double v = 0; // 速度(方向向下)
double dv = 9.8 / 50; // 加速度(每 1/50 秒)
// 初始化绘图窗口
initgraph(640, 480);
BeginBatchDraw();
// 画地平线
line(100, 421, 540, 421);
while(!_kbhit())
{
v += dv; // 根据加速度计算速度
h -= v; // 计算高度
// 如果高度低于地平线,实现反弹,速度方向取反
if (h <= 0)
{
h = -h;
v = - v * 0.9; // 反弹时能量损耗 10%
}
// 画绿色球
setlinecolor(GREEN);
circle(320, 400 - int(h), 20);
FlushBatchDraw();
Sleep(20); // 延时(每帧延时 1/50 秒)
// 擦掉球
setlinecolor(BLACK);
circle(320, 400 - int(h), 20);
}
// 关闭绘图窗口
EndBatchDraw();
closegraph();
return 0;
}