[HN Gopher] Interactive Double Pendulum Playground
___________________________________________________________________
Interactive Double Pendulum Playground
Author : melector
Score : 63 points
Date : 2025-10-08 05:18 UTC (2 days ago)
(HTM) web link (theabbie.github.io)
(TXT) w3m dump (theabbie.github.io)
| Evidlo wrote:
| Anyone else feel like the pendulum motion seems off? Maybe the
| default mass settings are weird, but the movement just does not
| look physical to me.
| navtoj wrote:
| There's a "How To Use?" section on the GitHub repo page.
|
| https://github.com/theabbie/DoublePendulum?tab=readme-ov-fil...
| WithinReason wrote:
| Yes I think the physics is wrong
| kookybakker wrote:
| When you bring up the lower mass and let it go, it seems to
| push the upper mass away, which should never happen. This
| whole site smells off vibe coded jank.
| probabletrain wrote:
| > This whole site smells off vibe coded jank.
|
| A vibe-coded double pendulum sim should produce a much
| better result than the physics on this page. Claude Code
| made this just now off one prompt, the physics are much
| better: https://keir.is/swinging
| Evidlo wrote:
| I don't think that's fair. Also the project is 4 years old
| so the timeline doesn't really work out for being vibe-
| coded.
| mihau wrote:
| Yep, it's just bad. Physics feels totally off.
| magicalhippo wrote:
| It's way off. My first guess was that there was something wrong
| with the physics code, but after carefully checking against
| this[1] derivation of the Hamiltonian it seemed fine, and once
| I wrapped my head around the JavaScript the RK4 integration[2]
| checked out as well.
|
| So, what else might be wrong I wondered. Well, it seems to move
| in the wrong direction... so I checked how the pendulum is
| displayed. And sure enough, I think there's a sign error:
| getUpperBob() { const { x0, y0, ang0, l0 } = this;
| const { x, y } = this.calculateBobPosition(x0, y0, ang0, l0);
| return { x, y }; } getLowerBob() {
| const upperBobPos = this.getUpperBob(); const { ang1,
| l1 } = this; const { x, y } =
| this.calculateBobPosition( upperBobPos.x,
| upperBobPos.y, -ang1, l1 );
| return { x, y }; }
|
| Note how the upper bob uses ang0 while the lower one has -ang1.
| Meanwhile the physics derivation assumes both angles are
| against the vertical, so have same sign.
|
| Changing -ang1 to ang1 does indeed make the pendulum move in a
| natural way, except now dragging it is flipped. Ie you drag it
| left and it moves right. Another sign error in setLowerBobPos.
| Fixing that as well it now works as I'd expect.
|
| [1]: https://dassencio.org/46
|
| [2]:
| https://lpsa.swarthmore.edu/NumInt/NumIntFourth.html##sectio...
| Evidlo wrote:
| Just made a PR
| magicalhippo wrote:
| I considered it, but had to go to work and I figured since
| the last commit was over 4 years ago it might just sit
| there idly, so I skipped it.
|
| But no, PR was merged in short order. Lesson learned.
| cabirum wrote:
| Hn shows this story is 3 hours old, yet your GitHub PR was
| made 2 days ago, linking here?
| pansa2 wrote:
| The story has been reposted to HN via the "second-chance
| pool", which resets the dates.
|
| https://news.ycombinator.com/item?id=26998308
| isoprophlex wrote:
| This is hilariously bad.
|
| If you want to see what a real physically sensible double
| pendulum sim looks like:
|
| https://www.myphysicslab.com/pendulum/double-pendulum-en.htm...
| gus_massa wrote:
| I don't see the difference. The motion in the version you
| linked is slower but I guess it can be fixed changing g. What
| are the visible errors in the main post?
|
| EDIT: I just noticed someone found an error and apparently it's
| fixed now.
| greenbit wrote:
| Could use a way to set some friction
| japhyr wrote:
| I built a physical version of this back when I was teaching HS
| math and science. I used two bicycle hubs, and attached metal
| arms to each. I put an LED on the second hub, and the end of the
| second arm.
|
| For the demonstration, I'd have it under a blanket in the front
| of the room when students came in. I'd turn the lights out, only
| turn the outer LED on, and set it in motion. Then I'd cover it
| up, turn the lights on, and ask students to sketch what they
| thought was under the blanket. Then I'd turn the lights out
| again, turn both LEDs on, and set it in motion again.
|
| Most people were able to sketch something pretty close to a
| double pendulum after that second demonstration. I also set up a
| camera and did some time lapses, and got pictures that look just
| like this online demo.
|
| Super fun project, and students loved it! :)
| close04 wrote:
| The motion is still off, as it was 2 days ago [0] in the previous
| submission. There's something that just doesn't look right, and
| some particular setups trigger very unrealistic behaviors.
|
| Not sure if this got a second lease on life from the mods after
| clearing the old comments and resetting the submission date to
| today, or how did it make the front page again.
|
| [0] https://news.ycombinator.com/from?site=theabbie.github.io
| magicalhippo wrote:
| If you tried it when it was broken, could it be you're running
| the old version? That is, clear your cache and try again?
|
| If not, describe what feels off, as it feels fine to my
| untrained eyes after the sign fix.
| JKCalhoun wrote:
| Love to see someone do this for a harmonigraph [1].
|
| [1] https://en.wikipedia.org/wiki/Harmonograph
|
| (I contributed to this Wikipedia article over two decades ago!)
| sim04ful wrote:
| Could someone explain why turning off gravity makes it path so
| uniform ?
| bheadmaster wrote:
| Because of the constant-length rigid connections, they start
| behaving like celestial objects in perfect orbit.
___________________________________________________________________
(page generated 2025-10-10 23:02 UTC)