2012-08-31 3 views
0

특정 위치에 원이 그려져 있습니다. 속도를 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); 
} 

답변

1

귀하의 angleSpeed 수식이 잘못된 보인다는.

나는 그 시간에 내가 여행 한 거리가 무엇이라고 말함으로써 먼저 해결할 것입니다. 이미 알고있는 대답은 speed*deltaTime입니다. 이제 거리가 멀어지면 호 포럼라 (arclength = radius*angle)를 사용하여 각도를 계산할 수 있습니다. 그래서 angle = arclength/radius.

angle = speed*deltaTime/radius 

이 물론 라디안 될 것 얻기 위해이 두 가지를 넣습니다.

본질적으로 이것은 반경으로 나누지 않고 반경을 곱한 것입니다. 단위로 보면 반경으로 보았을 때이 점을 발견하는 데 도움이되었지만 프로그래밍 포럼에서는 다루지 않았습니다.

+0

아, 감사합니다 .- 오히려 단위를 포함 시켰어야합니다. –

관련 문제