一、基本思路
1.假设小球在空中只受到重力作用,一开始给它一个水平的速度,就像是平抛运动一样;
2.当小球碰到地面时,受到摩擦力作用,分为x方向和y方向;
3.在摩擦力作用下,1.减少水平方向的速度,2减少y方向的速度,并把Vy取负,实现触底反弹的效果;
4.反弹过程Vy在重力作用下不断减小,Vx不变,直到Vy=0到达最高点,然后Vy在重力下为正,开始下落,因为Vy在摩擦力
作用下减小了,所以这次反弹高度比第一次低,同样,Vx也在摩擦力作用下减小了,水平方向上移动的距离也变小了;
5.反复重复过程4,直到全为0;
二、效果
三、代码如下
#include "stdafx.h"
#include <stdio.h>
HINSTANCE hInst;
HBITMAP bg,ball;
HDC hdc,mdc,bufdc;
HWND hWnd;
DWORD tPre,tNow,tCheck;
RECT rect;
int x=0,y=100,vx=8,vy=0;
int gy=1,fx=-1,fy=-4;//fx表示摩擦力在x方向的负向加速度;fy表示摩擦力在y方向的负向加速的
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM