You can solve this problem accurately and quickly for an arbitrary rational curve, translating it into a rational Bezier curve, and then applying the Castellau algorithm. This is easy to do for conics such as circles and hyperbolas:
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/NURBS/RB-conics.html
Once you have a rational Bezier curve to redo the curve into discrete steps, you should use the Castellau algorithm. This algorithm uses dynamic programming and is very fast and numerically reliable. If you have not heard about this before, I would recommend learning about it, since this is a pretty smart algorithm:
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/de-casteljau.html
There are several ways you can use the Castellau algorithm to obtain a discrete sample of your curve. Firstly, you can simply naively apply it to evaluate a curve along your parameter space with uniform increments. If the increments should be evenly distributed, you need to change the interpolation coordinates to units of arc length:
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/curves/continuity.html#Arc-Length-Parameterization
The refinement of this method is to instead transform into a parameterization of the chord length, which approaches the parameterization of the length of the arc over time:
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/PARA-chord-length.html
Finally, if you need a lot of points on the curve, you can simply apply the de Castellau algorithm as an angular cutting procedure to improve the vector of the starting control point in a limited polygon, which arbitrarily approximately matches your desired curve to a user-defined tolerance:
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-sub.html
These notes were taken from Professor K.K. SchΓΆne course knowledge, which is an excellent resource for exploring splines and partition surfaces:
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/