将一个三角形转换为另一个三角形

将一个三角形转换为另一个三角形,第1张

将一个三角形转换为另一个三角形

我假设您在这里谈论2D。仿射变换矩阵中有9个值:

    | 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个点不是共线时,它将具有唯一的解决方案。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5013748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存