Subversion Repositories gelsvn

Rev

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

Rev Author Line No. Line
595 jab 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
 
2 bj 7
#include "Mat4x4f.h"
8
 
5 jab 9
namespace CGLA 
10
{
2 bj 11
 
12
	Mat4x4f rotation_Mat4x4f(Axis axis, float angle)
13
	{
10 jab 14
		Mat4x4f m(0.0f);
2 bj 15
 
16
		switch(axis)
17
			{
18
			case XAXIS:
501 jrf 19
				m[0][0] = 1.0f;
2 bj 20
				m[1][1] = cos(angle);
21
				m[1][2] = sin(angle);
22
				m[2][1] = -sin(angle);
23
				m[2][2] = cos(angle);
501 jrf 24
				m[3][3] = 1.0f;
2 bj 25
				break;
26
			case YAXIS:
27
				m[0][0] = cos(angle);
28
				m[0][2] = -sin(angle);
29
				m[2][0] = sin(angle);
30
				m[2][2] = cos(angle);
501 jrf 31
				m[1][1] = 1.0f;
32
				m[3][3] = 1.0f;
2 bj 33
				break;
34
			case ZAXIS:
35
				m[0][0] = cos(angle);
36
				m[0][1] = sin(angle);
37
				m[1][0] = -sin(angle);
38
				m[1][1] = cos(angle);
501 jrf 39
				m[2][2] = 1.0f;
40
				m[3][3] = 1.0f;
2 bj 41
				break;
42
			}
43
		return m;
44
	}
45
 
46
	Mat4x4f translation_Mat4x4f(const Vec3f& v)
47
	{
10 jab 48
		Mat4x4f m(0.0f);
2 bj 49
 
501 jrf 50
		m[0][0] = 1.0f;
51
		m[1][1] = 1.0f;
52
		m[2][2] = 1.0f;
53
		m[3][3] = 1.0f;
2 bj 54
 
55
		m[0][3] = v[0];
56
		m[1][3] = v[1];
57
		m[2][3] = v[2];
58
 
59
		return m;
60
	}
61
 
62
	Mat4x4f scaling_Mat4x4f(const Vec3f& v)
63
	{
10 jab 64
		Mat4x4f m(0.0f);
2 bj 65
 
66
		m[0][0] = v[0];
67
		m[1][1] = v[1];
68
		m[2][2] = v[2];
501 jrf 69
		m[3][3] = 1.0f;
2 bj 70
 
71
		return m;
72
	}
73
}