| a1 a2 a3 |A = | a4 a5 a6 | | a7 a8 a9 |
有3个顶点输入
x1,
x2和
x3,当其转化应该成为
y1,
y2,
y3。然而,由于我们在齐次坐标的工作,应用
A到
x1不一定给
y1-它给人的倍数
y1。所以,我们也有未知的乘法器
k1,
k2以及
k3,用公式:
A * x1 = k1 * y1A * x2 = k2 * y2A * x3 = k3 * y3
每一个都是一个向量,因此我们实际上有12个未知数中的9个方程,因此解决方案将受到约束。如果我们要求
a7=0,
a8=0以及
a9=1,然后将溶液将是唯一的(这种选择是自然的,因为这意味着如果输入点为(
x,
y,1),则输出点总是有齐次坐标1,因此所得到的变换是只是2x2转换和翻译)。
因此,这将等式简化为:
a1 * x11 + a2 * x12 + a3 = k1 * y11a4 * x11 + a5 * x12 + a6 = k1 * y12 1 = k1a1 * x21 + a2 * x22 + a3 = k2 * y21a4 * x21 + a5 * x22 + a6 = k2 * y22 1 = k2a1 * x31 + a2 * x32 + a3 = k3 * y31a4 * x31 + a5 * x32 + a6 = k3 * y32 1 = k3
因此,
k1=
k2=
k3=1。将其插入并转换为矩阵形式可得出:
| x11 x12 1 0 0 0 | | a1 | | y11 || x21 x22 1 0 0 0 | | a2 | | y21 || x31 x32 1 0 0 0 | * | a3 | = | y31 || 0 0 0 x11 x12 1 | | a4 | | y12 || 0 0 0 x21 x22 1 | | a5 | | y22 || 0 0 0 x31 x32 1 | | a6 | | y32 |
解决此6x6方程组可得出仿射变换矩阵
A。当且仅当源三角形的3个点不是共线时,它将具有唯一的解决方案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)