In the Math Stack Exchange post titled Get a curve through three points whose samples are evenly distributed, Ben Andersen asked about a way to map values to points in the plane based on the position of three points such that for you’d get , for you’d get and for you’d get . Furthermore the curve should be smooth. The original question has some other constraints, which I’ll ignore here. The following widget will let you experiment with the solution I proposed in my answer. Drag the red points to change the curve and its parametrization, and drag the white point to change the parametrer value.
If lie on a single line, with as the center between and , then it is easy to think of this as a simple constant-speed parametrization of a line. But if is not the center, things become more complicated. Even more so if the points are no longer collinear.
One way to parametrize a line based on three points which are not evenly spaced is to consider these three points as defining a projective scale. That means that some value results in the point at infinity for this line, while some other point on the line would correspond to . Only in case of equidistant defining points would these infinities coincide.
In order to generalize this to the case of non-collinear defining points, one needs to find a curve for which the concept of a projective scale makes sense and which can be fully defined by three points. Projective scales do make sense for points on a conic section, but a generic conic section is defined by five points. A special (and in some setups natural) kind of conic section that can be defined by three points would be a circular arc.
So that is what the above widget demonstrates: three points define a cirular arc, and the parameter which can be controlled with the slider at the top will choose a point on that arc, consistent with the stated constraints. It is possible to move the parameter outside the range to get an idea of the larger picture of this parametrization. To get a better feeling of how the points are distributed, the widget does draw a bunch of points in magenta which correspond to evenly distributed parameter values.
Experimenting with this widget it can be seen that for three collinear and equidistant points, the magenta points are evenly distributed. Moving the center closer to one of the endpoints makes the distances contract around that endpoint and expand around the other. Moving away from the segment spanned by and will result in a circular arc. Even if is in the middle of that arc, distances around that point will be larger than those around the endpoints. That is because the points aggregate towards which is a point on the circle.
There are other ways to choose a curve through three given points, and other ways to parametrize a curve in a way consistent with the requirements. For example, one could build a constant-speed parametrization of the line segment resp. circular arc, so that equal changes in parametrer values would result in equal arc length distances along the curve. Such a parametrization would have to change speed at , though. Other ways of parametrizing arcs are conceivable, but most of them would break down in e.g. a scenario where are collinear in this order. In that case, the circular arc becomes a line “segment” which passes through infinity. Dealing with infinities in a consistent way is one of the strengths of projective geometry, while most metric concepts like distances or angles become meaningless in such a special case.