[英]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.