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

Transform rhombus defined by corners to another rhombus

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

我的想法是,您可以沿着边找到 4 个向量,使得 ||b||/||side_b|| = ||c||/||side_c||, ||a||/||side_a|| = ||b||/||side_b||(a,b)(b,c)p 处交叉。

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

但是,我想要最有效的方法。

所以一个菱形可以由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)。

所以只需用您想要的尺寸填充矩阵 B,并用您开始的值填充矩阵 A。