How about a method which is both more accurate and faster? This is
provided by GeographicLib. Comparative timings (C++
implementations on a 2.66GHz Intel processor, using g++) are:
Vincenty direct: 1.11 us
GeographicLib::Geodesic::Direct: 0.88 us
GeographicLib::GeodesicLine::Position: 0.37 us
GeographicLib::GeodesicLine::ArcPosition: 0.31 us
The accuracy of Vincenty's formulas is about 0.1 mm, while the accuracy
of the GeographicLib algorithms about 0.01 um. Geodesic::Direct does a
straight solution of the direct problem. It's somewhat faster than
Vincenty because it's non-iterative and because it uses Clenshaw
summation to evaluate the trigonometric series. GeodesicLine::Position
allows you to calculate many points along a single geodesic about
2.4 times faster. If you merely want some
points on a geodesic which are approximately equally spaced (e.g., for plotting it), you can use
GeodesicLine::ArcPosition and shave a little extra time off the
computation. You can reduce the time still further by reducing the order of the
series used by GeographicLib from 6 to 3 by compiling with
-DGEOGRAPHICLIB_GEODESIC_ORDER=3
The accuracy is then 0.04 mm, i.e.,
comparable to, but slightly better than, Vincenty.
A cookbook recipe for solving the equivalent problem on a sphere is
given by the Wikipedia entry on great-circle navigation.