gpt4 book ai didi

C++ sin wave for pogo stick jumping公式

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:19 30 4
gpt4 key购买 nike

我需要创建一个可以在屏幕上以弧线形式跳跃的 Spring 高跷。我在想做到这一点的最好方法是将它移动到正弦波上。如果波浪的顶部是 1,地面是 0,波浪的底部是 -1,那么每次它达到 0 时,我都会重置值以再次启动正弦波。因此,它不会遵循典型的正弦波(0、1、0、-1、0 等),而是会变为 0、1、0、1、0 等。

不幸的是,我的数学非常糟糕,我已经尝试了几个小时来开发一个公式。目前我只是想制作一个正常的正弦波,其中上半部分模拟 Spring 高跷跳跃,似乎无法做到那么远。我最接近的是:

m_vel.x++;
float f = PI / 30 / 2;
m_vel.y = 200 * sin(f * m_vel.x);
m_vel.y = -m_vel.y;

我需要波浪非常窄,高点非常高。上面的公式在第一次迭代时开始是正确的,但随后波浪变得更宽并且高点和低点相互靠近。谁能帮助一个数学新手?

最佳答案

不确定你的数学,你的物理需要复习一下! pogo stick 是 projectile motion 的一个例子它的轨迹形成一个parabola ,由 quadratic equation 描述.

但是您应该坚持使用不正确的正弦模型:正弦波的“上半部分”(或正)部分从 0 到 pi 弧度。正弦仅代表 y 项(高度),您不应该在那里有 x 项,它只是确定每个点的水平步长。如果你有 200,那代表 pogo stick 将达到的最大高度:

height = max_height * sin( theta ) ;

其中 0 <= theta <= pi,并随时间递增。增量的大小将由前进速度或总跳跃距离决定。

theta_step = pi / jump_distance ;

因此当您达到 pi 弧度时,您将移动 jump_distance。在跳跃过程中,瞬时距离(因此图中的 x 值)将是:

 distance = jump_distance / theta ;

关于C++ sin wave for pogo stick jumping公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104841/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com