求一个fortran关于小球碰撞的程序

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:59:42
十个同样大小的刚性小球,在一个盒子中互相碰撞运动。初始位置和速度都是随机的,要求输出每次碰撞之后十个球的位置和速度,并且用VC的图像功能显示在屏幕上。
老板要求用fortran编写,我主要是一直找不到产生随机数的那个函数,还有怎样利用fortran输出的一系列位置坐标将小球显示在屏幕上

我以前做过这个程序最近也改写了代码,但还是有点乱,而且也没太好的实现(主要是误差的问题).
算法代码:
#define MY_FLOAT double

#include <math.h>

#define M_PI (MY_FLOAT)3.14159265358979323846
#define M_PI_2 (MY_FLOAT)1.57079632679489661923
//pi + pi/2
#define M_PI_PI_2 (MY_FLOAT)4.71238898038468985769
//pi*2
#define M_PI_M2 (MY_FLOAT)6.28318530717958647692
//min
#define M_F_MIN (MY_FLOAT)0.00001
//等于
#define M_EQUAL(a, b) (abs(a-b) < M_F_MIN)
//不等于
#define M_UNEQUAL(a, b) (abs(a-b) > M_F_MIN)

//================================================================
// 函数名称:GetAngle
// 功能 :获得矢量与Y轴的夹角
// 返回值 :返回矢量与Y轴的夹角(弧度)(顺时针)(三四象限为负)( -M_PI - M_PI )
// 参数说明:矢量的X和Y坐标
//================================================================
MY_FLOAT GetAngle(MY_FLOAT fx,MY_FLOAT fy)
{
return atan2( fx , fy );
}

//===========================================