I am programming a game at the moment and would really appreciate some help. I'll get straight to the point: What kinda of formula would I use to translate points on a finite line to a circle of origin (0, 0)?
Example:
Matrix A contains points: (0, 2), (1, 2), (2, 2), ( 3, 2)
Matrix T is the standard transformation matrix (an equation is equally as helpful)
Matrix B is the transformation where AT = B so that B contains points:
(0, 2), (2, 0), (0, -2), (-2, 0)
Where vector (0, 2) is the eigenvector.
The problem I've been having is that the transformation relies on the number of points (perhaps transforming them to the points of a normal n-gon poylgon?) and with my limited knowledge, I do not know how to approach this. Thank you in advance for at least reading this problem.
Edit: I would like to say that I am unsure if there is even a kind of transformation for this as values left of the first point and values right of the last point are omitted, thus data is lost.
A matrix transformation is linear (or linear in homogeneous coordinates). This means for example that
in other word the middle point of
p1
andp2
is transformed to the middle of the transformation ofp1
andp2
.If you have 4 collinear points no matrix can map them in points that are not collinear.
If you're looking for a general mapping more complex formulas are needed. One that is easy to implement (for inputs of small size) and with very nice properties a radial basis function (RBF) interpolator.
In that case you can specify an arbitrary list of points
P[i]
and specify the destination for each of themQ[i]
. You end up with a smooth functionT
that maps any point to another point and for whichT(P[i]) = Q[i]
for all the specified points.If the source points are instead not general but on a regular grid then a simple cubic spline net can provide you with a nice smooth interpolator (apparently this is what is used in most image morphing software).