【发布时间】:2015-05-08 11:09:19
【问题描述】:
我正在使用JOGL 和Box2d 编写一个简单的基于物理的游戏。
但我正在努力创建一个View (LookAt) 矩阵。我试图避免将任何数学库依赖项添加到项目中。
谁能分享他们如何创建View 矩阵的示例?所以我可以修改以使用我的自定义 Matrix4f 类。
这是我设置正交投影矩阵的方法..
public Matrix4f ortho(float left, float right, float top, float bottom, float zfar, float znear) {
return new Matrix4f(new float[][] {
new float[] { 2 / (right - left), 0, 0, -((right + left) / (right - left)) },
new float[] { 0, 2 / (top - bottom), 0, -((top + bottom) / (top - bottom)) },
new float[] { 0, 0, -2 / (zfar - znear), -((zfar + znear) / (zfar - znear)) },
new float[] { 0, 0, 0, 1 },
});
}
这是我的自定义 Matrix4f 类..
public class Matrix4f {
public float[] values;
public Matrix4f() {
this.values = new float[16];
}
public Matrix4f(float[] values) {
this.values = values;
}
public Matrix4f(float[][] values) {
load(values);
}
public void load(float[][] values) {
this.values = new float[] {
values[0][0], values[0][1], values[0][2], values[0][3],
values[1][0], values[1][1], values[1][2], values[1][3],
values[2][0], values[2][1], values[2][2], values[2][3],
values[3][0], values[3][1], values[3][2], values[3][3]
};
}
public float get(int x, int y) {
int position = x + (y * 4);
return this.values[position];
}
public float[] getValues() {
return this.values;
}
}
【问题讨论】:
-
也许this question 可以提供帮助。
-
如果使用opengl,为了兼容性,一定要在z平移上使用正点积。