наблюдения для: Calculating world coordinates from camera coordinatesВыполнение умножения матриц в обратном
Я умножая 2D вектор с матрицей трансформации (модель-представление матрицы OpenGL), чтобы получить мировые координаты с координатами моей камеры.
я этот расчет, как это:
private Vector2f toWorldCoordinates(Vector2f position) {
glPushMatrix();
glScalef(this.zoom, this.zoom, 1);
glTranslatef(this.position.x, this.position.y, 0);
glRotatef(ROTATION, 0, 0, 1);
ByteBuffer m = ByteBuffer.allocateDirect(64);
m.order(ByteOrder.nativeOrder());
glGetFloatv(GL_MODELVIEW_MATRIX, m);
float x = (position.x * m.getFloat(0)) + (position.y * m.getFloat(4)) + m.getFloat(12);
float y = (position.x * m.getFloat(16)) + (position.y * m.getFloat(20)) + m.getFloat(28);
glPopMatrix();
return new Vector2f(x, y);
}
Теперь я хочу, чтобы это сделать наоборот: вычислить координаты камеры для позиции в мире. Как я могу отменить этот расчет?
Если я читаю это правильно, вам нужно только вычислить обратную матрицу преобразования и применить ее к вашим мировым координатам. – andand