Skip to main content
2 of 3
added 268 characters in body; added 14 characters in body; deleted 26 characters in body
Mr.Wizard
  • 273.1k
  • 34
  • 595
  • 1.4k

Yaroslav Bulatov posted a great answer addressing this problem on StackOverflow.

Among several good illustrations the answer includes this undocumented option:

Method -> {Refinement -> {ControlValue -> (*radians*) }}

Alexey Popkov also gave an excellent analysis of the Plot algorithm.

His answer includes the apparently equivalent but cleaner (in degrees rather than radians as above):

Method-> {MaxBend -> (*degrees*) }

Example:

gearCurve[a_, b_, n_] :=
  ParametricPlot[
    {(a + 1/b Tanh[b Sin[n t]]) Cos[t],
     (a + 1/b Tanh[b Sin[n t]]) Sin[t]},
    {t, 0, 2 Pi},
    Axes -> False,
    Method-> {MaxBend -> 1}
  ];

gearCurve[10, 5, 38]

Mathematica graphics

Mr.Wizard
  • 273.1k
  • 34
  • 595
  • 1.4k