【发布时间】:2013-11-14 18:40:32
【问题描述】:
我想制作一个专注于矢量的 2D 游戏引擎。我还想使用转换矩阵来平移、旋转和缩放我想以某种方式加载的精灵。
如果有人想知道,我正在尝试在没有外部库的情况下执行此操作。
有谁知道我在这方面的方向是否正确?将变换应用于图像坐标?我从矩阵中输入和输出的数据到底是什么?我了解矩阵是什么,但我在这方面的经验有限,我真的不知道下一步。
现在有点抽象,我希望我能解释得更好。
All my source code:mainComponent、vector2f、matrix3f 和变换。
到目前为止的类中的概述:mainComponent 是相当明显的,现在只是 Main()。 Vector2f 具有用于 2D 向量(浮点数)的基本数学、getter 和 setter。 Matrix3f 具有平移、旋转和缩放矩阵的初始化以及乘法方法。而且我不知道 Transform 到底在做什么,我只知道在那里,我的矩阵被设置,接受它们的输入并相乘。虽然我可以制作一个可能是我想要的基本 BufferedImage 像素数组的东西,但我真的不知道该怎么做才能将它附加到屏幕上的某个东西上。
下一个问题是加载精灵:/
【问题讨论】:
-
将特征(例如顶点)的原始坐标乘以变换矩阵,得到特征的新坐标。
-
对,所以我必须把我的坐标变成一个 3x1 齐次矩阵,这样才能相乘? (反之亦然)
-
是的,没错。通常只使用矩阵作为坐标,无需转换。
-
您也可以一次将所有积分相乘。因此,如果您有 256x256 个点,您将得到变换矩阵 (3x3) 与点矩阵 (3x65536) 的矩阵乘法。这将产生一个新的点矩阵,其中每一列都是您的新点位置。
标签: java vector matrix 2d game-engine