Graphics 线到圆变换

Graphics 线到圆变换,graphics,formula,linear-algebra,transformation,game-development,Graphics,Formula,Linear Algebra,Transformation,Game Development,我正在编写一个游戏,非常感谢大家的帮助。我将直截了当地说:我将使用什么样的公式将有限线上的点转换为原点(0,0)的圆 例如: 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

我正在编写一个游戏,非常感谢大家的帮助。我将直截了当地说:我将使用什么样的公式将有限线上的点转换为原点(0,0)的圆

例如:

     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.
我一直面临的问题是,转换依赖于点的数量(可能将它们转换为正常n边多边形的点?),而以我有限的知识,我不知道如何实现这一点。提前感谢您至少阅读了这个问题


编辑:我想说,我不确定是否存在这种转换,因为省略了第一点左侧的值和最后一点右侧的值,因此数据丢失。

矩阵转换是线性的(或在齐次坐标中是线性的)。例如,这意味着

((p1 + p2)/2)M = ((p1 M) + (p2 M)) / 2
换句话说,
p1
p2
的中间点被转换为
p1
p2
转换的中间点

如果有4个共线点,则矩阵无法将它们映射到非共线点

如果您正在寻找一个通用映射,则需要更复杂的公式。一个易于实现(对于小尺寸的输入)且具有非常好的特性的

在这种情况下,您可以指定任意点列表
p[i]
,并为每个点指定目的地
Q[i]
。最终得到一个平滑函数
T
,该函数将任何点映射到另一点,并且所有指定点的
T(P[i])=Q[i]

如果源点不是一般的,而是在规则网格上,那么简单的三次样条线网络可以为您提供一个很好的平滑插值器(显然这是大多数图像变形软件中使用的)