vrshoot
diff libs/vmath/basis_c.c @ 0:b2f14e535253
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 01 Feb 2014 19:58:19 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/libs/vmath/basis_c.c Sat Feb 01 19:58:19 2014 +0200 1.3 @@ -0,0 +1,37 @@ 1.4 +/* 1.5 +libvmath - a vector math library 1.6 +Copyright (C) 2004-2011 John Tsiombikas <nuclear@member.fsf.org> 1.7 + 1.8 +This program is free software: you can redistribute it and/or modify 1.9 +it under the terms of the GNU Lesser General Public License as published 1.10 +by the Free Software Foundation, either version 3 of the License, or 1.11 +(at your option) any later version. 1.12 + 1.13 +This program is distributed in the hope that it will be useful, 1.14 +but WITHOUT ANY WARRANTY; without even the implied warranty of 1.15 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.16 +GNU Lesser General Public License for more details. 1.17 + 1.18 +You should have received a copy of the GNU Lesser General Public License 1.19 +along with this program. If not, see <http://www.gnu.org/licenses/>. 1.20 +*/ 1.21 + 1.22 +#include "basis.h" 1.23 +#include "matrix.h" 1.24 + 1.25 +void basis_matrix(mat4_t res, vec3_t i, vec3_t j, vec3_t k) 1.26 +{ 1.27 + m4_identity(res); 1.28 + m4_set_column(res, v4_cons(i.x, i.y, i.z, 1.0), 0); 1.29 + m4_set_column(res, v4_cons(j.x, j.y, j.z, 1.0), 1); 1.30 + m4_set_column(res, v4_cons(k.x, k.y, k.z, 1.0), 2); 1.31 +} 1.32 + 1.33 +void basis_matrix_dir(mat4_t res, vec3_t dir) 1.34 +{ 1.35 + vec3_t k = v3_normalize(dir); 1.36 + vec3_t j = {0, 1, 0}; 1.37 + vec3_t i = v3_cross(j, k); 1.38 + j = v3_cross(k, i); 1.39 + basis_matrix(res, i, j, k); 1.40 +}