(c ++)计算拦截围绕中心点轨道运行的物体

时间:2017-02-07 05:26:38

标签: c++

我一直致力于模拟射弹发射器,将射弹射向围绕中心点旋转的目标。如果有人帮我解释我的计算错误,我很感激。 (用户从中心到物体的输入半径,中心和物体的角度,目标的速度,射弹的速度)

这是我的计算功能的一部分。

void::targetMove()
{double theta = 360;
theta = theta - angle;
PosX = (radius*cos(theta));
PosY = (radius*sin(theta));
angle = angle*timeStep;
return;}

这是我的main.cpp的一部分

target tar;
projectile pro;
double spd, spd2, timeStep = 0, radius, ang;
launcher lau;
bool miss = true;
do
{
pro.distanceCal();
timeStep++;
tar.setTimeStep(timeStep);
cout<<"\n*TIME STEP "<<timeStep<<"*"<<endl<<"------------"<<endl;
tar.display();
if (abs((spd2*timeStep)/2 - pro.distanceCal()) <= 1)
{cout<<"\nThe projectile hits the target."<<endl<<endl;
miss = false;}
else
{ miss = true;}
while (miss);

这是我的距离计算功能

double projectile::distanceCal()
{ distance = sqrt(pow(tar.getPosX()-tar.getCenterX(),2)+pow(tar.getPosY()-tar.getCenterY(),2));
return distance;}

我的问题是它看起来像轨道运动目标没有以圆周运动方式运动。我不停地将奇怪的数字作为目标新位置的输出。

提前感谢你的善意。

这些都是完成所有计算的函数。其余的只是获取/设置功能。<​​/ p>

0 个答案:

没有答案