将角定义的菱形转换为另一个菱形
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。
如果您有一个由四个角定义的菱形形状的 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。