gpt4 book ai didi

java - OpenGL - 矩阵运算

转载 作者:行者123 更新时间:2023-11-30 04:16:19 25 4
gpt4 key购买 nike

假设我有 2 个矩阵:

MatrixA = translation1 * scale1 * rotation1
MatrixB = translation2 * rotation2 * translation3

MatrixA * MatrixB 是否等于 translation1 *scale1 *rotation1 * Translation2 *rotation2 * Translation3 ?或者附近有什么其他东西?

事实上,我只是想知道是否可以通过仅使用 1 个矩阵然后串联数学运算来避免将矩阵相乘并节省一些 CPU。

因为我计划制作一个基于 LibGDX 构建的小型自定义 2D 引擎,其中包括类似于 Android SDK 中的图形组件 API。无论如何,会有一些组件,那些在容器中的组件,当它们的 parent 移动时需要移动。所以我需要这些叠瓦算术。我知道可以使用矩阵,但由于它应该在移动设备上运行,我不希望它太慢。

最佳答案

你确实是对的。您可以通过将一系列矩阵相乘来避免拥有多个矩阵。但是,请记住,矩阵乘法是非交换的,这意味着更改运算顺序将产生两个不同的矩阵。例如:

matrixTranslate * matrixRotate 将导致对象围绕一个点旋转,同时:

matrixRotate * matrixTranslate 将导致对象绕其自身的中心轴旋转。矩阵相乘的顺序没有错误,但是您必须注意不同的结果。

话虽如此,在你的问题中:

MatrixA = translation1 * scale1 * rotation1
MatrixB = translation2 * rotation2 * translation3
MatrixC = MatrixA * MatrixB

这是 5 次矩阵乘法运算。如果您要将它们全部链接在一起:

MatrixC = translation1 * scale1 * rotation1 * translation2 * rotation2 * translation3

您还将执行 5 次矩阵乘法运算。可以看到,实际操作并没有什么区别。从技术上讲,您分配了一个额外的矩阵,根据您的实现和频率,它可能会产生影响,但就数学运算而言,它是相同的。

关于java - OpenGL - 矩阵运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18297020/

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