Subversion Repositories gelsvn

Rev

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