将角定义的菱形变换为另一个菱形

时间:2015-06-08 07:15:29

标签: graphics transform

如果你有一个菱形的2D模型,由它的四个角定义,并且你想将它转换成另一个菱形的形状,给它4个角,你会怎么做?你能用转换矩阵来做吗?

我的思路是你可以找到两侧的4个向量,||b||/||side_b|| = ||c||/||side_c||, ||a||/||side_a|| = ||b||/||side_b||(a,b)(b,c)p交叉。

          a
   -------->-------
  |                |
b ^        p       ^ c
  |                |
  |                |
   -------->-------
           b

但是,我希望以最有效的方式。

1 个答案:

答案 0 :(得分:2)

因此菱形可以由2个向量定义;在X轴上缩放,在y轴上缩放。因此,将一个正方形(我们将1x1维度)缩放为菱形的矩阵看起来像这样:(对于粗矩阵而言很抱歉!下划线用于间距)

| X1_1 Y1_1 ___ 0 |

| X1_2 Y1_2 ___ 0 | =矩阵A

| ___ 0 ___0 ___ 1 |

我们希望从这个方面走向一些新的维度,如下所示:

| X2_1 Y2_1 ___ 0 |

| X2_2 Y2_2 ___ 0 | =矩阵B

| ___ 0 ___0 ___ 1 |

我们希望将矩阵A转换为矩阵B.我将命名此转换T.因此:

矩阵A *变换T =矩阵B。

做一些基本的矩阵改组,......

变换T =矩阵B *逆(矩阵A)。

所以只需用你想要的尺寸填充Matrix B,然后用你开始的值填充矩阵A.