簡體   English   中英

圓弧方程-了解速度?

[英]Circle Arc Equation - Understanding speed?

我在某個位置畫了一個圓。 我可以將速度設置為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的弧論壇來arclength = radius*angle 因此, angle = arclength/radius

將這兩個放在一起

angle = speed*deltaTime/radius

這當然會以弧度為單位。

從本質上講,這可以歸結為您乘以半徑而不是除以半徑的事實(以單位為單位進行查看將有助於發現這一點,但這不在編程論壇的討論范圍之內)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM