弹性粒子在斜面上弹跳

时间:2018-07-07 10:00:28

标签: c++ dev-c++

我正在尝试模拟在600x600窗口(graphics.h)上弹跳的弹性粒子

当它从地板或墙壁上弹起时,我已经处于工作状态,但是我无法使其在倾斜状态下正确弹起。

这是倾斜的条件:

if(y <= ((3.0/7.0)*x - 90.0/7.0)) //y = 3x/7 - 90/7 is the equation of the line
{
//by rotating the reference coordinates (the wedge becomes the new x axis)
//formula:
//x' = xcos(theta) - ysin(theta)
//y' = xsin(theta) + ycos(theta)

    Vx = (Vx*(cos(theta)) - (Vy*(sin(theta))));
    Vy = -(Vx*(sin(theta)) + (Vy*(cos(theta))));
}

附加说明:使用以下函数将x和y计算为笛卡尔坐标,并在计算后转换回像素值(Putpixel):

//convert to pixel value (scale of 6)
double conx(double x)
{
    return x * (600/100) + 50;
}

double cony(double y)
{
    return -y * (600/100) + 650;
}

Here is the output so far

1 个答案:

答案 0 :(得分:0)

我认为Vx被分配了一个新值。然后在下一行的Vy分配中使用它。应使用Vx的旧值。所以你需要vxtemp = vx;并在计算中使用vxtemp。