source: anuga_work/development/anugavis/src/vector.h @ 5487

Last change on this file since 5487 was 5378, checked in by jack, 16 years ago

Inlined vector.h functions for performance.

File size: 1.0 KB
Line 
1#ifndef VECTOR_H
2#define VECTOR_H
3
4#include <math.h>
5
6typedef float vector[3];
7
8/* Useful vector operations. */
9static inline void vadd(const vector v1, const vector v2, vector result){
10  int i;
11  for(i = 0 ; i < 3 ; i++) result[i] = v1[i] + v2[i];
12}
13
14static inline float vlen(const vector v){
15  return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
16}
17
18static inline void vscale(const vector v, const float scale, vector result){
19  int i;
20  for(i = 0 ; i < 3 ; i++) result[i] = scale * v[i];
21}
22
23static inline void vsub(const vector v1, const vector v2, vector result){
24  int i;
25  for(i = 0 ; i < 3 ; i++) result[i] = v1[i] - v2[i];
26}
27
28static inline float vdot(const vector v1, const vector v2){
29  int i;
30  float rv = 0;
31  for(i = 0 ; i < 3 ; i++) rv += v1[i] * v2[i];
32  return rv;
33}
34
35static inline void vcross(const vector v1, const vector v2, vector result){
36  result[0] = v1[1] * v2[2] - v1[2] * v2[1];
37  result[1] = v1[2] * v2[0] - v1[0] * v2[2];
38  result[2] = v1[0] * v2[1] - v1[1] * v2[0];
39}
40
41#endif
Note: See TracBrowser for help on using the repository browser.