Subversion Repositories gelsvn

Rev

Rev 408 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 408 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 "Mat4x4d.h"
7
#include "Mat4x4d.h"
2
 
8
 
3
namespace CGLA 
9
namespace CGLA 
4
{
10
{
5
 
11
 
6
  Mat4x4d rotation_Mat4x4d(Axis axis, float angle)
12
  Mat4x4d rotation_Mat4x4d(Axis axis, float angle)
7
  {
13
  {
8
    Mat4x4d m(0.0);
14
    Mat4x4d m(0.0);
9
 
15
 
10
    switch(axis)
16
    switch(axis)
11
      {
17
      {
12
      case XAXIS:
18
      case XAXIS:
13
	m[0][0] = 1.0;
19
	m[0][0] = 1.0;
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.0;
24
	m[3][3] = 1.0;
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.0;
31
	m[1][1] = 1.0;
26
	m[3][3] = 1.0;
32
	m[3][3] = 1.0;
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.0;
39
	m[2][2] = 1.0;
34
	m[3][3] = 1.0;
40
	m[3][3] = 1.0;
35
	break;
41
	break;
36
      }
42
      }
37
 
43
 
38
    return m;
44
    return m;
39
  }
45
  }
40
 
46
 
41
  Mat4x4d translation_Mat4x4d(const Vec3f& v)
47
  Mat4x4d translation_Mat4x4d(const Vec3d& v)
42
  {
48
  {
43
    Mat4x4d m(0.0);
49
    Mat4x4d m(0.0);
44
 
50
 
45
    m[0][0] = 1.0;
51
    m[0][0] = 1.0;
46
    m[1][1] = 1.0;
52
    m[1][1] = 1.0;
47
    m[2][2] = 1.0;
53
    m[2][2] = 1.0;
48
    m[3][3] = 1.0;
54
    m[3][3] = 1.0;
49
  
55
  
50
    m[0][3] = v[0];
56
    m[0][3] = v[0];
51
    m[1][3] = v[1];
57
    m[1][3] = v[1];
52
    m[2][3] = v[2];
58
    m[2][3] = v[2];
53
  
59
  
54
    return m;
60
    return m;
55
  }
61
  }
56
 
62
 
57
  Mat4x4d scaling_Mat4x4d(const Vec3f& v)
63
  Mat4x4d scaling_Mat4x4d(const Vec3d& v)
58
  {
64
  {
59
    Mat4x4d m(0.0);
65
    Mat4x4d m(0.0);
60
 
66
 
61
    m[0][0] = v[0];
67
    m[0][0] = v[0];
62
    m[1][1] = v[1];
68
    m[1][1] = v[1];
63
    m[2][2] = v[2];
69
    m[2][2] = v[2];
64
    m[3][3] = 1.0;
70
    m[3][3] = 1.0;
65
   
71
   
66
    return m;
72
    return m;
67
  }
73
  }
68
}
74
}
69
 
75