Матрица проекции делает больше, чем масштабирование, верно?
Как я понял, матрица проекции масштабирует многоугольник в зависимости от того, насколько далеко или близко он находится от камеры. Хотя я могу быть совершенно не прав.Мой вопрос заключается в том, как матрица проекции «знает», чтобы показать стороны следующегокубКак движется камера, когда в матрице предполагается только «масштабировать» полигоны?
Обратите внимание на изображение, куб смещен на правую сторону экрана, перемещая камеру влево. Если камера перемещается в противоположном направлении (вправо) для центрирования куба, сторона куба исчезнет, как и ожидалось.
Вот мой матричный код:
private void createProjectionMatrix(){
float aspectRatio = (float) Display.getWidth() / (float) Display.getHeight();
float y_scale = (float) ((1f / Math.tan(Math.toRadians(FOV/2f))) * aspectRatio);
float x_scale = y_scale / aspectRatio;
float frustum_length = FAR_PLANE - NEAR_PLANE;
projectionMatrix = new Matrix4f();
projectionMatrix.m00 = x_scale;
projectionMatrix.m11 = y_scale;
projectionMatrix.m22 = -((FAR_PLANE + NEAR_PLANE) / frustum_length);
projectionMatrix.m23 = -1;
projectionMatrix.m32 = -((2 * NEAR_PLANE * FAR_PLANE) / frustum_length);
projectionMatrix.m33 = 0;
}