Gl Graph

Gl Graph Source of glcamera.h


#ifndef GL_CAMERA_H
#define GL_CAMERA_H
 
#include "glcoordinatesystem.h"
#include "glversion.h"
#include "Mat3f.h"
 
 
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glx.h>
#include <GL/glxext.h>
#include <GL/glut.h>
#include <string>
#include <iostream>
#include <sstream>
 
enum CameraView
{
    FRONT_VIEW,
    UP_VIEW,
    DOWN_VIEW,
    LEFT_VIEW,
    RIGHT_VIEW,
    BACK_VIEW,
    FREE_VIEW,
};
 
 
 
class GlCamera {
private:
 
    GlCoordinateSystem systemInit;
    GlCoordinateSystem systemInitMovement;
    GlCoordinateSystem system;
 
    float centerRotationZInit;
    float centerRotationZ;
 
    Vec3f scaleInit;
    Vec3f scale;
 
    unsigned int height;
    unsigned int width;
    float halfsizex;
    float halfsizey;
 
    Vec3f e1;
    Vec3f e2;
    Vec3f e3;
 
    bool isKeepProportionXY;
 
 
public:
 
    GlCamera();
    GlCamera(unsigned int width,unsigned int height);
 
    void setBestView(Vec3f &objectCenterPosistion, float size);
    void setBestView(CameraView view,Vec3f &objectCenterPosistion, float size);
 
    void setInitial();
 
 
    Vec3f getScale();
    void setScale(Vec3f s);
    void setScale(float s);
    void setScale(float sx,float sy,float sz);
    void multScale(float s);
    void multScale(float sx,float sy,float sz);
    void multScale(Vec3f s);
 
    void setKeepProportionXY(bool keepProportionXY);
 
    int getHeight();
    int getWidth();
    void setHeight(int h);
    void setWidth(int w);
    void setSize(int h, int w);
 
    void setViewport();
 
    void reset();
    GlCoordinateSystem * getSystem();
    GlCoordinateSystem * getSystemInitMovement();
    GlCoordinateSystem * getSystemInit();
    Vec3f getX();
    Vec3f getY();
    Vec3f getZ();
    Vec3f getPosition();
    void setPosition(Vec3f &pos);
 
    void startMovement();
    void updateMovementTranslation(Vec3f &translation);
    void setPosition(Vec3f &pos, Vec3f &translation);
    void setTranslation(Vec3f &translation);
 
    void setRotationCenter(float centerRotationZ);
    Vec3f getRotationCenter();
    void rotate(Mat3f & rotartionMat);
    void rotateX(float angle);
    void rotateY(float angle);
    void rotateZ(float angle);
 
    void setOpenglProjectionMatrixInternal();
    void setOpenglPojectionMatrix();
    void setOpenglModelViewMatrix();
 
    void pushMatrix();
    void popMatrix();
 
 
    float getXPixelSize();
    float getYPixelSize();
 
 
    float getWorldX(int pixelX);
    float getWorldY(int pixelY);
    float XPixelToGl(int x);
    float YPixelToGl(int y);
    float getGlHeight();
    float getGlWidth();
    friend std::ostream& operator<<(std::ostream& stream, GlCamera &m);
 
};
 
#endif