c++ - 自由落体问题

标签 c++ physics

好的,我会尽力解释我的问题。我有这个程序,您可以在其中选择 5 个球。当您选择一个时,您可以在按下鼠标按钮并且光标位于球的半径内时拖动它。

问题是我需要一种方法让球在用户停止按下鼠标按钮时上升,就像他让球漂浮在空中然后让它再次落下一样。我有一种方法可以知道时间、速度和加速度,但我不知道如何实现它。

现在我有这个:

void Circle::Fall(float velocity,float time)
{    
    if(this->posY >= 580)
    {
        this->posY = 580;
        this->vfall= 0.0f;
    }
    else if(this->posY < 580)
    {
        //this->distance=9.81f * 0.5f*time*time;
        this->vfall+= velocity;
        this->posY += this->vfall;
    } 
}

这样一来,它就掉下来了,我无法达到我试图解释的效果。

此外,我正在这样计算时间(以防万一):

difX=(x> event.motion.xrel)? x-event.motion.xrel : event.motion.xrel-x;
difY=(y> event.motion.yrel)? y-event.motion.yrel : event.motion.yrel-y;

我使用 difY 作为时间变量


好的,对不起,我现在把它变成英文了。我将尝试使它更容易理解:

你需要让小球在松开点击的那一刻随着鼠标的速度漂浮的更久一点,就像一只手在受到冲动后将球抛向空中一样。它不必掉头或在 Y 上稍微上升一点。我正在使用 SDL,以防你需要知道

您还可以从窗口底部取出球,当您松开它们时,它们会自动返回

最佳答案

我想你想要这本书:Physics for Game Developers .

关于c++ - 自由落体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706920/

相关文章:

iPhone射击游戏子弹物理!

animation - 动画系统的神经网络大小

c++ - 如何解决 std::get<>() 缺乏并发规范的问题

c++ - 您如何构建示例 CUDA Thrust 设备排序?

c++ - 如何保持无法访问的代码?

c++ - 无法调用模板构造函数

c++ - 类中的字符串没有命名类型

c++ - 如何在 mac os x 上从通过 USB 连接的多轨混音器获取输入

xcode - 我有两个物体,当碰撞时我想互相反弹,我怎样才能做到这一点,这样它就不会感觉到碰撞?

物理硬件的数据库设计