The closest thing I've found to help explain what I need is here in this question: Draw equidistant points on a spiral
However, that's not exactly what I want.
The spiral to draw is an archimedean spiral and the points obtained must be equidistant from each other.
Assuming a 2D case and an archimedean spiral centered around zero (a=0), so with equation . Successive lines are then apart, so to obtain a 'vertical spacing' of , set .
The length of the arc from the centre to a point at given angle is given by Wolfram, but his solution is difficult to working with. Instead, we can approximate the length of the arc (using a very rough for-large-theta approximation) to . Rearranging, , allowing us to determine what angles correspond to the desired 'horizontal spacing'. If this approximation is not good enough, I would look at using something like Newton-Raphson. The question you link to uses also uses an approximation, although not the same one.
Finally, recognising that polar coordinates translate to cartesian as follows: ; .
I get the following:
This is generated by the following MATLAB code, but it should be straight-forward enough to translate to C++ if this is what you actually need.
% Entered by user vertspacing = 1; horzspacing = 1; thetamax = 10*pi; % Calculation of (x,y) - underlying archimedean spiral. b = vertspacing/2/pi; theta = 0:0.01:thetamax; x = b*theta.*cos(theta); y = b*theta.*sin(theta); % Calculation of equidistant (xi,yi) points on spiral. smax = 0.5*b*thetamax.*thetamax; s = 0:horzspacing:smax; thetai = sqrt(2*s/b); xi = b*thetai.*cos(thetai); yi = b*thetai.*sin(thetai);