Placing points equidistantly along an Archimedean spiral from parametric equations I have an Archimedean spiral determined by the parametric equations $x = r t *cos (t)$ and $y = r t *sin (t)$.
I need to place $n$ points equidistantly along the spiral. The exact definition of equidistant doesn't matter too much - it only has to be approximate.
Using just $r$, $t$ and $n$ as parameters, how can I calculate the coordinates of each equidistant point?
Any algorithm will suffice, as I will eventually be translating this to JavaScript. Thank you very much for your time.
I've already looked at some of answers to similar questions - there's this one, where the formula proposed in the question is already far beyond my understanding; and this one for which the answer seems to use a unit spiral rather than an absolute spiral. A more easy-to-understand solution would be very appreciated.
Thanks!
 A: I concur with Aretino's answer; I just wanted to dig in to the details a bit, in the hopes it illustrates some of the options and approaches we can utilise here.
Length of the curve $$\begin{cases} x(t) = r t \cos(t)\\y(t) = r t \sin(t)\end{cases}\tag{1}\label{1}$$from $t_0$ to $t_1$ is
$$s( t_0 ,\, t_1 ) = \int_{t_0}^{t_1} ds(t) \, dt$$
where
$$ds(t) = \sqrt{\left( \frac{d \, x(t)}{d \, t} \right)^2 + \left ( \frac{ d \, y(t) }{d \, t} \right)^2} $$
i.e.
$$\begin{array}{rl} s( t_0 ,\, t_1 ) = & \frac{r \, t_1}{2} \sqrt{ t_1^2 + 1 } - \frac{r \, t_0}{2} \sqrt{ t_0^2 + 1 } \; - \\
\; & \frac{r}{2} \log_e\left(t_0 + \sqrt{t_0^2 + 1}\right) - 
 \frac{r}{2} \log_e\left(\sqrt{t_1^2 + 1} - t_1\right)
\end{array}\tag{2}\label{2}$$
In practice, we'd like to know $t_1 = f( d, t_0 )$, i.e. the position $t_1$ on the curve that is distance $d$ from $t_0$ along the curve, fulfilling $s( t_0 , t_1 ) = d$. Unfortunately, there are no algebraic solutions for function $f(d, t_0)$.
Numerically, we can roughly approximate $s'(t_0 ,\, t_1) \approx (t_1^2 -t_0^2) \, r/2$. It is a bit off when $t_0$ is very small (near the center of the spiral), but gets better as $t_0$ and/or $t_1$ increase. (Since the spiral is tightest near the center, $t_0 = 0$, I suspect that humans tend to not perceive that error, which means this approximation should be okay for visual purposes.)
If we need a result to within a specific precision, we can use a binary search to find $t_1$ from $s(t_0 ,\, t_1) = d$, numerically. (This has $O(\log N)$ time complexity, and generally requires $N$ iterations (evaluations of $s(t_0 , t_1)$) to get $N$ bits (binary digits) of precision, so it is quite efficient, too.)
For approximately equally spaced (as measured along the curve) points, we can use $$\tau_n = \sqrt{\frac{2 \, d \, n}{r}}, \qquad 0 \le n \in \mathbb{Z}$$Then,
$$s'( \tau_n ,\, \tau_{n+1} ) = d \tag{3}\label{3}$$
which means that
$$\begin{cases}
x_n = x( \tau_n ) = r \sqrt{\frac{2 \, d \, n}{r}} \cos\left(\sqrt{\frac{2 d \, n}{r}} \right) \\
y_n = y( \tau_n ) = r \sqrt{\frac{2 \, d \, n}{r}} \sin\left(\sqrt{\frac{2 d \, n}{r}} \right) \end{cases}$$
gives us points $(x_n , y_n)$ that are spaced roughly $d$ apart, measuring along the curve.
If we substitute $k = 2 d / r$, Aretino's answer directly follows.
A: I can only repeat the suggestion I gave as a comment for a previous question: if you don't need absolute accuracy, points whose parameters are spaced proportionally to $\sqrt{n}$ will be fairly equidistant:
$$
x_n=r\sqrt{kn}\cos(\sqrt{kn}),
\quad
y_n=r\sqrt{kn}\sin(\sqrt{kn}),
$$
where $n=1, 2, \ldots$ and $k$ is a parameter you can set to adjust spacing.
