J'essaie de définir une bonne distance pour la vue complète d'un disque de particules et dans le même temps avoir une échelle de ligne valide qui représente la valeur actuelle de l'échelle du disque en tant que fonction de zoomer avec la souris.OpenGL - régler une bonne distance sans glScalef
La scène a les paramètres suivants:
w_width = 600;
w_height = 600;
g_nearPlane = 0.1f;
g_farPlane = 1000.0f;
je fais graphiques initialisation de la scène 3D avec l'échantillon de code suivant:
// Reset line scale value
lineScaleValue = 100.0f;
// Initialize View
glViewport(0, 0, w_width, w_height);
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix
// Perspective with angle set to 45 degrees
gluPerspective(45.0f, (float) w_width/w_height, g_nearPlane, g_farPlane);
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glLoadIdentity(); // Reset The Modelview Matrixi
gluLookAt (0.0, 0.0, 3, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glScalef(0.03f, 0.03f, 0.03f);
Les valeurs ci-dessus pour gluLookAt
et glScalef
ont été choisis environ, c'est-à-dire manuellement sans avoir un calcul précis.
Je voudrais avoir seulement une vue complète pour le disque (particules blanches). Pour cela, je connais le maximum et le minimum dans le plan (x, y) du disque: -25 < x <25
et -22 < y < 22
.
de ce poste set z good distance, je pouvais le faire (avec FOV/2 = 45 degrés):
z_distance = 25*tan(pi/4) + dist = 50
avec dist = 25
être en face du disque.
Alors puis-je faire directement dans mon exemple de code (au lieu de
gluLookAt (0.0, 0.0, 3, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glScalef(0.03f, 0.03f, 0.03f);
):
gluLookAt (0.0, 0.0, 50, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
?
Merci
Quelles sont les dimensions exactes du disque et à quelle position de l'espace mondial le dessinez-vous? – derhass
les dimensions exactes du disque sont -25
youpilat13