gpt4 book ai didi

c++ - 在动画 Opengl c/c++ 方面需要帮助

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:19 24 4
gpt4 key购买 nike

当一个点到达底部时,我试图将它弹起。不幸的是,它一直在下降。这是代码:

void Timer(int value) {
if (value) {
if(initMpoints[1][1] <= 500 && initMpoints[0][1] >= 0) {
txForC -= 0;
tyForC -= 5; //Move C downward.
txForM -= 0;
tyForM -= 5;
if (initMpoints[0][1] == 0) {
txForC += 0;
tyForC += 5; //Move C downward.
txForM += 0;
tyForM += 5;
}
}

}
glutPostRedisplay();
glutTimerFunc(50, Timer, value);
}

我该如何解决这个问题?

最佳答案

可以通过使用 abs(sin(x)) 函数来完成很好且更自然的弹跳氨基化示例。

enter image description here

在您的情况下,我将像这样重写您的函数。

// Speed of bouncing
float fSpeed = 0.01f;
float fPI = 3.1415926f;

// Height of bouncing
float fHeight = 100.0f;

void Timer(int iValue)
{
static float fAngle = 0.0;

// if animation enabled
if (iValue)
{
tyForC = fHeight * abs(sin(fAngle));
tyForM = fHeight * abs(sin(fAngle));

// Go to next position
fAngle += fSpeed;
}

// Restore previous value to avoid bitgrid overflow
if (fAngle >= (4.0f * fPI - fSpeed / 2.0))
{
fAngle = 0.0f;
}

glutPostRedisplay();
glutTimerFunc(50, Timer, iValue);
}

在你的情况下,对于像动画这样的 dentry ,代码将是这样的

float fHeight = 100.0f;

void Timer(int iValue)
{
static float deltaC = 5.0f;
static float deltaM = 5.0f;

if (iValue)
{
tyForC += deltaC;
tyForM += deltaM;

if (tyForC <= 0 || tyForC >= fHeight)
deltaC *= -1.0f;

if (tyForM <= 0 || tyForM >= fHeight)
deltaM *= -1.0f;
}

glutPostRedisplay();
glutTimerFunc(50, Timer, iValue);
}

关于c++ - 在动画 Opengl c/c++ 方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683741/

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