Hola a todos/as, estoy haciendo un programa para visualizar funciones matemáticas en 2d y 3d. El problema es que la escala de las coordenadas es demasiado grande y me gustaría poder variar la escala para poder representar mejor las gráficas. 1 ayuda por favor. Gracias.
Para cambiar la escala en JOGL (Java OpenGL) necesitas ajustar la matriz de proyección. El problema común es que las coordenadas del mundo (world coordinates) se mapean directamente a la pantalla, haciendo que la gráfica se vea muy grande o pequeña.
La solución principal es configurar una matriz de proyección ortográfica con los rangos deseados. En tu función de dibujo o en la inicialización del canvas, debes definir estos rangos usando glOrtho. Primero, asegúrate de que la matriz actual sea la de proyección. Luego, carga la matriz identidad y aplica glOrtho.
Por ejemplo, para una vista 2D donde quieras ver el área desde x=-10 a x=10 y y=-10 a y=10, y con un plano de recorte cercano y lejano típico, harías esto en tu método reshape o display: gl.glMatrixMode(GL2.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrtho(-10.0, 10.0, -10.0, 10.0, -1.0, 1.0); gl.glMatrixMode(GL2.GL_MODELVIEW); gl.glLoadIdentity();.
Para gráficos 3D, en lugar de glOrtho, podrías usar gluPerspective para proyección perspectiva y luego controlar la escala ajustando la posición de la cámara (con gluLookAt) o escalando la matriz de modelo-vista. Para escalar la geometría directamente, puedes usar glScalef(factor, factor, factor) en la matriz de modelo-vista, donde un factor menor que 1 reducirá el tamaño. Sin embargo, modificar la proyección es generalmente más limpio.
Una práctica moderna y recomendada es usar shaders y manejar matrices manualmente con bibliotecas como JOML (Java OpenGL Math Library). Esto te da control total. Puedes crear matrices de proyección ortográfica o perspectiva y pasarlas a un shader como un uniform. Con JOML, crearías una matriz de proyección con ortho2D o perspective y luego la enviarías a tu programa de shaders.
Recuerda que en OpenGL moderno (perfiles core) las funciones de matriz fija como glOrtho están obsoletas. Si estás usando un perfil core, debes usar shaders y manejar tus matrices. La mejor solución actual es utilizar JOGL con perfiles modernos y JOML para las operaciones matemáticas.