java - 圆弧方程 - 了解速度?

标签 java math opengl

我在某个位置绘制了一个圆圈。我可以将速度设置为 10f 来很好地移动它,但是当它开始旋转时,它会变得非常快。它显然没有以(单位/秒)移动,我不确定发生了什么。我认为 archSpeed 需要以弧度或其他形式表示,这会减慢速度 - 但仍然不正确。 这是我所依据的圆弧方程:

s = r * theta

以下是我正在使用的功能:

private void moveOut(double deltaTime)
{
    SetPosition(x += direction * speed * deltaTime, y, 0);

    if (x - (direction * GetWidth() / 2f) >= centerX + radius + GetWidth() / 2f)
    {
        //onOutside = true;
    }

    Log.d(TAG, "moving out");
}

private void circleCenter(double deltaTime)
{
    float angleSpeed = (float) (radius * (speed * Math.PI / 180) * deltaTime);
    currentAngle += angleSpeed;

    if (currentAngle >= 2 * Math.PI)
    {
        currentAngle = (float) (2 * Math.PI - currentAngle);
    }

    SetPosition(centerX + radius * FloatMath.cos(currentAngle), centerY + radius * FloatMath.sin(currentAngle), 0);
}

最佳答案

您的angleSpeed公式看起来有误。

我首先会说“我当时行驶的距离是多少”来算出来。你已经知道的答案是 speed*deltaTime 。现在你有了一个距离,你可以使用弧度论坛来计算角度,上面写着 arclength = radius*angle 。所以angle = arclength/radius .

将两者放在一起得到

angle = speed*deltaTime/radius

当然,这将以弧度为单位。

本质上,这可以归结为您乘以半径而不是除以它(以单位的形式查看它会有助于发现这一点,但这超出了编程论坛的范围)。

关于java - 圆弧方程 - 了解速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12217168/

相关文章:

java - 如何使用现有集合 mongodb 中的计算数据创建新集合

python - 如何在Python中使用Round-towards-Infinity实现除法

algorithm - 排列一个数组,使 2 个数字的平均值不在它们之间

c# - 如何通过具有容差因子的数值对对象进行 GroupBy?

c++ - 将 float 组传递给函数

java - GLSL 着色器无法在 Mac 上运行

java - Android中偏好和共享偏好之间的区别

java - 从 url 中提取特定字段

java - 将 JOptionPane 与 Xtend 结合使用

linux - 如何从我的 Windows 机器上运行安装在 Linux 机器上的 OpenGL 应用程序?