【发布时间】:2012-05-22 09:08:02
【问题描述】:
我想做一些 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 }
不需要最后一行。
【问题讨论】:
-
@HighPerformanceMark 我在这里试图解释我不理解这些概念的哪一点。是的,这是我开始阅读的前两份文件。
标签: matrix 2d homogenous-transformation