我编写了一个可以用来玩转变换矩阵的网络程序。它允许预设类型和自定义类型。
Play with it online 或grab the source。
应该很容易使用数字并立即看到它如何影响房屋绘图。查看在线提供的代码以确定它在做什么,您应该能够理解发生了什么。
如果您遇到问题,请意识到 3×3 矩阵只是简单地乘以房屋形状中的每个顶点(X 和 Y 坐标)。矩阵与顶点的乘法(我们现在将其称为向量)和变换矩阵看起来像这样......
1 0 0 1
0 1 0 * 2
0 0 1 0
左边是一个identity matrix(一个不影响向量的幂等矩阵)和一个1、2、0的向量(假设它映射到上面提到的程序中的位置X1和Y2并忽略最终0)。
Matrix multiplication 可以这样可视化...
a b c x a * x + b * y + c * z
d e f + y = d * x + e * y + f * z
g h i z g * x + h * y + i * z
因此,在我们的示例中,这将是...
1 0 0 1 1 * 1 + 0 * 2 + 0 * 0
0 1 0 * 2 = 0 * 1 + 1 * 2 + 0 * 0
0 0 1 0 0 * 1 + 0 * 2 + 1 * 0
做数学运算,我们得到最终的向量......
1
2
0
既然我们说我们的单位矩阵不应该修改值,我们可以在上面看到结果向量与原始向量匹配的情况。
为了进一步解释,请考虑何时需要平移向量。假设我们想将房子沿 X 轴平移5 像素。我们想从单位矩阵开始,但将右上角的数字更改为5,并在向量1 中添加额外的维度(您将简要了解原因)。
1 0 5 1 1 * 1 + 0 * 2 + 5 * 1
0 1 0 * 2 = 0 * 1 + 1 * 2 + 0 * 1
0 0 1 1 0 * 1 + 0 * 2 + 1 * 1
我们再做一次数学......
6
2
1
我们可以看到第一个数字(坐标中的 X)已沿 X 轴平移了5。在上面链接的程序中尝试一下。
我们创建第三个值1 的原因是在执行数学运算时考虑了翻译。如果是0,它将被忽略,因为任何数字乘以0 都会得到0。
如果您仍然遇到问题,请查看在线视频(例如this one),它可以帮助您以更直观的方式进行解释。
请记住:几乎任何人都可以驾驶汽车,而且几乎任何人都可以学习这一点,尽管任何人自我评估对数学的理解很差。坚持下去:坚持是关键。祝你好运。