4 ms·
Modeling a car suspension in Javascript, part 1
- mmcnickle 14y agoInteresting, it's little physics demos like this that started me programming. I went on to specialise in physics modelling as a result. I'd have lapped this stuff back as a teenager. I see this in a series, is there going to be an introduction to more advanced topics (n-body problems, non-naive integrators), or is it being aimed more at beginners?
- bkanber 14y agoI'm aiming for the series to have around 30 articles in it. It will include n-body problems, but the series won't just be on mechanics. We'll do heat transfer, electromagnetism, and other fun topics. Maybe even quantum mechanics and special relativity. We'll see how the readers respond to all that!
- mmcnickle 14y agoElectromagnetism will be tough without a good understanding of the physics first, I think. The quantum mechanics is surprising approachable though. Simulation of a quantum computer is a neat project, especially if written in a way to implement various quantum algorithms.
- bkanber 14y agoE&M has always been a tricky subject for physics students which is exactly why I want to tackle it! I'll have to figure out a clear and concise way to communicate the concepts to beginners, and while that'll definitely be challenging, it's not a challenge I'll shy away from easily. Bring it on, physics!
- sgaither 14y agoNeat! I hope physics classes today are getting more into using such web interactive modeling. Or, that the new wave of interactive books are leveraging this kind of ability.
- walrus 14y agoReminds me of http://worrydream.com/#!/SimulationAsAPracticalTool http://worrydream.com/#!/SimulationAsAPracticalTool
- lvh 14y agoWhen I was in high school, the teacher often used: http://www.walter-fendt.de/ph14e/ http://www.walter-fendt.de/ph14e/ Which are Java applets. Not quite as good as modern JS would be, but given the era they were written, they were pretty cool things.
- edtechdev 14y agoThere are a ton of excellent physics simulations here, too: http://phet.colorado.edu http://phet.colorado.edu Although they are also not done in javascript, but a mix of java and flash.
- dbaupp 14y agoAs a student, I enjoyed playing around with these: http://www.falstad.com/mathphysics.html http://www.falstad.com/mathphysics.html (All are Java applets.)
- agumonkey 14y agoRepeating myself a bit, but this article with embedded jsfiddle, Bret Victor (http://worrydream.com/ http://worrydream.com/), and ipython notebook work. The distance between communication/education and execution is getting smaller and smaller. Symbolically flipping the debugging coin on both of its side at the same time.
- vadman 14y agoThanks for this. Added to the "read-when-I-get-home" list.
- stephengillie 14y agoThis reminds me of a mechanical-modeling "computer" that Lee Iacocca described in his autobiography. Resistors were used as struts, capacitors as springs, etc. The magnetic force of the electricity represented the force of gravity as the modelled car traveled along the simulated road.
- bkanber 14y agoThere are direct parallels between mechanical systems, electrical circuits, and plumbing systems. Three totally different systems can be modeled by the same exact equations!
- compumike 14y agoYes -- exactly why electrical circuit simulation tools sometimes get used in non-electronics contexts. Here's a simulation of your spring-mass-dashpot system in CircuitLab (JS-based circuit simulator, which also works for some mechanical models like this): https://www.circuitlab.com/circuit/pr4n2d/physics-car-suspension-pt-1-spring-mass-damper/ https://www.circuitlab.com/circuit/pr4n2d/physics-car-suspen... We also have some combined electrical and thermal systems such as https://www.circuitlab.com/circuit/a4xaa6/sous-vide-combined-thermal-system-and-control-loops/ https://www.circuitlab.com/circuit/a4xaa6/sous-vide-combined... . Looking forward to the rest of your blog series!
- Too 14y agoblock.v += a * frameRate; block.x += block.v * frameRate; "If you use Euler then you are a bloody idiot" http://gafferongames.com/game-physics/integration-basics/ http://gafferongames.com/game-physics/integration-basics/ Based on own experience if you replace euler with RK4 you can multiply your timestep with 10x and still get more accurate results. Once you start adding constraints this is a must or your constraints will disassemble almost instantly with euler, while rk4 barely requires any after-adjustment to keep the constraints intact. http://gafferongames.com/game-physics/fix-your-timestep/ http://gafferongames.com/game-physics/fix-your-timestep/ would also be a nice improvement to the simulations.
- ajross 14y agoThat's about right, but note that both Euler and RK4[1] have the same kind of "whiplash" failure modes when faced with out of band inputs. So RK4 is good, and simple, and worth learning. But as you point out it's really just a performance improvement over naive Euler integration[2]. Basically, don't get hung up over pedantry here. Euler is extremely simple, trivially verifiable and works well in a large number of domains. Demanding everyone who wants to do a simple physics model crack open a textbook is, I think, missing the point. [1] Fourth order Runge-Kutta integration, a common and reasonably simple algorithm for numeric integration. See: http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods http://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods [2] Euler is the simplest possible integration algorithm most people learn in grade school, essentially: compute your derivatives, multiply by the timestep and add to the current value, and repeat. It falls down and produces wild output when the derivative*timestep product is not small in comparison with the current value.
- bkanber 14y agoThanks! This article and the other Physics in JS article mention that we're using Euler only because it's the easiest for a student to understand. The article also mentions that the next post will be dedicated to exploring the different integration solvers. My guess is that the original commenter just skimmed through the code without reading any of the prose ;)
- 14y ago