我做了碰撞方程式 (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。有人知道为什么?这是正确的(我做了六次)?
答案 0 :(得分:4)
在这些情况下,你可能会将零除零。
我建议将您的作业分解为一步一步,并随时检查该值。
答案 1 :(得分:0)
你可能做错了。但是,这很难说,因为你显然无法告诉我们你想要做什么。哦,如果你做错了,如果你做错了六次仍然是错的。我发现,做到一次是迄今为止最好的方法。
答案 2 :(得分:0)
使用Mathematica(我很懒)我得到:
如果coldw colh = coldh colw,或coldh / coldw = colh / colw,即当两个斜率相等时(换句话说,当两条线平行时),这应该给你一个除以零。