Para a visualização da trajetória e ângulos da aeronave foi criado
uma estrutura chamada
(OpenGL Viewport). Todos as funções e
procedimentos relacionados a parte de desenho estão separados aqui.
Nesta estrutura estão sendo guardados os dados de Camera, largura e
altura da janela, Janela correspondente e janela OpenGl, além das opções
de desenho relativos a cada instância desta estrutura.
Camera contém os dados relativos ao vetor de rotação
,
(Quaternion), este vetor é calculado com o auxilio de funções
trackball() e add_quats(), também temos, posição do observador em
relação ao vetor de rotação
, centro da camera, e
distância em relacao ao centro.
| float quat[4]; |
| float zoom;
float distance; float pos[3]; |
| float target[3]; |
| CAMERA *cam; |
| float width, height; |
| // glview Options |
|---|
| int showAircraft; |
| int showFlightPath; |
| int showAxes; |
| int showAircraftAxes; |
| int showGrid; |
| int showValues; |
| int targetAircraft; |
| int canRotate; |
| int perspective; |
| int pilotView; |
| GtkWidget *window; |
| GtkWidget *glarea; |
Interface para a utilização do GLView :
Cria novas viewports, se
, uma nova janela será crida
GLView *new_glview(int width, int height, GtkWidget *window);
void glview_close(GtkWidget *widget, GdkEventAny *event, gpointer data);
,
,
são arquivos de domino público e nos auxiliam
na implementação da rotação da camera.
,