gpt4 book ai didi

opengl - 2D 矩阵到 3D 矩阵

转载 作者:行者123 更新时间:2023-12-02 03:23:23 28 4
gpt4 key购买 nike

我将 2D 变换存储在普通的 3x3 矩阵中。我怎样才能将其重新格式化为矩阵,以便将其推到 OpenGL 上以转换正交形状、多边形等。

我该如何放置这些值才能保留转换?

(在一个不相关的注释中,是否有一种快速方法来反转 3x3 矩阵?)

最佳答案

关于变换矩阵的一些解释:除最后一列外,所有列都描述了当前坐标系基础上新坐标系的方向。所以第一列是新坐标系的X向量,从当前来看,第二列是新的Y向量,第三列是新的Z向量。到目前为止,这仅涵盖了旋转。最后一列用于相对偏移。最后一行和最右下角的值用于齐次变换。最好保留最后一行 0, ..., 0, 1

在您的情况下,您缺少 Z 值,因此我们只需在其中插入恒等变换,以便传入值保持原样。

假设这是你的原始矩阵:

xx xy tx

yx yy ty

0 0 1

该矩阵缺少 Z 变换。插入恒等式意味着:将 Z 保留原样,并且不与其余部分混合。所以 ·z = z· = 0,除了 zz = 1。这给出了以下矩阵



xx xy 0 tx

yx yy 0 ty

0 0 1 0 ←

0 0 0 1

如果 OpenGL 版本低于 3 核配置文件,您可以使用 glMultMatrix 将其应用到当前的 OpenGL 矩阵堆栈上。请注意,OpenGL 按列主序对矩阵进行编号,即数组中的索引如下所示(十六进制数字)

0 4 8 c
1 5 9 d
2 6 a e
3 7 b f

这与通常的 C 表示法相反

0 1 2 3
4 5 6 7
8 9 a b
c d e f

无论如何,使用 OpenGL-3 核心及更高版本,您都必须自己进行矩阵管理和操作。

编辑问题的第二部分

如果通过求逆1意味着对于给定的矩阵M求出矩阵M^-1,使得M^1 * M = M * M^1 = 1。对于 3×3 矩阵,行列式求逆方法比高斯约当消元法需要更少的运算,因此是最有效的方法。对于 4×4 矩阵,行列式求逆已经比其他方法慢了。 http://www.sosmath.com/matrix/inverse/inverse.html

如果你知道你的矩阵是正交的,那么你可以转置除底行和最右列之外的左上部分,并取反最右列的符号,除了最右下的元素。这利用了正交矩阵 M^-1 = M^T 的事实。

关于opengl - 2D 矩阵到 3D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971898/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com