Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Camera.h"
- //------------------------------Camera Class--------------------------//
- //Reference: http://www.cubic.org/docs/camera.htm --------------------//
- //Camera Setup--------------------------------------------------------//
- //Global Variables//
- Matrix CameraMatrix1( 1, 0, 0, 0, //X,XX,XXX,XXXX (Identity Matrix)
- 0, 1, 0, 0, //Y,YY,YYY,YYYY
- 0, 0, 1, 0, //Z,ZZ,ZZZ,ZZZZ
- 0, 0, -20, 1); //W(x),WW(y),WWW(z),WWWW
- extern double spin; //Value parses to render.cpp to manage rotation
- int Direction = 0; //Value to move degrees of rotation
- //Camera Constructor//
- Camera::Camera()
- {
- }
- Camera::~Camera(){}
- //Set initial Camera Position//
- void Camera::setView()
- {
- glMatrixMode(GL_MODELVIEW); //Specify which matrix stack to use
- glLoadIdentity();
- //Create 4x4 Matrix, and add values for coordinates specified in the Constructor//
- float ViewMatrix[16] = {
- CameraMatrix1.x, CameraMatrix1.y, -CameraMatrix1.z, 0, //Matrix[0-3]
- CameraMatrix1.xx, CameraMatrix1.yy, -CameraMatrix1.zz, 0, //Matrix[4-7]
- CameraMatrix1.xxx, CameraMatrix1.yyy, -CameraMatrix1.zzz, 0, //Matrix[8-11]
- -(CameraMatrix1.x*CameraMatrix1.w + CameraMatrix1.xx * CameraMatrix1.ww //Matrix[12]
- +CameraMatrix1.xxx * CameraMatrix1.www),
- -(CameraMatrix1.y*CameraMatrix1.w + CameraMatrix1.yy * CameraMatrix1.ww
- +CameraMatrix1.yyy * CameraMatrix1.www), //Matrix[13]
- (CameraMatrix1.z*CameraMatrix1.w + CameraMatrix1.zz*CameraMatrix1.ww) +
- CameraMatrix1.zzz * CameraMatrix1.www, 1}; //Matrix[14-15]
- glLoadMatrixf(ViewMatrix);
- }
- //Move 'Camera' back and forth along the z axis//
- void Camera::CameraZoom(float z, float distance,float Direction) {
- CameraMatrix1.www += Direction * distance;
- }
- void Camera::CameraRotate(float y)
- {
- //Create Rotation Matrix
- Matrix RotationMatrix( cos(y), 0, sin(y), 0,
- 0, 1, 0, 0,
- -sin(y), 0, cos(y), 0,
- 0, 0, 0, 1);
- //Create Storage Matrix
- Matrix StorageMatrix1( 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0);
- glPushMatrix();
- //Multiply the rotation matrix by the Camera Matrix, and store it in storage Matrix
- StorageMatrix1.x = (CameraMatrix1.x * RotationMatrix.x) + (CameraMatrix1.xx * RotationMatrix.y) + (CameraMatrix1.xxx * RotationMatrix.z);
- StorageMatrix1.xx = (CameraMatrix1.x * RotationMatrix.xx) + (CameraMatrix1.xx * RotationMatrix.yy) + (CameraMatrix1.xxx * RotationMatrix.zz);
- StorageMatrix1.xxx = (CameraMatrix1.x * RotationMatrix.xxx) + (CameraMatrix1.xx * RotationMatrix.yyy) + (CameraMatrix1.xxx * RotationMatrix.zzz);
- StorageMatrix1.xxxx = (CameraMatrix1.x * RotationMatrix.xxxx) + (CameraMatrix1.xx * RotationMatrix.yyyy) + (CameraMatrix1.xxx * RotationMatrix.zzzz);
- StorageMatrix1.y = (CameraMatrix1.y * RotationMatrix.x) + (CameraMatrix1.yy * RotationMatrix.y) + (CameraMatrix1.yyy * RotationMatrix.z);
- StorageMatrix1.yy = (CameraMatrix1.y * RotationMatrix.xx) + (CameraMatrix1.yy * RotationMatrix.yy) + (CameraMatrix1.yyy * RotationMatrix.zz);
- StorageMatrix1.yyy = (CameraMatrix1.y * RotationMatrix.xxx) + (CameraMatrix1.yy * RotationMatrix.yyy) + (CameraMatrix1.yyy * RotationMatrix.zzz);
- StorageMatrix1.yyyy = (CameraMatrix1.y * RotationMatrix.xxxx) + (CameraMatrix1.yy * RotationMatrix.yyyy) + (CameraMatrix1.yyy * RotationMatrix.zzzz);
- StorageMatrix1.z = (CameraMatrix1.z * RotationMatrix.x) + (CameraMatrix1.zz * RotationMatrix.y) + (CameraMatrix1.zzz * RotationMatrix.z);
- StorageMatrix1.zz = (CameraMatrix1.z * RotationMatrix.xx) + (CameraMatrix1.zz * RotationMatrix.yy) + (CameraMatrix1.zzz * RotationMatrix.zz);
- StorageMatrix1.zzz = (CameraMatrix1.z * RotationMatrix.xxx) + (CameraMatrix1.zz * RotationMatrix.yyy) + (CameraMatrix1.zzz * RotationMatrix.zzz);
- StorageMatrix1.zzzz = (CameraMatrix1.z * RotationMatrix.xxxx) + (CameraMatrix1.zz * RotationMatrix.yyyy) + (CameraMatrix1.zzz * RotationMatrix.zzzz);
- //Update camera Matrix with new variables
- glTranslatef(0,0,20);
- CameraMatrix1.x = StorageMatrix1.x;
- CameraMatrix1.xx = StorageMatrix1.xx;
- CameraMatrix1.xxx = StorageMatrix1.xxx;
- CameraMatrix1.xxxx = StorageMatrix1.xxxx;
- CameraMatrix1.y = StorageMatrix1.y;
- CameraMatrix1.yy = StorageMatrix1.yy;
- CameraMatrix1.yyy = StorageMatrix1.yyy;
- CameraMatrix1.yyyy = StorageMatrix1.yyyy;
- CameraMatrix1.z = StorageMatrix1.z;
- CameraMatrix1.zz = StorageMatrix1.zz;
- CameraMatrix1.zzz = StorageMatrix1.zzz;
- CameraMatrix1.zzzz = StorageMatrix1.zzzz;
- glTranslatef(0,0,-20);
- glPopMatrix();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement