帮助碰撞方程

时间:2011-06-21 20:27:33

标签: c++ math

我做了碰撞方程式 (col和cold是行 - > x和 - > y是起点,h()和w()是高度和宽度)。 o& z未知。

    col->x+(col->w())*o=cold->x+(cold->w())*z;
     col->y+(col->h())*o=cold->y+(cold->h())*z;

我解决了它:

z=(cold->y-col->y-col->h()/col->w()* (cold->x-col->x))/(col->h()/col->w()*cold->w() - cold->h());
o=(cold->x+cold->w()*z-col->x)/col->w();

它运作良好(?不确定),但如果其中一条线是垂直的或水平的,我到处都是NaN。有人知道为什么?这是正确的(我做了六次)?

3 个答案:

答案 0 :(得分:4)

在这些情况下,你可能会将零除零。

我建议将您的作业分解为一步一步,并随时检查该值。

答案 1 :(得分:0)

你可能做错了。但是,这很难说,因为你显然无法告诉我们你想要做什么。哦,如果你做错了,如果你做错了六次仍然是错的。我发现,做到一次是迄今为止最好的方法。

答案 2 :(得分:0)

使用Mathematica(我很懒)我得到:

enter image description here

如果coldw colh = coldh colw,或coldh / coldw = colh / colw,即当两个斜率相等时(换句话说,当两条线平行时),这应该给你一个除以零。