I've written a program to generate gears and write them to dxf files. I thought all was well until I looked at the mesh of two gears.

Gear Mesh

From everything I've read there should be no backlash when the pitch circles touch. So I'm ether reading wrong, or my calculations are skewed. If I drop the pressure angle to like 8, the teeth fit nicely. The image is with the angle set to 14.5 This is the actual code, I derived it from here

//angle of involute to outside circle
//see fetch.pdf, equ (6),(7) then from...

//polar_radius = base_radius * sqrt( 1 + t^2 )
//where t is the arc AB
//the limit of polar_radius is the outer_radius

//   so solve for t at the limit
// t= ( ( outside_diameter / base_diameter )^2 - 1 )^1/2

//for the end point of the involute arc
double Dop= gp.od / gp.bd; //ouside diameter / base diameter
double t= sqrt( Dop * Dop - 1 ); //angle of tangent to involute arc, at limit
double Ac= t - atan( t ); // angle of involute arc, at limit

then I create a line string for the involut curve as:

for( size_t step= 0; step <= ITERS; ++step )
    double arc= t / ITERS * step;
    *ls+= bg_point( base_radius * ( cos( arc ) + arc * sin( arc ) ),
                    base_radius * ( sin( arc ) - arc * cos( arc ) ) );

And thinking about it, how could you not have backlash when the teeth arc from the base circle, the point where the line starts at half a tooth/space distance. But I'm just not sure.

Also, I'm planing to put all the code on GetHub and will do it sooner than later if needed.

UPDATE: The fix is in and now it looks like it should. This is with a 20 degree pitch. 20 degree pitch meshed

I've uploaded to GetHub using the MIT license. If I think this useful, maybe others will also. The user interface needs a lot of work, gear params are still hard coded. Only these two files have any thing to do with gears.



The rest is a CAD drawing interface. Thanks again SprocketsAreNotGears!!


1 Answer 1


First of all, there should indeed ideally be no backlash between the teeth. There is a slight problem with the code, which stems from the misunderstanding that consecutive points of the involute curves that lie on the base circle occur a half-tooth's distance away from each other. If this were the case then, yes, there would be backlash. However, in fact, it is actually the points of the involute curves at the pitch circle that are a half-tooth's distance apart. I'll illustrate this below.

What your program is currently doing is as below:

enter image description here

Note that each of the radial lines are one of the $2N$ division lines (for a gear with $N$ teeth) and each are separated by an equal angle of $\frac{\pi}{N}$ radians. Note the black dots are the points of the involute curves that lie on the base circle, and these lie on the equal division lines according to your program. This is not the case for standard gears with no deliberate backlash implemented.

Take note of the following diagram, which is basically a zoom-in of the previous:

enter image description here

Note the pitch point on the involute curve, and take note of the angle $\theta_P$ that occurs between the radial lines passing through the base and pitch points. We will need this angle later on.

We want to instead have the pitch points on consecutive involute curves separate by equal angles, and so the following diagram should be obtained:

enter image description here

Note that the black dots are the pitch points that are lying on the equal division lines. To get from the previous incorrect case to the correct one, this involves rotating the involute profiles about the centre of the gear by the angle $\theta_P$: the involutes that curl out clockwise from the base circle will be rotated by $\theta_P$ in an anticlockwise direction, and the ones that curl out anticlockwise will be rotated by $\theta_P$ clockwise. Now it is a matter of determining the value of $\theta_P$, and this can be done by looking at the polar parametric equation you were provided for the involute curve.

Let's determine the value of $t$ at the pitch circle, which we will call $t_P$. Using:

$$\rho = r_B \sqrt{1+t^2}$$

And noting that the pitch radius is $r_P = r_B/\cos{\phi}$, where $\phi$ is the pressure angle, then:

$$\frac{r_B}{\cos{\phi}} = r_B \sqrt{1+t_P^2}$$

And, by algebraic manipulation, it can be shown that:

$$t_P = \tan{\phi}$$

Note that $\phi$ is in radians. Now, $\theta_P$ can be determined using the second of the polar formulae:

$$\theta = t - \arctan{t}$$

And so,

$$\theta_P = \tan{\phi} -\phi$$

Rotate your profile curves by this angle in the appropriate directions, and that should solve the issue! (Note how $\theta_P$ drops to zero as the pressure angle decreases, aligning with the observation you made earlier.)

The best of luck with your gear generator! :)

  • 2
    $\begingroup$ Hi @SprocketsAreNotGears , Thank you very much. Boy, don't I feel dumb now! I went back through my pdfs and can see where I went wrong. I was working from a bad premise in my mind. I will be an easy fix from here. I'll post back when I put the project on gethub. Best, Dan. $\endgroup$
    – lakeweb
    Dec 23, 2016 at 17:10
  • $\begingroup$ I'd love to know what happens when the root dia is less than the base (undercut gear). The involute curve isn't defined below the base so what it looks like to me above is that lakeweb is constructing a tangent to the involute curve at the base, continued to the root. However I'm struggling to find a reference for this (I'm using Elements of Metric Gear Tech so far). That reference doesn't indicate what to do. Perhaps a new stackexchange question would be more constructive here? $\endgroup$
    – carveone
    Feb 20, 2017 at 12:24
  • 1
    $\begingroup$ Good question! If you ask the question, I'll happily answer it! $\endgroup$
    – Involute
    Feb 20, 2017 at 12:27
  • 1
    $\begingroup$ engineering.stackexchange.com/questions/13852/…. I may have gone overboard in the length of the question text but I like others to know as much as I've tried to learn :-) $\endgroup$
    – carveone
    Feb 20, 2017 at 13:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.