怎么用c语言编一个简单弹球问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 14:53:22
用x,y,z定义一个三维空间,x0,y0,z0代表初始球的三维,当这个球以vx,vy,yz的速度前进,然后撞到一个边的时候,产生了另一个点(x1,y1,z1 坐标),从x0,y0,z0到x1,y1,z1之前的距离是L0,然后x1y1z1这个点继续运行又撞到另一边的时候产生第二个点(x2,y2,z2)。n代表撞到边框的次数,编个程序求出每次撞到边时产生的点的三维坐标(例 x1,y1,z1),和每次2点之间的距离(例 L0)。n=10次
不需要出图像,出数据就行,x,y,z,vx,vy,vz,x0,y0,z0,n都是可以输入的数据。

/*Ball.h:定义结构体和BALL相关的函数*/

#ifndef _BALL_VC_SUPER_ADMI_2009_12_13_INCLUDE_
#define _BALL_VC_SUPER_ADMI_2009_12_13_INCLUDE_

typedef struct tagPOINT3D //3D坐标系
{
float x;
float y;
float z;
}POINT3D;

typedef struct tagBALL //球
{
POINT3D cur_coor;
POINT3D speed;
float radius;
}BALL;

typedef struct tagBOX //球的长方体运动场所,中空
{
POINT3D angle_coor[8]; //坐标,从下往上,顺时针
float length;
float width;
float height;
}BOX;

void init_box(BOX *mybox,POINT3D origi_coor,POINT3D LWH)
{
int i;

mybox->height=LWH.x;
mybox->width=LWH.y;
mybox->height=LWH.z;

for(i=0;i<8;i++)mybox->angle_coor[i]=origi_coor;

mybox->angle_coor[1].x=origi_coor.x+LWH.x;
mybox->angle_coor[2].x=origi_coor.x+LWH.x;
mybox->angle_coor[2].y=origi_coor.y+LWH.y;
mybox->angle_coor[