Jaka jest różnica między impulsem a siłą związaną z silnikiem fizyki?

25

Jaka jest różnica między przyłożeniem impulsu a przyłożeniem siły w stosunku do silnika fizyki?

Casey
źródło

Odpowiedzi:

25

Impuls jest przykładany natychmiast, więc nie zależy od kroku czasowego. Przydałbyś się impulsowi, gdy chcesz nadać czemuś stałą prędkość lub działanie fizyczne dzieje się zbyt szybko (np. Pociski / rykoszet, kolizje, skoki, natychmiastowe przyspieszenie).

Tymczasem siła zmienia prędkość bezpośrednio proporcjonalnie do kroku czasowego. Używasz go do rzeczy, które mają efekt upływu czasu (np. Grawitacja, długie sprężyny, opór powietrza).

Matematycznie impulse = force * time; A dla odniesienia impulse = mass * velocity_change, force = mass * acceleration.

Jeśli rozwiniesz pierwszy, możesz to sprawdzić:

  • impulse = force * time ->
  • impulse = mass * acceleration * timea ponieważ acceleration * time = velocity_change->
  • impulse = mass * velocity_change.
csiz
źródło
1
Ponieważ impulse = force * timeimpuls jest również zależny od czasu (przynajmniej jeśli użyjesz sił, aby uzyskać wielkość impulsu). Rzeczywiście, pęd lub impuls jest użyteczny do zastosowania natychmiastowych dramatycznych zmian. Najpopularniejszy przykład pochodzi z praw zachowania pędu i energii: physics.ohio-state.edu/~gan/teaching/spring99/C10.pdf .
teodron
Podobnie jest z implementacją Jeff Lakepoprzez Game Coding Complete 3rd Ed. Chapter 15: Collision and Simple Physicsniepoprawne: (parafrazowanie)Start with a Vector3d (or 2d depending) of forces F, Accumulate all Forces applied in a list, Accumulate All Impulses in a list add both totals to Forces, empty Impulses list, Accel = F / mass, Vel += Accel * deltaTime, Pos = Vel * time.
Casey
@Casey: tak to robię. W moim symulatorze nie mogę użyć sztywnego korpusu, w którym zderzają się dwa ciała i wszystko działa bezpośrednio. Zgodnie z newtonowskim sposobem całkowania przyspieszenia w celu znalezienia prędkości, a następnie pozycji. Moi impulsy pochodzą z siłą odpychania (siła reakcji / Reakcja jest synonimem w moim rozumieniu) i = F_response * DTime. Możesz iść na dwa sposoby: użyj iimpulsu, aby skorygować prędkości po zderzeniu lub użyj bezpośrednio siły reakcji. Jeśli otrzymasz impuls z innego miejsca, możesz go przekonwertować na F_responsei działa OK.
teodron
@teodron Dzięki, rodzi to osobne pytanie, które zadam ... osobno. : P
Casey