Add mat4_projection and mat4_lookat.
This commit is contained in:
		
							
								
								
									
										22
									
								
								__init__.py
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								__init__.py
									
									
									
									
									
								
							@ -163,6 +163,28 @@ def mat3_mul_mat3(ret, a, b):
 | 
				
			|||||||
    assert len(ret) == 9 and len(a) == 9 and len(b) == 9
 | 
					    assert len(ret) == 9 and len(a) == 9 and len(b) == 9
 | 
				
			||||||
    _mat3_mul_mat3(_mat3(ret), _mat3(a), _mat3(b))
 | 
					    _mat3_mul_mat3(_mat3(ret), _mat3(a), _mat3(b))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_mat4_projection = _lib.rk_mat4_projection
 | 
				
			||||||
 | 
					_mat4_projection.argtypes = (
 | 
				
			||||||
 | 
					    _mat4_t, # ret
 | 
				
			||||||
 | 
					    ctypes.c_float, # hfov
 | 
				
			||||||
 | 
					    ctypes.c_float, # ratio
 | 
				
			||||||
 | 
					    ctypes.c_float, # near
 | 
				
			||||||
 | 
					    ctypes.c_float) # far
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def mat4_projection(ret, hfov, ratio, near, far):
 | 
				
			||||||
 | 
					    assert len(ret) == 16
 | 
				
			||||||
 | 
					    _mat4_projection(_mat4(ret), hfov, ratio, near, far)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_mat4_lookat = _lib.rk_mat4_lookat
 | 
				
			||||||
 | 
					_mat4_lookat.argtypes = (
 | 
				
			||||||
 | 
					    _mat4_t, # ret
 | 
				
			||||||
 | 
					    _vec3_t, # position
 | 
				
			||||||
 | 
					    _vec3_t) # lookat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def mat4_lookat(ret, position, lookat):
 | 
				
			||||||
 | 
					    assert len(ret) == 16 and len(position) == 3 and len(lookat) == 3
 | 
				
			||||||
 | 
					    _mat4_lookat(_mat4(ret), _vec3(position), _vec3(lookat))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_mat4_mul_vec4 = _lib.rk_mat4_mul_vec4
 | 
					_mat4_mul_vec4 = _lib.rk_mat4_mul_vec4
 | 
				
			||||||
_mat4_mul_vec4.argtypes = (
 | 
					_mat4_mul_vec4.argtypes = (
 | 
				
			||||||
    _vec4_t, # ret
 | 
					    _vec4_t, # ret
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								cpp/math.cpp
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								cpp/math.cpp
									
									
									
									
									
								
							@ -38,6 +38,22 @@ void rk_mat3_mul_mat3(
 | 
				
			|||||||
    ret = a * b;
 | 
					    ret = a * b;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void rk_mat4_projection(
 | 
				
			||||||
 | 
					    rk_mat4 & ret,
 | 
				
			||||||
 | 
					    float hfov,
 | 
				
			||||||
 | 
					    float ratio,
 | 
				
			||||||
 | 
					    float near,
 | 
				
			||||||
 | 
					    float far) {
 | 
				
			||||||
 | 
					    ret = glm::perspectiveRH(hfov, ratio, near, far);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void rk_mat4_lookat(
 | 
				
			||||||
 | 
					    rk_mat4 & ret,
 | 
				
			||||||
 | 
					    rk_vec3 const & position,
 | 
				
			||||||
 | 
					    rk_vec3 const & lookat) {
 | 
				
			||||||
 | 
					    ret = glm::lookAtRH(position, lookat, glm::vec3(0.0f, 0.0f, 1.0f));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rk_mat4_mul_vec4(
 | 
					void rk_mat4_mul_vec4(
 | 
				
			||||||
    rk_vec4 & ret,
 | 
					    rk_vec4 & ret,
 | 
				
			||||||
    rk_mat4 const & a,
 | 
					    rk_mat4 const & a,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								cpp/math.hpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								cpp/math.hpp
									
									
									
									
									
								
							@ -41,6 +41,18 @@ RK_EXPORT void rk_mat3_mul_mat3(
 | 
				
			|||||||
    rk_mat3 const & a,
 | 
					    rk_mat3 const & a,
 | 
				
			||||||
    rk_mat3 const & b);
 | 
					    rk_mat3 const & b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RK_EXPORT void rk_mat4_projection(
 | 
				
			||||||
 | 
					    rk_mat4 & ret,
 | 
				
			||||||
 | 
					    float hfov,
 | 
				
			||||||
 | 
					    float ratio,
 | 
				
			||||||
 | 
					    float near,
 | 
				
			||||||
 | 
					    float far);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RK_EXPORT void rk_mat4_lookat(
 | 
				
			||||||
 | 
					    rk_mat4 & ret,
 | 
				
			||||||
 | 
					    rk_vec3 const & position,
 | 
				
			||||||
 | 
					    rk_vec3 const & lookat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RK_EXPORT void rk_mat4_mul_vec4(
 | 
					RK_EXPORT void rk_mat4_mul_vec4(
 | 
				
			||||||
    rk_vec4 & ret,
 | 
					    rk_vec4 & ret,
 | 
				
			||||||
    rk_mat4 const & a,
 | 
					    rk_mat4 const & a,
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user