我想进行一些二维绘图,因此想要实现一些矩阵变换。由于我的数学背景有限,我正在尝试理解如何在C#(或任何其他面向对象的语言)中进行这样的操作。
我所读到的都是解释说我们需要使用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 }
不需要最后一行。