Subversion Repositories gelsvn

Rev

Rev 408 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "Mat4x4d.h"

namespace CGLA 
{

        Mat4x4d rotation_Mat4x4d(Axis axis, float angle)
        {
                Mat4x4d m;

                switch(axis)
                        {
                        case XAXIS:
                                m[0][0] = 1.0;
                                m[1][1] = cos(angle);
                                m[1][2] = sin(angle);
                                m[2][1] = -sin(angle);
                                m[2][2] = cos(angle);
                                m[3][3] = 1.0;
                                break;
                        case YAXIS:
                                m[0][0] = cos(angle);
                                m[0][2] = -sin(angle);
                                m[2][0] = sin(angle);
                                m[2][2] = cos(angle);
                                m[1][1] = 1.0;
                                m[3][3] = 1.0;
                                break;
                        case ZAXIS:
                                m[0][0] = cos(angle);
                                m[0][1] = sin(angle);
                                m[1][0] = -sin(angle);
                                m[1][1] = cos(angle);
                                m[2][2] = 1.0;
                                m[3][3] = 1.0;
                                break;
                        }

                return m;
        }

        Mat4x4d translation_Mat4x4d(const Vec3f& v)
        {
                Mat4x4d m;

                m[0][0] = 1.0;
                m[1][1] = 1.0;
                m[2][2] = 1.0;
                m[3][3] = 1.0;
  
                m[0][3] = v[0];
                m[1][3] = v[1];
                m[2][3] = v[2];
  
                return m;
        }

        Mat4x4d scaling_Mat4x4d(const Vec3f& v)
        {
                Mat4x4d m;

                m[0][0] = v[0];
                m[1][1] = v[1];
                m[2][2] = v[2];
                m[3][3] = 1.0;
   
                return m;
        }

        Mat4x4d perspective_Mat4x4d(float d)
        {
                Mat4x4d m;
  
                /* Eye at the origin, looking down the negative z axis */

                m[0][0] = 1.0;
                m[1][1] = 1.0;
                m[2][2] = 1.0;
                m[3][2] = -1.0/d;
   
                return m;
        }
}