Subversion Repositories gelsvn

Rev

Rev 144 | Rev 501 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 144 Rev 304
1
#include "Mat4x4f.h"
1
#include "Mat4x4f.h"
2
 
2
 
3
namespace CGLA 
3
namespace CGLA 
4
{
4
{
5
 
5
 
6
	Mat4x4f rotation_Mat4x4f(Axis axis, float angle)
6
	Mat4x4f rotation_Mat4x4f(Axis axis, float angle)
7
	{
7
	{
8
		Mat4x4f m(0.0f);
8
		Mat4x4f m(0.0f);
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
		Vec3f x;
-
 
38
		x.all_l(x);
-
 
39
		return m;
37
		return m;
40
	}
38
	}
41
 
39
 
42
	Mat4x4f translation_Mat4x4f(const Vec3f& v)
40
	Mat4x4f translation_Mat4x4f(const Vec3f& v)
43
	{
41
	{
44
		Mat4x4f m(0.0f);
42
		Mat4x4f m(0.0f);
45
 
43
 
46
		m[0][0] = 1.0;
44
		m[0][0] = 1.0;
47
		m[1][1] = 1.0;
45
		m[1][1] = 1.0;
48
		m[2][2] = 1.0;
46
		m[2][2] = 1.0;
49
		m[3][3] = 1.0;
47
		m[3][3] = 1.0;
50
  
48
  
51
		m[0][3] = v[0];
49
		m[0][3] = v[0];
52
		m[1][3] = v[1];
50
		m[1][3] = v[1];
53
		m[2][3] = v[2];
51
		m[2][3] = v[2];
54
  
52
  
55
		return m;
53
		return m;
56
	}
54
	}
57
 
55
 
58
	Mat4x4f scaling_Mat4x4f(const Vec3f& v)
56
	Mat4x4f scaling_Mat4x4f(const Vec3f& v)
59
	{
57
	{
60
		Mat4x4f m(0.0f);
58
		Mat4x4f m(0.0f);
61
 
59
 
62
		m[0][0] = v[0];
60
		m[0][0] = v[0];
63
		m[1][1] = v[1];
61
		m[1][1] = v[1];
64
		m[2][2] = v[2];
62
		m[2][2] = v[2];
65
		m[3][3] = 1.0;
63
		m[3][3] = 1.0;
66
   
64
   
67
		return m;
65
		return m;
68
	}
66
	}
69
}
67
}
70
 
68