]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - libs/picomodel/lwo/vecmath.c
initial
[xonotic/netradiant.git] / libs / picomodel / lwo / vecmath.c
1 /*
2 ======================================================================
3 vecmath.c
4
5 Basic vector and matrix functions.
6
7 Ernie Wright  17 Sep 00
8 ====================================================================== */
9
10 #include <math.h>
11
12
13 float dot( float a[], float b[] )
14 {
15    return a[ 0 ] * b[ 0 ] + a[ 1 ] * b[ 1 ] + a[ 2 ] * b[ 2 ];
16 }
17
18
19 void cross( float a[], float b[], float c[] )
20 {
21    c[ 0 ] = a[ 1 ] * b[ 2 ] - a[ 2 ] * b[ 1 ];
22    c[ 1 ] = a[ 2 ] * b[ 0 ] - a[ 0 ] * b[ 2 ];
23    c[ 2 ] = a[ 0 ] * b[ 1 ] - a[ 1 ] * b[ 0 ];
24 }
25
26
27 void normalize( float v[] )
28 {
29    float r;
30
31    r = ( float ) sqrt( dot( v, v ));
32    if ( r > 0 ) {
33       v[ 0 ] /= r;
34       v[ 1 ] /= r;
35       v[ 2 ] /= r;
36    }
37 }