Pregunta

Tengo una transformación establecido en Opengl como esto:

glPushMatrix(); 
glTranslated(pntPos.X(), pntPos.Y(), pntPos.Z());
glRotated(dx, 1, 0, 0);
glRotated(dy, 0, 1, 0);
glRotated(dz, 0, 0, 1);

//I use this to Render a freely placeable textbox in 3d 
//space which is based on the FTGL-Toolkit [1] (for TTF support).

m_FTLayout.Render(m_wcCaption, m_iCaptionSize);
glPopMatrix();

Esto funciona como se esperaba.

Sin embargo, me gustaría calcular el 3d-wich boundingBox limita mi texto en el espacio de las palabras. Sé que las coordenadas de este cuadro delimitador relativa a mi GL-transformación.

Pero tengo un tiempo difícil calcular sus coordenadas reales de estos. ¿Me puede dar una idea sobre cómo recuperar las coordenadas del Mundo respectivo de los cuatro vértices en el cuadro de límite?

[1] http://sourceforge.net/projects/ftgl/

¿Fue útil?

Solución

La forma más sencilla es preguntar al GL lo que su matriz modelview actual es glGetFloatv(GL_MODELVIEW_MATRIX, m), y transformar sus vértices del cuadro delimitador de la matriz resultante.

             m[0]  m[4]  m[8]  m[12]     v[0]
             m[1]  m[5]  m[9]  m[13]     v[1]
     M(v) =  m[2]  m[6]  m[10] m[14]  X  v[2]
             m[3]  m[7]  m[11] m[15]     v[3]

Esto le dará la posición homogénea vista espacio-4-D de su vértice.

O, se podría calcular el modelview a sí mismo, basado en las matemáticas que está disponible en las páginas del manual de glTranslated y glRotated

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top