我想做一些 2D 绘图,因此想实现一些矩阵转换。凭借我的浅数学背景,我试图了解如何在 C# 中做到这一点(任何其他 oop 语言显然都会这样做)。
我所读到的只是解释我们需要使用 3x3 矩阵才能应对翻译。因为你不能用乘法进行翻译。但这是我们创建转换的矩阵的乘法。所以我们使用类似的东西:
{ x1, x2, tx }
{ y1, y2, ty }
{ 0, 0, 1 }
我理解第三列的意思,但为什么我们需要第三行?在单位矩阵以及旋转、缩放或旋转中,最后一行是相同的。是否有我尚未达到的需要它的操作?是因为某些语言(Java)在“平方维度”数组中表现更好吗?如果是这样,我可以在 C# 中使用 3 列和 2 行(因为锯齿状数组也可以正常工作或更好)。
例如,对于旋转+平移,我有一个这样的矩阵
{ cos(rot)*x1, (-sin(rot))*x2, tx }
{ sin(rot)*y1, cos(rot)*y2, ty }
{ 0, 0, 1 }
不需要最后一行。