
Gears - robert-boehnke
https://ciechanow.ski/gears/
======
alphaBetaGamma
I have heard that it is good practice to always chose the number of teeth of
two gears to be relatively prime. This is because there can be impurities in
the metal, and if you have a small part of a tooth that is harder than the
rest it will erode the opposing gear (there is always some friction going on).
By choosing the number of teeth to be relatively prime, the wear and tear is
distributed uniformly on the gears, and thus they last longer.

~~~
Aperocky
By relatively prime, do you mean the largest denominator == 1? Or in other
words, 15 and 22 should be relatively prime?

~~~
graphpapa
This is what is commonly meant by ‘relatively prime’, yes. Also referred to as
being coprime.

Defn: a & b are coprime/ relatively prime iff GCD(a,b) = 1

------
ftio
This is an absolutely phenomenal 'explorable explanation'. It methodically
layers concepts to foster understanding, deploys interactivity to build
intuition, and on top of all that provides crisp, clear narrative on top of
all of the amazing visualizations.

~~~
jakub_g
If you enjoyed the article, check out others by the same author which are done
in a similar way. For example [https://ciechanow.ski/color-
spaces/](https://ciechanow.ski/color-spaces/) and
[https://ciechanow.ski/earth-and-sun/](https://ciechanow.ski/earth-and-sun/)

~~~
lobo_tuerto
Or have a look at all his interesting articles here:
[https://ciechanow.ski/archives/](https://ciechanow.ski/archives/)

~~~
Bendingo
Excellent - thx !

------
anderspitman
If someone ever makes the creation process for this type of visualization
accessible to the average university professor, it could blow the lid of the
digital textbook market. Most digital textbooks I've seen are basically just
putting the text and images on a web page, and maybe integrating multiple
choice quizzes. That's seriously under-utilizing the medium. They need to be
_interactive_ , and encourage the student to ask questions and run mini
experiments.

I'm aware this would be extremely difficult; maybe impossible.

~~~
pavpanchekha
I'm a professor currently writing an online textbook. I can assure you that
writing a textbook, without anything interactive, is extremely challenging. I
find it hard to imagine a time when my book will be good enough that adding
interactive explorables will be the best educational return on time invested.
(Though I'm thinking about it!)

~~~
roel_v
Not to dismiss your work, but do you think the best investment of your time is
to write another textbook (assuming this is an undergraduate level book in a
relatively well-explored field), or in adding detail/great illustrations/great
interactive charts to an existing work?

I know (really, like, _I know_ ) how detrimental this would be to anyone's
career, and I'm not saying this as a moral condemnation of what you're doing -
just curious, as I've found myself that there are many cases in these
circumstances where the interests of the author do not align with those of the
audience. Just wondering if you feel the same way.

~~~
pavpanchekha
I'm writing a textbook on a topic no existing book covers: the internals of a
web browser.

For your broader question---I understand what you're saying, but it's very
difficult to edit someone else's writing. That's where "committee voice" comes
from: it's the lowest common denominator to multiple authors working together.
And often how _I_ visualize things comes from how _I_ look at things, and
coming up with a visualization for how _someone else_ looks at things is hard.

Take the OP as an example. This is a long blog post on gears in general, but
animated by the specific question "what shape are gear teeth". If I were
writing a blog post about gears, I wouldn't start at that place. And then,
imagine if this blog post started text-only instead of visual. "Involute"
would now be described with algebra, not a picture. The algebra is complex
(compare the Wiki at
[https://en.wikipedia.org/wiki/Involute](https://en.wikipedia.org/wiki/Involute)),
and that algebra itself would need pictures. Illustrations and explorables
aren't, ideally, something you sprinkle onto existing text.

~~~
roel_v
OK yeah then your case doesn't apply to my general question. I imagine that
for something that is as visual as your topic, animation would be extra useful
though :) (like showing with a slider how reflowing works in certain edge
cases or something) Not to egg you on of course :)

And I see what you're saying on how it's hard to build on someone else's work,
and how what is relevant to illustrate heavily depends on the viewpoint of the
author. Still I can't shake the feeling that there is so much duplication.
Maybe I should just look at differently. Anyway, thanks for weighing in.

------
TaylorAlexander
I really like this presentation! It’s wonderful.

I don’t mean to hijack but I thought this would be an appropriate place to
share a photo album of the 3D printed planetary gears in my open source robot:
[https://imgur.com/gallery/GqXD2Zj](https://imgur.com/gallery/GqXD2Zj)

I’ve been 3D printing gears for some years now and I want to spread the word
that 3D printed gears actually work really well! The gears in the image album
above have been operating on that robot for over a year now and they’re
showing no real signs of wear.

It can be really fun to get a 3D printer and design a little gear assembly.
Once you’re comfortable with gears you can use cheap motors to make something
that moves. Find a way to drive it with Python from a raspberry pi and you’re
on your way to making a robot. :)

~~~
StavrosK
That project looks great! I'm very tempted to start building this because of
how good it looks, but I know it would take lots of time and effort, even with
the designs already available.

As an aside, would something like
[https://www.makerfol.io/](https://www.makerfol.io/) be useful for your build
log? I see many people using imgur for this but it's always struck me as
suboptimal.

~~~
TaylorAlexander
Thank you! It’s certainly an involved project. I recommend starting by
building one motor and gearbox assembly and getting control working from
python. If you can get that far you can build the rest!

And the website you linked looks nice. There is also hackster.io and
hackaday.io. While those sites are fine, it becomes one more thing to update.
I prefer imgur for simple photo albums as that integrates well with reddit, my
primary promotional place. Imgur actually works really well for me there. And
then my real build updates are on my YouTube channel. And I have my own
website where I try to throw everything.

So I end up trying to funnel people to my website and just using whatever
media hosting makes sense for that particular media.

~~~
StavrosK
That makes sense, thanks! Regarding the build, I didn't see any information
regarding the control system on the material I saw, but I probably wouldn't
want to make it as autonomous as you have. I'd probably connect an ESP8266 as
the controller and a receiver for my RC radio and control it that way.

Out of curiosity, is there more detailed information about the controller
somewhere?

~~~
TaylorAlexander
Well do you mean the motor controller, the control computer, or the remote
control?

I’ve got some info on the motor controllers I’m using:
[https://reboot.love/t/vesc-mods-for-robotics-
use/](https://reboot.love/t/vesc-mods-for-robotics-use/)

The control computer is a raspberry pi running python. It looks like I’ve not
committed the code in a while, but this repo may be helpful:
[https://github.com/tlalexander/rover_control](https://github.com/tlalexander/rover_control)

Though for the above, I’ve recently found that I can use velocity control on
the VESC, which is easier than doing velocity control on the Pi as I had done
in that repo.

For the wireless remote control I use, it’s my own design and they’re not for
sale or well documented. I’d recommend any wireless controller that you can
read in python.

The software should be pretty simple now that I’ve switched to velocity
control mode. You just need to read a joystick and convert that to velocity
commands for each VESC. Technically even the VESCs could do that onboard if
you wanted to modify the firmware.

But if you can drive the VESC from an esp32 that would work too.

~~~
StavrosK
Oh huh, that's pretty involved, thanks. Can I ask why you rolled your own
instead of using off the shelf RC components, like what is used in RC cars,
for example? For the remote control and ESC, at least, it seems like it would
be simpler.

~~~
TaylorAlexander
Well for the remote control, I already had the one I used. I started a
wireless electronics company in 2013 (and eventually failed), so it’s a point
of pride to use my own remote. But any RC remote would work.

For the ESC it’s more complicated. The VESC is off the shelf, but it has a
feature most ESCs don’t. The VESC supports encoders. The use of an encoder is
very important to get full motor torque on the brushless motors even at zero
velocity. This allows Rover to slow down or stop even on a slope. The encoder
is also used for precise velocity control, which keeps all the wheels spinning
in concert. Additionally, the encoder data is sent up the CAN bus to the
raspberry pi so my program knows wheel velocities.

You could certainly build a rover without encoders and with a regular ESC, but
it may have trouble starting from a standstill and it may not always drive in
a straight line if the wheel velocities are not all the same. Another thing to
note is that if you spin the motors really fast you’d probably melt the
gearboxes. I’m moving the motors pretty slowly compared to their maximum
speed. But a regular ESC might work fine! I’ve not tried it.

~~~
StavrosK
That's very helpful, thank you. So you're basically turning the brushless
motors into stepper motors with the VESC, that's very interesting. Again,
great project, congratulations.

------
zackmorris
The most important section is on involute curves. It's the curve formed by
unwinding a string against the circle:

[https://ciechanow.ski/gears/#strings-
attached](https://ciechanow.ski/gears/#strings-attached)

It creates a constant angular velocity ratio at all points where the gears
mesh (the law of gears).

In layman's terms, the tip of the tooth gets thinner so that the angular
velocity there is reduced at that larger radius. Otherwise the gears
advance/retreat as they rotate, which creates vibration.

I think there might be a whole host of curves that work for this, the other
main one being a cycloid, which I'm not really familiar with:

[https://en.wikipedia.org/wiki/Cycloid_gear](https://en.wikipedia.org/wiki/Cycloid_gear)

I first learned about involute curves from a cousin that works as a machinist.
Mr. Wizard also blew my young mind with noncircular wheels:

[https://www.youtube.com/watch?v=lg4_Kf9B0MI](https://www.youtube.com/watch?v=lg4_Kf9B0MI)

Edit: stumbled onto this technique to make involute gears in CAD:

[https://www.fictiv.com/blog/posts/creating-involute-gears-
in...](https://www.fictiv.com/blog/posts/creating-involute-gears-in-cad)

If someone has a simpler method, I'd love to see it.

~~~
kragen
Well, I think the parametric formula for the involute of a circle is (1-it)
exp(it). If you pop open Python with Numpy you can say

    
    
        t = np.linspace(0, 1); (1 - 1j*t) * np.exp(t * 1j)
    

And that gives you almost a radian of the involute, unless I've screwed
something up. You can evaluate that at the desired number of points, clipped
to the desired range of radii, export the coordinates to CSV if necessary, and
import them into your CAD program as a smooth polyline. For example, with
FreeCAD, you can directly script it in Python and
[https://forum.freecadweb.org/viewtopic.php?t=27866](https://forum.freecadweb.org/viewtopic.php?t=27866)
Draft.makeBSpline will apparently do the job. Blender should be similar.

To me this sounds simpler.

------
dsalzman
Wow this is great OP! If you like this check out
[http://507movements.com/](http://507movements.com/) \- an animated webpage of
507 mechanical movements with descriptions from a classic book.

~~~
Rapzid
I'm sad to say it took so long to occur to me, but I believe 507 was what
introduced me to the concept that it's levers all the way down.

------
subinsebastien
Nicely done. Reminds me of
[https://geargenerator.com/](https://geargenerator.com/) which I used to build
gear systems for fun.

~~~
ohazi
Also Matthias Wandel's gear generator

[https://woodgears.ca/gear_cutting/index.html](https://woodgears.ca/gear_cutting/index.html)

------
mholt
I didn't know anything about gears until someone filed an issue to tell me
that a graphic on the Caddy homepage was wrong:
[https://github.com/caddyserver/caddy/issues/2949](https://github.com/caddyserver/caddy/issues/2949)

Wish I saw this earlier!

~~~
jcl
It's funny how often that happens. A favorite example:
[https://en.wikipedia.org/wiki/Two_pounds_(British_coin)#Desi...](https://en.wikipedia.org/wiki/Two_pounds_\(British_coin\)#Design)

~~~
nitrogen
In case anyone else couldn't tell from the image and didn't want to read all
of the history:

 _> An oddity of the design is that it depicts nineteen interlocking gears.
Because there is an odd number of them, the mechanism could not actually
turn._

~~~
rezgi
That's not the case for the two pounds though. In the coin's situation, it's
because the three gears at the top are interlocked and jammed.

------
todd8
In college, one of my lab courses required us to learn manufacturing
techniques. We covered a wide range of methods for machining and shaping
things, all out of metal.

Making gears was interesting, we had to first turn a rough blank of metal on a
lathe to make a steel gear blank (about 12cm in diameter and 2cm thick) then
drill out the center and broach a keyway for the axle that would go through
the gear. This was all pretty straightforward, but the final piece of work was
more difficult, it was cutting the teeth of the gear. The teeth of a properly
made gear require complex shapes.

There are, as I recall, two ways to cut the teeth. Hobbing uses a helical
cutting head turning on an axis that is roughly perpendicular to the axis of
the gear. The cutting head and gear turn at the same time in a synchronized
manner and the teeth are eventually cut out by the cutting head. See [1] for a
video of a large complex gear being made this way.

The other method, broaching, uses a straight bar of tool steel that has thick
straight across cutting teeth. The bar is pushed past the disk shaped gear
blank. The cutting bar moves in a straight line parallel to the axis of the
gear blank. Repeated passes over the gear blank cuts out the spaces between
the gears teeth.

Master machinists taught us how to make these kinds of projects. They would
produce a finished gear in about 15 minutes of instruction; then we would have
something like two weeks to make the gear. They made everything look easy; it
definitely wasn’t easy for me.

[1]
[https://www.youtube.com/watch?v=0rnTh6c19HM&feature=share](https://www.youtube.com/watch?v=0rnTh6c19HM&feature=share)

------
jvanderbot
For me, nothing beats the mechanical calculator used to calculate torpedo
firing solutions in WWII. It was a sophisticated differential equation solver
that kept a real-time updated firing solution using ... gears.

There's a whole maintenance and operations manual beautifully scanned here[1].
I've wanted to build one forever, but lack the time and expertise.

1\. [https://maritime.org/tech/tdc.htm](https://maritime.org/tech/tdc.htm)

~~~
bacon_waffle
I am interested in differential analyzers too, especially after the anecdotes
in Richard Hamming's Learning to Learn (aka Hamming on Hamming)[1] about re-
purposing "gun directors" to solve engineering problems.

Some of the mechanisms involved are really elegant, like the torque
amplifier[2] which wasn't invented until the 1920s. A tabletop demo of one is
on my to-do list.

[1]
[https://www.youtube.com/playlist?list=PL2FF649D0C4407B30](https://www.youtube.com/playlist?list=PL2FF649D0C4407B30)

[2]
[https://en.wikipedia.org/wiki/Torque_amplifier](https://en.wikipedia.org/wiki/Torque_amplifier)

------
TeMPOraL
I'm going to add very little to this discussion, but it's the second article
from this blog I've seen here, and - like the other one, about the Earth and
the Sun - it's absolutely amazing. This is some of the finest work in
"explorable explanations". I'm going to save the copy of both just to be sure
to show them to my kid in a couple of years; this beats any educational
material on the topic I've been exposed to before.

~~~
chubot
It is indeed great, and probably one reason you don't see it more is that it's
a ton of work! That's 5K lines of hand-written code! (view source and it's at
the end of the page)

    
    
        $ wc -l gears.js base.js 
         4135 gears.js
          904 base.js
         5039 total
    

I've wanted to make visualizations like this for my blog. Writing a blog post
takes me around 10 hours, which is a fair amount of effort.

I believe that the visualizations will take more time than writing in general
-- i.e. it would be more like 20 hours, bringing the total to 30.

If you consider that it's 4K lines of code (assuming the base library is
reused), it's very easy to see that it could take 20+ hours. Probably more
like 40-80 to be honest.

I guess there is that other thread that says people only write 10 lines of
code a day, which would make it 400 hours ;) I don't think that applies here
but it could be closer to 400 than 10 or 20.

\----

I also wonder if you can save time by using a less "hand-written" style (e.g.
d3.js, which seems to be on everyone's wishlist to learn).

My inclination is also to go "hand-written" rather than using a bunch of JS
libraries. I think you get a better result that way. It's interesting to see
that I'm not totally wrong -- the thing everyone praises ends up being very
hand-written. And it's smooth and fast, etc.

\----

another edit: I also believe one reason that this visualization is good is
because there's no build process in the JS. The author clearly just edits the
code and refreshes the browser. You need that kind of fast edit-view loop to
make good visualizations.

IOW, consider using plain JS for blog posts. They are documents and not apps.

~~~
amitp
Having been down this road, yes, it does take time, but you can save some time
by using SVG and some DOM library. Although canvas is faster, most diagrams
don't really need it, so I use SVG unless I really need to switch to canvas.
SVG also adjusts for screen dpi automatically.

The things I like:

1\. Reactivity (ObservableHQ, Vue.js, hyperactiv.js, etc.). There's usually
some underlying data and then a corresponding visualization. These reactive
systems let you modify the underlying data and then the visualization updates
automatically. You don't have to figure out which diagrams to update when.
Even easier: just redraw everything every time you change anything.

2\. Some easier way to write the DOM (d3.js, jsx, vue, lit-html, etc.). Since
I'm writing a blog post with html, I usually prefer writing my js-in-html
(vue) rather than html-in-js (jsx) but try both directions and see which you
prefer.

3\. No build step. This is especially important when I want to update a page
years later and don't want to figure out which build tools I was using in 1997
or 2007 or 2017. I want my pages to last for decades, and I still update my
pages from 25 years ago.

I tried recreating one of the gear page diagrams in ObservableHQ
[https://observablehq.com/@redblobgames/unwind-circle-
example](https://observablehq.com/@redblobgames/unwind-circle-example) . It's
not a lot of code. There's a slider, there's a loop to generate the lines, and
there's the output svg. Whenever you move the slider it recalculates the
output.

I admit that I'm not using ObservableHQ much for my own projects because I
want more of a "hand-written" style. I used d3.js for my older pages and
vue.js for my newer pages. Vue's reactivity and templates save me probably a
factor of 2 or 3 over d3.js.

~~~
chubot
Thanks for these tips -- I've seen your visualizations and it's nice to hear
from people who have done it!

It's cool that you were able to reproduce the diagram quickly and in a small
amount of code. It looks a bit foreign to me, probably because I don't know
much about SVG (or canvas for that matter). And as I understand it Observable
is almost another language on top. (I do know HTML, CSS, and JS pretty well,
but there's still a gap.)

Do you ever mock visualizations up in a WYSIWIG tool, or do you always use web
technologies in a text editor?

Doing it programmatically has advantages when you need to make 30 similar
diagrams, as in this post about gears.

But I also feel WYSIWIG tools could help in prototyping to avoid throwing away
a lot of code that wasn't properly conceived of. That is, implementing the
visualization is only part of the huge amount of work; the other part is
designing it of course. And in many cases the design effort is probably
larger.

For example, I have wanted to write an article about regexes, visualizing NFAs
and DFAs. I find that some programmers have trouble with the idea of
nondeterminism, which is more of a mathematical thing. A subtitle would be
something like _" A trie is a special case of a DFA"_.

This post has some nice diagrams, and you can easily imagine them being
interactive and more approachable:

[https://swtch.com/~rsc/regexp/regexp1.html](https://swtch.com/~rsc/regexp/regexp1.html)

(in fact a few months ago else I posited that a textual summary of these great
but dense posts would be useful too)

I can sort of imagine what I want to visualize, but I also think there will
also be many false starts. Though maybe a pencil and paper is sufficient. I'm
not sure I will get to it, but this polished and smooth gears post got me
thinking again! Using something reactive like vue rather than doing it
"vanilla JS" is also probably something I should look into as well.

~~~
amitp
SVG is declarative. You write <circle cx=300 cy=400 r=100 fill=red/> to make a
red circle at (300,400) with radius 100. You can then change any of these
properties and the system will redraw automatically. Canvas is imperative. You
write ctx = canvas.getContext('2d'); ctx.fillStyle = "red"; ctx.beginPath();
ctx.arc(300, 400, 100, 0, 2 * Math.PI); ctx.fill(); and the system will draw
that circle. You handle redraw yourself by redrawing everything on that
canvas, so you need to keep track of it all. The DOM helpers (React, Vue,
etc.) help you with SVG but not with Canvas.

I usually mock visualizations on paper! I'm interested in using WYSIWIG
interactive diagram tools like [http://aprt.us/](http://aprt.us/) but I never
seem to get into them. When I started, making the visualizations was the
largest part of the work, but now I've gotten better at it, and making the
explanation is now the part that takes the most time.

After paper, I often use SVG to make a _non_ interactive diagram, either by
hand, or in inkscape. One of my guiding principles is that the page should be
usable _without_ interaction, so the static diagram is a test of that. If it
looks promising I can then gradually transform it into an interactive diagram.
For example if I had the circle above, and I am using vue.js, I can change it
to <circle :cx=x :cy=y r=100 fill=red/> (note the ":" before attributes), and
then vue will fill those values in from the object I give it. I can give it
{x: 300, y: 400}, and any time I change x or y, it will automatically redraw.
I can then hook up x or y to a slider to try out the interactivity. This
allows me to start with a static diagram, gradually add interactivity, and
then build reusable abstractions that I can apply to multiple diagrams.
ObservableHQ and React/JSX allow something similar, with slightly different
syntax.

I'd love to see an article about regexes with interactive diagrams. There's a
standalone diagram tool [https://regexper.com/](https://regexper.com/) and an
interactive tutorial [https://regexone.com/](https://regexone.com/) but
neither is an essay in the style of the Gears article. If you're pursuing
this, let me know at redblobgames@gmail.com and I can send over more
resources.

------
salgernon
This was simply wonderful, and hidden at the bottom was a link to an insect
named "Issus coleoptratus"[1] which evolved something like a biological gear
for synchronizing its legs.

As an almost complete aside, in Terry Pratchett's "Last Continent" there is a
God of Evolution that comments on how difficult it is design a biological
wheel.

“It’s very hard to design an organic wheel, you know,” said the god
reproachfully. “They’re little masterpieces.”

“You don’t think just, you know, moving the legs about would be simpler?”

“Oh, we’d never get anywhere if I just copied earlier ideas,” said the god.
“Diversify and fill all niches, that’s the ticket.”

“But is lying on your side in a mud hole with your wheels spinning a very
important niche?” said Ponder.

[1]
[https://en.wikipedia.org/wiki/Issus_coleoptratus](https://en.wikipedia.org/wiki/Issus_coleoptratus)

------
daralthus
You may find yourself wondering: what would happen if the gears are not
circular?

The answer is then they can implement a wide range of mathematical functions
like reciprocal, tangent, square etc. and you will get a kick out watching an
hour long video about a mechanical "computer" with cams building up
differential calculations:
[https://www.youtube.com/watch?v=s1i-dnAH9Y4](https://www.youtube.com/watch?v=s1i-dnAH9Y4)

Enjoy!

------
roland35
A very cool style gear is a harmonic drive. It has a somewhat flexible inner
gear driven by a cam which engages it to the outer gear. It allows for extreme
gear ratios with high torque in very small packages (think helicopter pitch
control).

[https://en.wikipedia.org/wiki/Harmonic_drive](https://en.wikipedia.org/wiki/Harmonic_drive)

~~~
abraae
Very cool! It looks like the output shaft has quite a bit of lateral movement,
perhaps something like a Schmidt coupling
([https://www.thingiverse.com/thing:233667](https://www.thingiverse.com/thing:233667))
could be used to remove that movement and allow a fixed output shaft.

I last saw one of these inside an IBM 3890 check reader machine.

------
anigbrowl
The whole blog, really. Someone throw money at this person to write science
texts full time.

~~~
divbzero
Imagine if we could revamp the textbook industry so articles like this have a
fighting chance of being included.

------
bcheung
If only textbooks could be this good.

~~~
julienchastang
Exactly. Or put another way, why is there not more pedagogic material like
this on the web? We have Jupyter notebooks in many different academic subjects
but so many of them are half-baked. This website serves as an example of how
good web-based teaching material can truly be.

~~~
gugagore
I think we'll get there. Part of the problem has been ensuring that the
content keeps working. There has been so much educational content produced on
Flash, Java Applets, and other platforms that currently have no support.

But the "modern web" (HTML5 and javascript) seem likely to last a long time
and be supported on many, many platforms. So now we need better authoring
tools, because as another comment suggests, not everyone is up for writing 4K
lines of code.

~~~
kragen
That's what I thought, but now more and more features are being disabled
either entirely (as with the SQLite interface in WebKit) or for unencrypted
sites, which — correct me if I'm wrong here — includes web pages you've
archived on your local filesystem. Maybe <canvas> will survive that, despite
its use in browser fingerprinting, but camera access and appcache are already
nuked, and the only interface that let you do custom realtime DSP on audio
streams from an unencrypted origin is deprecated.

------
amitp
Really great interactivity and visualizations on this blog. Check out the
other posts too:
[https://ciechanow.ski/archives/](https://ciechanow.ski/archives/)

------
arh68
Cool, really cool. I really wish I could've seen that as a kid. Not asking,
but logical next step is to go 3-D with straight-cut gears & helical-cut &c
&c.

Anyone else play Gizmos & Gadgets as a kid? I can't help but flash back; I
feel like that's how I learned "gearing" (and magnets, and maybe more..).

~~~
joshdance
I played Gizoms and Gadgets. Fun game.

------
mtreis86
Slightly off topic but it has long bothered me that racing simulations let you
pick arbitrary gear ratios in the tranissions and differentials. Real life has
two restrictions, you can't have half teeth, and you can't have huge teeth
count. A 3.00 ratio sure, 12:36 but a 3.01? No car differential can fit a
100:301 ratio gearset and 10:30.1 just won't turn past the broken tooth.

~~~
SummerlyMars
I'm not a car guy, and I don't know about the differentials, but don't
continuously variable transmissions allow for this? I'm guessing they're not
in common use on race cars, but in principle, shouldn't they allow for a 3.01
ratio?

~~~
mtreis86
Yes, a CVT uses a steel belt around two cones, and can have any ratio between
them.

Most race cars use mechanical transmissions with automatic controls as that's
the most robust design. Some stunt vehicles use automatics or CVT as landing
with the wheels at different speeds than the vehicle causes a massive shock
through the drivetrain. In a manual that shock goes right to the engine, in
automatics there is usually some amount of absorption of rotational shocks due
to the less rigid coupling.

Diffs are almost always a ring and pinion gear.

------
dmortin
There should be some tool to make such nice animations easily. Not just gears,
but any other illustrations with moving parts with the ability to have a
zoomed in detail beside the animation, etc.

~~~
mottosso
You're in luck, such a tool exists! It's HTML and JavaScript. :)

~~~
lsorber
I think you missed the 'easily'.

------
kjhughes
Well illustrated and explained.

For some interesting, less conventional gears that surprisingly still
function, checkout out _How To Make Organically-Shaped Gears_ :

[https://www.youtube.com/watch?v=3LdlSAN1yks](https://www.youtube.com/watch?v=3LdlSAN1yks)

------
roel_v
I have a dumb question about this. Under the header 'Torque', where the wrench
is introduced the first time, the length of vector F is non-linear with the
position of the slider; in other words, the curve you see (that of the length
of F) is not straight. Why is that? Torque is distance times force, where is
the non-linear component? The article goes on to talk about the angle of the
force, but that isn't relevant in that graph yet, is it? (meaning, that
graphic seems to suggest we're talking only about a force perpendicular to the
wrench?)

~~~
progval
Torque = distance×force, so force = torque/distance, so force is linear in
1/distance.

~~~
roel_v
Thanks, that makes sense. Once you start thinking about it, it's obvious (e.g.
F can never go to 0), turns out I've always had a wrong mental model of how
the length of a lever influences the torque (beyond 'longer lever = more
torque' of course).

------
smnplk
I am learning about car mechanics as a hobby. How a car works is a nice
learning site. [1]

Just learned about starter motors today. I didn't know it has gears too, in
particular the planetary gear system, which is not mentioned in this tutorial.
(I quickly skimmed through)

[1]
[https://www.youtube.com/watch?v=VRe_hKxzKUg&t=1094s](https://www.youtube.com/watch?v=VRe_hKxzKUg&t=1094s)
[https://www.howacarworks.com/](https://www.howacarworks.com/)

------
yread
Nicely made. And as soon as the fan appeared my cpu fan started to spin like
crazy. It felt real

~~~
jansan
Now it needs to be 3D and a smell generator that emits grease odor and you
will have a full 5D experience!

Digital scent technology:
[https://en.wikipedia.org/wiki/Digital_scent_technology](https://en.wikipedia.org/wiki/Digital_scent_technology)

------
whalesalad
These interactive animations are so well done.

------
NegativeLatency
If you're interested in the machining/making of gears there's a youtube
channel where a person makes clocks and other timekeeping devices (some of
ancient designs). It's fascinating to watch, and makes me want to get a metal
lathe/mill someday.

[https://www.youtube.com/channel/UCworsKCR-
Sx6R6-BnIjS2MA](https://www.youtube.com/channel/UCworsKCR-Sx6R6-BnIjS2MA)

~~~
falcolas
Clickspring's work on the Antikithra mechanism (and the Pateron exclusive
Byzantine Sundial) is particularly interesting, because not all of the
movements created by gears are circular or even. The input can be purely
rotational, but the output is not.

For example on the Antikithra mechanism, it has to account for the procession
of the moon's orbit which causes an uneven time to complete one orbit. To
properly simulate this, a pin-and-slot system is combined with an offset pivot
to turn the rotation of gears into a movement that lags behind and then speeds
ahead, mirroring the actual orbital period.

I worded that poorly; the video does a better job of explaining it (within the
first minute), and the rest of the video shows the gear train coming together

[https://youtu.be/v19cu2hj2Ms](https://youtu.be/v19cu2hj2Ms)

------
n3uromancer
This is a great learning resource. I just found tec-science the other day and
I agree with the author that it is worth to take a look, as they have some
excellent visualisations. [https://www.tec-science.com/mechanical-power-
transmission/ge...](https://www.tec-science.com/mechanical-power-
transmission/gear-types/cylindrical-gears/)

------
pmilla1606
This is wonderful and I can't wait to go through his other articles.

It reminded me a lot of: [https://acko.net/blog/animate-your-way-to-
glory/](https://acko.net/blog/animate-your-way-to-glory/)

------
milansuk
Nicely done! It kind of reminds me of this old video: How Differential
Steering Works (1937)

[https://www.youtube.com/watch?v=yYAw79386WI&t=209](https://www.youtube.com/watch?v=yYAw79386WI&t=209)

~~~
joaomacp
I love this video. It's such a great visualization, simple and clear, and gets
the point across while being entertaining.

And it's from 1937! We have so many video editing and effects tools today, but
sometimes simpler is best.

------
andonisus
This may be a stupid question, but it is something I always wondered.

Torque is effective due to the mass of the lever having a force applied to it,
right? Is the length of the lever being used as a stand-in for the mass being
affected (a longer lever would necessarily have more mass)? If the lever had
no mass, would there be no torque? If the lever did not have a uniform mass
distribution, would the difference in applied torque differ based on where on
the lever you applied the force (is the derivative of torque with respect to
mass not constant for a non-uniform mass distribution)?

~~~
fsh
No, the mass of the object that has a force applied to it has absolutely
nothing to do with the torque.

Here is how Wikipedia defines the torque caused by a force acting on an object
with a rotation axis: Torque is the product of the magnitude of the force and
the perpendicular distance of the line of action of force from the axis of
rotation.

~~~
andonisus
So the force generated by the torque is completely unaffected by the mass of
the lever? Then, why does applying the force on a longer portion of the lever
create more torque? I had thought it was because there is more mass acting on
the point of rotation (longer lever = more mass).

~~~
kragen
> _So the force generated by the torque is completely unaffected by the mass
> of the lever?_

Yes, that's right.

> _Then, why does applying the force on a longer portion of the lever create
> more torque?_

Most of the answers to this question reduce, upon examination, to "that's how
we define torque". We define the torque of 100 newtons at a lever distance of
one meter as the product of 100 newtons and a meter, which we can call 100
newton-meters, which is equal to 1000 newtons at a lever distance of 0.1
meters.

But that doesn't really answer the question, which becomes, why is torque
defined in this way an interesting thing to think about? And the answer is
that if the lever is a rigid body free to rotate around a fulcrum, then 100
newtons at one meter in one direction will make it start to rotate, while 1000
newtons at 0.1 meters in the opposite direction will precisely cancel that
"moment", as we call it, and there will be no tendency to start rotating. It's
about what forces are needed to cancel each other.

Well, but, why should that be? Why does it take exactly 1000 newtons and not,
say, 316.2 newtons? And I don't think I have a really good answer for that
question. In the case of an elastic solid body it falls out of Hooke's law and
the geometry of the situation, which you can reduce to two long, skinny
triangles sharing a common side bisected by the fulcrum. But it seems to be
much more general than that.

> _I had thought it was because there is more mass acting on the point of
> rotation (longer lever = more mass)._

Nope. You can try using a pair of scissors or a folding ladder as a lever, or
pull in different directions on the end of a fixed-geometry lever. The lever's
mass doesn't change, but the leverage certainly does.

~~~
saltcured
A generalization which applies to levers, pulleys, and hydraulics is
mechanical advantage while conserving energy. You have a system with input
work and output work (energy) that are the same, ignoring frictional losses.

Recall that work is force over distance. The mechanical system relates the
input and output distances by a scalar coefficient. Since the working
distances are related by a ratio, the working forces are related by the
reciprocal of that ratio.

You can find the lever and fulcrum ratio with simple geometry. The input and
output lever segments are radii, and the travel is distance along two arcs.
Since the arc length is directly proportional to radius, the ratio of lever
radii translates directly to the same ratio of arc lengths, and the reciprocal
ratio is the force multiplier. Your 10:1 lever sweeps 10:1 arc lengths and
balances with 1:10 opposing forces.

~~~
kragen
Yes, that's an excellent point, but I think the lever law is more general than
that. For example, it continues to apply when the lever in question is
stationary, even though no value of the forces involved would violate
conservation. In fact, it holds to higher precision in that situation because
your measurements aren't confounded by vibration and accelerating masses.

Maybe you can derive it from some kind of generalization of Hooke’s Law to
cover nonlinear stress–strain relationships, elastic hysteresis, anisotropy,
viscoelastic behavior, and so on, but it's not obvious to me what that would
be. Also, I feel like the concept of angular moments acting to produce angular
acceleration is simpler and more general than all that stuff, but I'm not sure
if conservation of energy and geometry alone are sufficient to derive it.

------
chalst
Seymour Papert writes in the introduction Mindstorms about he was fascinated
by gears as a child and spent much time playing with them, and what he learnt
through play provided a valuable intellectual foundation for learning many
elementary and advanced ideas in mathematics.

[http://www.papert.org/articles/GearsOfMyChildhood.html](http://www.papert.org/articles/GearsOfMyChildhood.html)

------
whiddershins
I am super impressed by the smooth animation and the graphic design of the
elements.

I wish this were all open source so I could just copy it in to a project I’m
in the middle of.

Very inspiring.

~~~
dmix
There are 30(!) different animations on this one blog post alone.

The work he put into this is admirable. A great education tool.

------
jedberg
That gif at the top reminds me of an IQ test I took in 6th grade. There was an
entire section where they would show you a sequence of gears and tell you what
direction one of them was spinning. Then they would ask you what direction
some other gear was spinning.

They all looked like that first gif (but not animated of course).

------
9214
Seymour Papert's childhood (cf. "Mindstorms" [1] introduction) obsession with
gears sprung to mind.

[1]
[http://worrydream.com/refs/Papert%20-%20Mindstorms%201st%20e...](http://worrydream.com/refs/Papert%20-%20Mindstorms%201st%20ed.pdf)

------
fit2rule
This is awesome. I wonder if the author could be convinced to participate in a
similar discourse on the subject of gears, as they relate to audio
synthesisers?

Pretty much all the modern synths these days have infinitely lubricated gears
and pulleys in them, pushing those speaker cones/amp inputs ..

------
frankus
Maybe I’m misremembering but isn’t torque usually expressed as a cross product
of force and radius?

(Making pound-feet the pedantic but correct phrasing of the colloquial “foot-
pounds”)

That way the torque vector points in the direction that a screw would move if
you turned it in the direction it’s being forced.

~~~
catblast
That is the correct way to express torque with vectors.

The definitions in the blog post are not vectors, they are scalars and the dot
is not a dot product, just multiplication. (F_t there is what is commonly
notated as F_perpendicular). I agree it is confusing to those of us used to
seeing bold letters usually used for vectors (and I would argue that using
more conventional notation at even a basic level is better), but it's not
wrong.

------
miohtama
This is Also a very helpful GIF how a gearbox in a car works

[https://mobile.twitter.com/moo9000/status/121019063004082176...](https://mobile.twitter.com/moo9000/status/1210190630040821760)

------
warpech
Bravo for the author for such a captivating interactive blog post. Works great
on mobile!

------
omgneering
This is great! The visual representation of rotation speed at each point makes
a confusing subject much clearer. Is anyone familiar with the gear wars? I
know it wasn't all about the gears, but I would love to get more insight into
it

------
salvagedcircuit
This looks pretty fantastic on mobile. Nice and responsive. Great animations.
Good job!

------
nicpottier
A fun one to watch afterwards: [https://www.youtube.com/watch?v=5q-BH-
tvxEg&feature=emb_titl...](https://www.youtube.com/watch?v=5q-BH-
tvxEg&feature=emb_title)

------
boznz
Works fine with noscript and ublock active.. wish all sites played this well

------
tartoran
This is very well done. Interactive textbooks should look like this.

------
yachtman
I would need additional proof that gears were designed with many of these
mathematical considerations in mind and didn't just arise out of trial and
error by the machinists

------
ultrasounder
Wow!. I always blank out when my MEs talk to me about Gear ratios and TOrque
when designing Electro mechanical systems. This is really helpful. Thanks for
making this.

------
atregir
Oh my! These animations are sooooooo satisfying to look at!

------
holler
This is a really awesome article and brought me back to intro physics class,
saving it and will return to it in the evening so I can fully digest :)
Thanks!

------
arein2
[https://youtu.be/Q-XOM4E4RZQ](https://youtu.be/Q-XOM4E4RZQ) An awesome video
on making gears.

------
retrobox
This is beautiful. Great explanations, and a really powerful interactive
website. A really impressive and engaging page to pull it all together.

------
nojvek
The writing and interactive examples are really amazing. Would deffo read the
entire series of articles. Gonna bookmark it.

------
pier25
Very nice!

These animations are running in a <canvas>.

Any idea what the author used? Is everything produced with math (eg: a gear
solver, etc)?

~~~
divbzero
I was wondering the same!

The author appears to be using his own functions written in vanilla JS. The
Gears page loads a custom Canvas library base.js [1] plus an page-specific
gears.js [2]. iOS graphics appears to be an area of expertise [3] for the
author.

[1]: [https://ciechanow.ski/js/base.js](https://ciechanow.ski/js/base.js)

[2]: [https://ciechanow.ski/js/gears.js](https://ciechanow.ski/js/gears.js)

[3]:
[https://github.com/Ciechan?tab=repositories](https://github.com/Ciechan?tab=repositories)

(P.S. <canvas> is an interesting choice, I had expected <svg> before opening
the page inspector. Separately, I love the creative use of TLD in the domain
name.)

~~~
pier25
Thanks for the JS files.

Would be nice to know about his process.

Here it appears he is importing the graphics from somewhere else converted to
imperative drawing code:

[https://imgur.com/jFpN0f3.jpg](https://imgur.com/jFpN0f3.jpg)

~~~
bestest
That's just a function that draws a spanner.

~~~
pier25
Obviously, but my point is that if you look at the coordinates these do not
seem to have been handwritten.

------
microcolonel
For the author: adding support for touch events, or using normal HTML sliders
would be helpful.

~~~
Drdrdrq
Curious: does something not work for you? If so, what platform are you using?
Asking because it works perfectly for me on mobile...

~~~
microcolonel
I was on a Chromebook with a touchscreen. Maybe you do "platform detection"
and don't register touch handlers on laptops. I haven't looked at your code (I
didn't see a repository link and I didn't bother looking further).

Cheers on the cool demos, I think it could be the start of a great resource
for elementary school teachers introducing machines. I know this sort of thing
would have been great when I was in grade 3.

~~~
Drdrdrq
Sorry, I didn't mean to imply I was the author - I was just curious what
failed. Thank you for the explanation! I agree that OP made cool demos. :)

------
polishdude20
That diagram with the wrench and force increasing as the radius decreases
should be linear.

------
rampatra
Great article. How did you make those images with sliders? Any tool or library
you used?

------
kuu
High quality content. Thanks OP!

------
hkiely
I remember learning gear size ratios in sixth grade math class with special
LEGO sets.

------
IshKebab
Must have been an insane amount of work to put this together - well done!

------
drcongo
This is incredible, and apparently every other post on that site is too.

------
cpdean
i'm so happy for the global pause button in this article

------
bilekas
> The considerations behind real world gears are much more complicated than
> what I’ve presented

Nah... Nah I would say you pretty much nailed it in this blog post!
Incredible. HN Gold right here.

------
max_
How are these animations implimented?

------
codewritinfool
Incredible. Thanks for posting this.

------
known
Cute explanation; Thank you;

------
tomger
This is a beautiful article.

------
Jahak
This is a beautiful article

------
person_of_color
Can you 3d print gears?

~~~
Ardren
Absolutely, they even work for a while.

The Youtube channel "Gear Down for What?" has some pretty cool planetary
designs.

[https://www.youtube.com/c/GearDownForWhat](https://www.youtube.com/c/GearDownForWhat)

~~~
person_of_color
Why only for a while?

------
boynoob
Hi guy so thx

------
zyngaro
Amazing work!

------
otto_ortega
Lovely work, thanks!

------
jmiskovic
The illustrations are what draws attention and they are very nice and
informative.

In context of parallel HN discussion¹ on merits of animated SVG, I consider it
a loss for open standards that these animations are not made in SVG. If you
try to inspect this page, the design and animation is hidden behind canvas and
some (nicely written BTW) imperative javascript. It is hard to replicate, and
hard to compose with other elements. The illustrations are completely white
when disabling JS, which is less than ideal graceful degradation. Some people
would argue that executing custom scripts should not be required to show
animated graphics, even if it includes basic interactivity.

For comparison, visit this page² and try to 'inspect' animated graphics.
Observe the SVG element in DOM and see how it changes when you scroll. Just by
spending few minutes exploring you could probably recreate them, or at least
reuse them somewhere else. We still don't see what's driving the animation
(also JS), so that could still be improved using SMIL, but there is obvious
benefit for using SVG here.

Don't take me wrong, it is really a nice article with very pleasant and clear
animations. I'm merely speaking from perspective of open standards, and
technology stack that provides good foundation for building complex
illustrations. The author is not to blame here, as we lack decent tools for
declarative graphics/animations.

¹
[https://news.ycombinator.com/item?id=22297461](https://news.ycombinator.com/item?id=22297461)
² [https://www.opencrux.com/](https://www.opencrux.com/)

~~~
jancsika
> The author is not to blame here, as we lack decent tools for declarative
> graphics/animations.

Please show me the pure SMIL declaration for a pixel-exact replica of the
example from the wonderful article: number and size of teeth on a spinning
gear scales based on the horizontal position of a draggable slider.

On a related note: this wonderful article is an article. The next time an HN
article about web complexity triggers another HTML Class of 4.01 Reunion, it
would be great if admirers of this article would post the link and force them
to reveal the true depths of their asceticism.

I think I win either way. If there really is an SMIL solution then then the
4.01 grumps would be forced to backport declarative graphics/animation into
their nostalgia. If not, then my point stands.

~~~
jmiskovic
Can you explain what is it that you win? Because the current state where it
takes a talented programmer + mathematician + designer to create this kind of
content is loss for everyone.

No, SMIL on its own cannot replicate these illustrations. I hope that some
future standard for declarative reactive graphics will be able to.

------
visitect
The diversity of topics, hand-crafted graphics, and quality of explanation on
all the posts on this blog remind me a lot of Andrew Glassner's columns from
IEEE CG&A. Really delightful work (in both cases).

------
nimish
> Almost by definition, the second hand of a clock rotates at 1 rpm

Minute hand, surely ;)

~~~
jentulman
The minute hand would be one revolution an hour.

~~~
nimish
Hoist by my own petard!

------
globular-toast
While I appreciate the beauty this piece, I can't help but think of the irony
of such a complicated piece to explain something which mechanics and
engineers, who actually use gears, understand completely intuitively.

~~~
anamexis
Why is it ironic? The target audience clearly is not mechanics and engineers
who actually use gears.

------
dsfyu404ed
_sigh_

If I don't post it someone else will. Here's the spinning levers video you've
all already seen a million times:

[https://www.youtube.com/watch?v=JOLtS4VUcvQ](https://www.youtube.com/watch?v=JOLtS4VUcvQ)

~~~
userbinator
It's been posted on HN a few times too, although without much discussion.

