Subversion Repositories gelsvn

Rev

Rev 5 | Rev 408 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 12
Line 1... Line 1...
1
#include "Mat4x4d.h"
1
#include "Mat4x4d.h"
2
 
2
 
3
namespace CGLA 
3
namespace CGLA 
4
{
4
{
5
 
5
 
6
	Mat4x4d rotation_Mat4x4d(Axis axis, float angle)
6
  Mat4x4d rotation_Mat4x4d(Axis axis, float angle)
7
	{
7
  {
8
		Mat4x4d m;
8
    Mat4x4d m;
9
 
9
 
10
		switch(axis)
10
    switch(axis)
11
			{
11
      {
12
			case XAXIS:
12
      case XAXIS:
13
				m[0][0] = 1.0;
13
	m[0][0] = 1.0;
14
				m[1][1] = cos(angle);
14
	m[1][1] = cos(angle);
15
				m[1][2] = sin(angle);
15
	m[1][2] = sin(angle);
16
				m[2][1] = -sin(angle);
16
	m[2][1] = -sin(angle);
17
				m[2][2] = cos(angle);
17
	m[2][2] = cos(angle);
18
				m[3][3] = 1.0;
18
	m[3][3] = 1.0;
19
				break;
19
	break;
20
			case YAXIS:
20
      case YAXIS:
21
				m[0][0] = cos(angle);
21
	m[0][0] = cos(angle);
22
				m[0][2] = -sin(angle);
22
	m[0][2] = -sin(angle);
23
				m[2][0] = sin(angle);
23
	m[2][0] = sin(angle);
24
				m[2][2] = cos(angle);
24
	m[2][2] = cos(angle);
25
				m[1][1] = 1.0;
25
	m[1][1] = 1.0;
26
				m[3][3] = 1.0;
26
	m[3][3] = 1.0;
27
				break;
27
	break;
28
			case ZAXIS:
28
      case ZAXIS:
29
				m[0][0] = cos(angle);
29
	m[0][0] = cos(angle);
30
				m[0][1] = sin(angle);
30
	m[0][1] = sin(angle);
31
				m[1][0] = -sin(angle);
31
	m[1][0] = -sin(angle);
32
				m[1][1] = cos(angle);
32
	m[1][1] = cos(angle);
33
				m[2][2] = 1.0;
33
	m[2][2] = 1.0;
34
				m[3][3] = 1.0;
34
	m[3][3] = 1.0;
35
				break;
35
	break;
36
			}
36
      }
37
 
37
 
38
		return m;
38
    return m;
39
	}
39
  }
40
 
40
 
41
	Mat4x4d translation_Mat4x4d(const Vec3f& v)
41
  Mat4x4d translation_Mat4x4d(const Vec3f& v)
42
	{
42
  {
43
		Mat4x4d m;
43
    Mat4x4d m;
44
 
44
 
45
		m[0][0] = 1.0;
45
    m[0][0] = 1.0;
46
		m[1][1] = 1.0;
46
    m[1][1] = 1.0;
47
		m[2][2] = 1.0;
47
    m[2][2] = 1.0;
48
		m[3][3] = 1.0;
48
    m[3][3] = 1.0;
49
  
49
  
50
		m[0][3] = v[0];
50
    m[0][3] = v[0];
51
		m[1][3] = v[1];
51
    m[1][3] = v[1];
52
		m[2][3] = v[2];
52
    m[2][3] = v[2];
53
  
53
  
54
		return m;
54
    return m;
55
	}
55
  }
56
 
56
 
57
	Mat4x4d scaling_Mat4x4d(const Vec3f& v)
57
  Mat4x4d scaling_Mat4x4d(const Vec3f& v)
58
	{
58
  {
59
		Mat4x4d m;
59
    Mat4x4d m;
60
 
60
 
61
		m[0][0] = v[0];
61
    m[0][0] = v[0];
62
		m[1][1] = v[1];
62
    m[1][1] = v[1];
63
		m[2][2] = v[2];
63
    m[2][2] = v[2];
64
		m[3][3] = 1.0;
64
    m[3][3] = 1.0;
65
   
65
   
66
		return m;
66
    return m;
67
	}
-
 
68
 
-
 
69
	Mat4x4d perspective_Mat4x4d(float d)
-
 
70
	{
-
 
71
		Mat4x4d m;
-
 
72
  
-
 
73
		/* Eye at the origin, looking down the negative z axis */
-
 
74
 
-
 
75
		m[0][0] = 1.0;
-
 
76
		m[1][1] = 1.0;
-
 
77
		m[2][2] = 1.0;
-
 
78
		m[3][2] = -1.0/d;
-
 
79
   
67
  }
80
		return m;
-
 
81
	}
-
 
82
}
68
}