Subversion Repositories gelsvn

Rev

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

Rev 501 Rev 595
-
 
1
/* ----------------------------------------------------------------------- *
-
 
2
 * This file is part of GEL, http://www.imm.dtu.dk/GEL
-
 
3
 * Copyright (C) the authors and DTU Informatics
-
 
4
 * For license and list of authors, see ../../doc/intro.pdf
-
 
5
 * ----------------------------------------------------------------------- */
-
 
6
 
1
#include "Mat4x4f.h"
7
#include "Mat4x4f.h"
2
 
8
 
3
namespace CGLA 
9
namespace CGLA 
4
{
10
{
5
 
11
 
6
	Mat4x4f rotation_Mat4x4f(Axis axis, float angle)
12
	Mat4x4f rotation_Mat4x4f(Axis axis, float angle)
7
	{
13
	{
8
		Mat4x4f m(0.0f);
14
		Mat4x4f m(0.0f);
9
 
15
 
10
		switch(axis)
16
		switch(axis)
11
			{
17
			{
12
			case XAXIS:
18
			case XAXIS:
13
				m[0][0] = 1.0f;
19
				m[0][0] = 1.0f;
14
				m[1][1] = cos(angle);
20
				m[1][1] = cos(angle);
15
				m[1][2] = sin(angle);
21
				m[1][2] = sin(angle);
16
				m[2][1] = -sin(angle);
22
				m[2][1] = -sin(angle);
17
				m[2][2] = cos(angle);
23
				m[2][2] = cos(angle);
18
				m[3][3] = 1.0f;
24
				m[3][3] = 1.0f;
19
				break;
25
				break;
20
			case YAXIS:
26
			case YAXIS:
21
				m[0][0] = cos(angle);
27
				m[0][0] = cos(angle);
22
				m[0][2] = -sin(angle);
28
				m[0][2] = -sin(angle);
23
				m[2][0] = sin(angle);
29
				m[2][0] = sin(angle);
24
				m[2][2] = cos(angle);
30
				m[2][2] = cos(angle);
25
				m[1][1] = 1.0f;
31
				m[1][1] = 1.0f;
26
				m[3][3] = 1.0f;
32
				m[3][3] = 1.0f;
27
				break;
33
				break;
28
			case ZAXIS:
34
			case ZAXIS:
29
				m[0][0] = cos(angle);
35
				m[0][0] = cos(angle);
30
				m[0][1] = sin(angle);
36
				m[0][1] = sin(angle);
31
				m[1][0] = -sin(angle);
37
				m[1][0] = -sin(angle);
32
				m[1][1] = cos(angle);
38
				m[1][1] = cos(angle);
33
				m[2][2] = 1.0f;
39
				m[2][2] = 1.0f;
34
				m[3][3] = 1.0f;
40
				m[3][3] = 1.0f;
35
				break;
41
				break;
36
			}
42
			}
37
		return m;
43
		return m;
38
	}
44
	}
39
 
45
 
40
	Mat4x4f translation_Mat4x4f(const Vec3f& v)
46
	Mat4x4f translation_Mat4x4f(const Vec3f& v)
41
	{
47
	{
42
		Mat4x4f m(0.0f);
48
		Mat4x4f m(0.0f);
43
 
49
 
44
		m[0][0] = 1.0f;
50
		m[0][0] = 1.0f;
45
		m[1][1] = 1.0f;
51
		m[1][1] = 1.0f;
46
		m[2][2] = 1.0f;
52
		m[2][2] = 1.0f;
47
		m[3][3] = 1.0f;
53
		m[3][3] = 1.0f;
48
  
54
  
49
		m[0][3] = v[0];
55
		m[0][3] = v[0];
50
		m[1][3] = v[1];
56
		m[1][3] = v[1];
51
		m[2][3] = v[2];
57
		m[2][3] = v[2];
52
  
58
  
53
		return m;
59
		return m;
54
	}
60
	}
55
 
61
 
56
	Mat4x4f scaling_Mat4x4f(const Vec3f& v)
62
	Mat4x4f scaling_Mat4x4f(const Vec3f& v)
57
	{
63
	{
58
		Mat4x4f m(0.0f);
64
		Mat4x4f m(0.0f);
59
 
65
 
60
		m[0][0] = v[0];
66
		m[0][0] = v[0];
61
		m[1][1] = v[1];
67
		m[1][1] = v[1];
62
		m[2][2] = v[2];
68
		m[2][2] = v[2];
63
		m[3][3] = 1.0f;
69
		m[3][3] = 1.0f;
64
   
70
   
65
		return m;
71
		return m;
66
	}
72
	}
67
}
73
}
68
 
74