#ifndef GRAPHICSSUPPORT_H_INCLUDED
#define GRAPHICSSUPPORT_H_INCLUDED


#include "gravity_support.h"


typedef double          GRAPHICS_VECTOR [NDIMS+1];
typedef GRAPHICS_VECTOR GRAPHICS_MATRIX [NDIMS+1];

typedef struct {
          GRAPHICS_MATRIX M;    /* actual-to-user, for time TimeLastUpdated */
          GRAPHICS_VECTOR user_velocity;	/* in actual coordinates */
          double          TranslationDistance, BoostSpeed;

          double          TimeLastUpdated;
        } GRAPHICS_STATE;




extern void CreateIdentityMatrix (GRAPHICS_MATRIX Mresult);

extern void CreateTranslationMatrix (int d, double dist,
                                     GRAPHICS_MATRIX Mresult);

extern void CreateRotationMatrix (int d1, int d2, double angle,
                                   GRAPHICS_MATRIX Mresult);

extern void MultiplyMatrices (GRAPHICS_MATRIX M1, GRAPHICS_MATRIX M2,
                               GRAPHICS_MATRIX Mresult);

extern void MultiplyGraphicsVectorByMatrix
             (GRAPHICS_VECTOR V, GRAPHICS_MATRIX M, GRAPHICS_VECTOR Vresult);

extern void InvertOrthonormal (GRAPHICS_MATRIX M, GRAPHICS_MATRIX Mresult);

extern void AddGraphicsVectors (GRAPHICS_VECTOR V1, GRAPHICS_VECTOR V2,
                                 GRAPHICS_VECTOR Vresult);

extern void beep (void);




#endif /* GRAPHICSSUPPORT_H_INCLUDED */
