70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /// @ref gtx_matrix_transform_2d
 | |
| /// @file glm/gtc/matrix_transform_2d.inl
 | |
| /// @author Miguel Ángel Pérez Martínez
 | |
| 
 | |
| #include "../trigonometric.hpp"
 | |
| 
 | |
| namespace glm
 | |
| {
 | |
| 	
 | |
| 	template <typename T, precision P> 
 | |
| 	GLM_FUNC_QUALIFIER tmat3x3<T, P> translate(
 | |
| 		tmat3x3<T, P> const & m,
 | |
| 		tvec2<T, P> const & v)
 | |
| 	{
 | |
| 		tmat3x3<T, P> Result(m);
 | |
| 		Result[2] = m[0] * v[0] + m[1] * v[1] + m[2];
 | |
| 		return Result;
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	template <typename T, precision P> 
 | |
| 	GLM_FUNC_QUALIFIER tmat3x3<T, P> rotate(
 | |
| 		tmat3x3<T, P> const & m,
 | |
| 		T angle)
 | |
| 	{
 | |
| 		T const a = angle;
 | |
| 		T const c = cos(a);
 | |
| 		T const s = sin(a);
 | |
| 
 | |
| 		tmat3x3<T, P> Result(uninitialize);
 | |
| 		Result[0] = m[0] * c + m[1] * s;
 | |
| 		Result[1] = m[0] * -s + m[1] * c;
 | |
| 		Result[2] = m[2];
 | |
| 		return Result;
 | |
| 	}
 | |
| 
 | |
| 	template <typename T, precision P> 
 | |
| 	GLM_FUNC_QUALIFIER tmat3x3<T, P> scale(
 | |
| 		tmat3x3<T, P> const & m,
 | |
| 		tvec2<T, P> const & v)
 | |
| 	{
 | |
| 		tmat3x3<T, P> Result(uninitialize);
 | |
| 		Result[0] = m[0] * v[0];
 | |
| 		Result[1] = m[1] * v[1];
 | |
| 		Result[2] = m[2];
 | |
| 		return Result;
 | |
| 	}
 | |
| 
 | |
| 	template <typename T, precision P> 
 | |
| 	GLM_FUNC_QUALIFIER tmat3x3<T, P> shearX(
 | |
| 		tmat3x3<T, P> const & m,
 | |
| 		T y)
 | |
| 	{
 | |
| 		tmat3x3<T, P> Result(1);
 | |
| 		Result[0][1] = y;
 | |
| 		return m * Result;
 | |
| 	}
 | |
| 
 | |
| 	template <typename T, precision P> 
 | |
| 	GLM_FUNC_QUALIFIER tmat3x3<T, P> shearY(
 | |
| 		tmat3x3<T, P> const & m,
 | |
| 		T x)
 | |
| 	{
 | |
| 		tmat3x3<T, P> Result(1);
 | |
| 		Result[1][0] = x;
 | |
| 		return m * Result;
 | |
| 	}
 | |
| 
 | |
| }//namespace glm
 | 
