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 +}