Я впервые пытаюсь сделать 3D движок. У меня проблемы с проецированием очков. Используя матрицу перспективы, я получаю некоторую перспективу, но она заставляет мои точки смещаться (все еще должно быть в центре экрана). Любая помощь приветствуется.
public static Matrix getPerspectiveMatrix() {
double far = 100;
double near = 0.1;
return new Matrix(
new double[][] {
{1,0,0,0},
{0,1,0,0},
{0,0,-((far+near)/(far-near)),-((2*far*near)/(far-near))},
{0,0,1,0}
}
);
}
public static Point3D transformPoint(Point3D scale, Point3D rotation, Point3D translation, Point3D
point) {
Matrix m = Matrix.mul(Matrix.getTransformationMatrix(scale, rotation, translation),
point.toMatrix());
m.getArray()[0][0] = m.getArray()[0][0] / m.getArray()[3][0];
m.getArray()[1][0] = m.getArray()[1][0] / m.getArray()[3][0];
m.getArray()[2][0] = m.getArray()[2][0] / m.getArray()[3][0];
return m.toPoint3D();
}