Subversion Repositories gelsvn

Rev

Rev 10 | Rev 43 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10 Rev 12
Line 10... Line 10...
10
 
10
 
11
 
11
 
12
namespace CGLA {
12
namespace CGLA {
13
 
13
 
14
 
14
 
15
	/** Four by four float matrix.
15
  /** Four by four float matrix.
16
			This class is useful for transformations such as perspective projections 
16
      This class is useful for transformations such as perspective projections 
17
			or translation where 3x3 matrices do not suffice. */
17
      or translation where 3x3 matrices do not suffice. */
18
	class Mat4x4d: public ArithSqMat4x4Float<Vec4d, Mat4x4d>
18
  class Mat4x4d: public ArithSqMat4x4Float<Vec4d, Mat4x4d>
19
	{
19
    {
20
	public:
20
    public:
21
  
21
  
22
		/// Construct a Mat4x4d from four Vec4d vectors
22
      /// Construct a Mat4x4d from four Vec4d vectors
23
		Mat4x4d(Vec4d _a, Vec4d _b, Vec4d _c, Vec4d _d): 
23
      Mat4x4d(Vec4d _a, Vec4d _b, Vec4d _c, Vec4d _d): 
24
			ArithSqMat4x4Float<Vec4d, Mat4x4d> (_a,_b,_c,_d) {}
24
	ArithSqMat4x4Float<Vec4d, Mat4x4d> (_a,_b,_c,_d) {}
25
  
25
  
26
		/// Construct the nan matrix
26
      /// Construct the nan matrix
27
		Mat4x4d() {}
27
      Mat4x4d() {}
28
 
-
 
29
		/// Construct a matrix with identical elements.
-
 
30
		Mat4x4d(double a): 
-
 
31
			ArithSqMat4x4Float<Vec4d, Mat4x4d> (a) {}
-
 
32
 
-
 
33
		/// Construct from a pointed to array of 16 floats.
-
 
34
		Mat4x4d(const float* sa): ArithSqMat4x4Float<Vec4d, Mat4x4d> (sa) {}
-
 
35
	};
-
 
36
 
-
 
37
	/// Create a rotation _matrix. Rotates about one of the major axes.
-
 
38
	Mat4x4d rotation_Mat4x4d(CGLA::Axis axis, float angle);
-
 
39
 
-
 
40
	/// Create a translation matrix
-
 
41
	Mat4x4d translation_Mat4x4d(const Vec3d&);
-
 
42
 
-
 
43
	/// Create a scaling matrix.
-
 
44
	Mat4x4d scaling_Mat4x4d(const Vec3d&);
-
 
45
 
-
 
46
	/// Create an identity matrix.
-
 
47
	inline Mat4x4d identity_Mat4x4d()
-
 
48
	{
-
 
49
		return Mat4x4d(Vec4d(1,0,0,0), 
-
 
50
									 Vec4d(0,1,0,0), 
-
 
51
									 Vec4d(0,0,1,0), 
-
 
52
									 Vec4d(0,0,0,1));
-
 
53
	}
-
 
54
 
-
 
55
	/** Create a perspective matrix. Assumes the eye is at the origin and
-
 
56
			that we are looking down the negative z axis.
-
 
57
    
-
 
58
			ACTUALLY THE EYE IS NOT AT THE ORIGIN BUT BEHIND IT. CHECK UP ON
-
 
59
			THIS ONE */
-
 
60
	Mat4x4d perspective_Mat4x4d(float d);
-
 
61
 
-
 
62
 
28
 
-
 
29
      /// Construct a matrix with identical elements.
-
 
30
      Mat4x4d(double a): 
-
 
31
	ArithSqMat4x4Float<Vec4d, Mat4x4d> (a) {}
-
 
32
    };
-
 
33
 
-
 
34
  /// Create a rotation _matrix. Rotates about one of the major axes.
-
 
35
  Mat4x4d rotation_Mat4x4d(CGLA::Axis axis, float angle);
-
 
36
 
-
 
37
  /// Create a translation matrix
-
 
38
  Mat4x4d translation_Mat4x4d(const Vec3d&);
-
 
39
 
-
 
40
  /// Create a scaling matrix.
-
 
41
  Mat4x4d scaling_Mat4x4d(const Vec3d&);
-
 
42
 
-
 
43
  /// Create an identity matrix.
-
 
44
  inline Mat4x4d identity_Mat4x4d()
-
 
45
    {
-
 
46
      return Mat4x4d(Vec4d(1,0,0,0), 
-
 
47
		     Vec4d(0,1,0,0), 
-
 
48
		     Vec4d(0,0,1,0), 
-
 
49
		     Vec4d(0,0,0,1));
-
 
50
    }
63
}
51
}
64
#endif
52
#endif
65
 
53
 
66
 
54
 
67
 
55