《游戏开发的数学与物理》
1.抛物线公式 是由微积分推导出来的,将无限小的时间内行进的距离都加起来。因为正常情况下某一段时间内的速度是不一样的,所以直接使用计算会产生误差。
2.计算随机数公式,得到的是0~n之间的随机数,包含浮点数值。
而 % (n + 1) 虽然也是0~n之间的随机数,不过结果是整型值。
不过以上两个公式都是均匀随机数,如果想时间正太分布的随机数需要用到Box-Muller算法,如下所示:
fRand_r = sqrtf( -2.0f * logf( ( float )( rand() + 1 ) / ( RAND_MAX + 1 ) ) ); // √-2ln(a)
fRand_t = 2.0f * PI * ( float )rand() / RAND_MAX; // 2πb
Balls[i].vx = ( fRand_r * cosf( fRand_t ) ) * VEL_WIDTH; // 随机设置Vx的初始值
Balls[i].vy = ( fRand_r * sinf( fRand_t ) ) * VEL_HEIGHT - BASE_VEL; // 随机设置Vy的初始值