Fysikmotor demo III

Arbetet med mekanik-simuleringsprogrammet har fortsatt oförtrutet, och kantats av både framsteg och bakslag (sedvanlig varning för tech-talk):

  • Implementerat en closest-point projection position correction-algoritm. Vad den gör är i princip att sära på två penetrerande kroppar. Fungerar bra på lokal nivå, dvs för två givna kroppar, men sämre på global nivå (kroppar som flyttas kan ge upphov till sekundära kollisioner, se nästa punkt)
  • Implementerat en stel, iterativ algoritm för global positionskorrigering. Fungerade rent implementationsmässigt men löste inte alls det tänkta problemet. Tar med mig insikten och tittar på nya lösningar, troligtvis baserade på kraft eller impuls istället för position.
  • Simulering av dynamisk Coulomb-friktion. Det vill säga friktion mellan kroppar som rör sig (glider) relativt varandra. Tanken är att även ha med statisk friktion, vilket i teorin ser till att kroppar förblir i relativ vila tills inverkande krafter når ett visst tröskelvärde (det krävs en viss kraft för att en stillaliggande kropp ska börja glida).
  • Fjädrar och dämpare. Fjädrar utövar en kraft som beror på avstånd, dämpare utövar en kraft som beror på hastighet. Kombinationer kallas fjäderdämpare (bilden). Kopplingen som muspekaren har med kropparna i simuleringen är av denna typ. Fjäderdämpare beskrivs av 2:a ordningens differentialekvationer (ekvationen) vilka min nuvarande (explicita) integrator egentligen inte klarar av att lösa stabilt, men jag använder koefficienter som ligger nära kritisk dämpning så det ser ändå hyfsat kontrollerat ut.


Single-pass position correction by closest point projection.
Dyanamic friction 0.1, coeff. of restitution 0.5

[Videon är borttagen, fler finns här]

~ av Calvin den oktober 10, 2008.

2 svar to “Fysikmotor demo III”

  1. Fantastiskt, alltid önskat att jag
    kunde programmera fysik, detta är
    över min nivå med hästlängder, så
    det är imponerande istället… :)

  2. Det roliga är att de grundläggande ekvationerna är enkla, men de får liksom ”liv” när man simulerar dem över tiden. Sedan är det ju alltid en utmaning att efterlikna verkligheten, för vi vet hur den ska se ut och märker minsta lilla avvikelse direkt…
    Tack för kommentaren!

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Ansluter till %s

 
Följ

Få meddelanden om nya inlägg via e-post.