2010-08-03 5 views
1

이것은 순수한 물리학적인 질문이지만, 왜 작동하지 않는지는 모르겠다. 나는 움직이는 물체가있다. 나는 값을 얻는다. vcos (theta)와 vsin (theta)의 ... 이것으로부터 저는 운동의 속도와 각을 계산합니다 ..... 또한 또 다른 점 (x, y)을 알고이 점으로 객체를 향하고 싶습니다. 내가 포인트를 향해 객체를 지시하는 특정 힘 (힘은 X와 Y 축 값을 가져야 만한다.)을 적용 할 필요가있다. 그래서 나는 단지 필요한 힘의 양을 얻기 위해 공식을 따라야한다.움직이는 물체의 방향을 바꾸십시오 .... (순수한 물리 질문)

fX = V2cos (theta2) -V1cos (theta1) fY = V2sin (theta2) -V1sin (theta1)

그는 syntex가 주어진다 (나는 그 사람들이 객관적인 C를 안다는 것에 대해) ......... 내 방정식이 작동하지 않는다 ..... 아무도 도와 줄 수있다 ......

if (acceleration.x>1.5 || acceleration.y>1.5) { 

      shakeCounter++; 
      [_label setString:[NSString stringWithFormat:@"%d",shakeCounter]]; 


     //get the velocity of moving object....................... 
     b2Vec2 mVelik = ballBody->GetLinearVelocityFromLocalPoint(localPoint); 


     float angleOfCurrentDirectionOfMotion; 
     float angleOfDesiredDirectionOfMotion; 
     //calculate first velocity 
     float V1=sqrt(pow(mVelik.x, 2)+pow(mVelik.y, 2)); 
     //calculate second velocity 
     float V2=V1+factor; 
     //calculate current angle 
     angleOfCurrentDirectionOfMotion=atan(mVelik.y/mVelik.x); 
     //calculate desired angle 
     angleOfDesiredDirectionOfMotion=atan(acceleration.y/acceleration.x); 
///calculate FX and FY 
     float X=V2*cos(angleOfDesiredDirectionOfMotion)-V1*cos(angleOfCurrentDirectionOfMotion); 
     float Y=V2*sin(angleOfDesiredDirectionOfMotion)-V1*sin(angleOfCurrentDirectionOfMotion); 

     b2Vec2 force = b2Vec2(X,Y); 

///apply Force to change direction.... 
     ballBody->ApplyForce(force, ballBody->GetPosition()); 

} 
+0

(x, y)에 고정 된 스프링이나 (x, y)를 통과하여 이동하는 것처럼 개체를 이동 하시겠습니까? –

+0

'인자'란 무엇이며, 'V2'는 무엇을 나타 냅니까? –

+0

@Cantos : 아니요 .... 속도를 높이기 위해 V2를 높이고 싶습니다. – Rony

답변

1

실험 할 box2d가 없지만 정상적으로 작동한다고 가정합니다.

개체의 질량을 무시할 수 없습니다. 질량이 클수록 힘의 영향은 적습니다.

X와 Y의 계산이 정확합니다 (지나치게 복잡 함). 당신은 대량의 중심에 적용되는 충격 와 움직임을 변경할 수 있습니다 ::

b2Vec2 impulse = b2Vec2(X,Y) * ballBody->GetMass() ; 
ballBody->ApplyLinearImpulse(impulse, ballBody->GetLocalCenter()); 

당신이 정말로 힘이 아닌 충동을 사용하려는 경우, 솔루션의 범위가있다. 일반적으로 힘의 크기를 먼저 선택한 다음 방향을 계산하거나 다른 방향으로 계산할 수 있습니다. 방정식 (그리고 아마도 코드)을 줄 수는 있지만 기본 물리학에 대한 이해가 없으면 의미가 없습니다.

EDIT :
좋아, 한 차원의 운동 방정식은 X = X 0 + V 0t의 + 가정 WLOG 있도록 2/2에서 X = 1을 목표점 방향으로하고, 시간 (볼의 x가 목표점의 x와 같은 시간)을 구하십시오. 그 시간을 y의 방정식에 넣고 y을 풀면 끝났습니다.

+0

나는 물리학에 대한 기본적인 지식을 가지고 있습니다.) ....하지만 많은 것을 연구 했으므로 며칠 전 모든 것을 기억할 수 없다 ..... ..... 방정식을 제공 할 수 있습니다 ... plz – Rony