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