gKit2 light
vec.cpp
1 
2 #include <cmath>
3 
4 #include "vec.h"
5 
6 
7 float distance( const Point& a, const Point& b )
8 {
9  return length(a - b);
10 }
11 
12 float distance2( const Point& a, const Point& b )
13 {
14  return length2(a - b);
15 }
16 
17 Point center( const Point& a, const Point& b )
18 {
19  return Point((a.x + b.x) * 0.5f, (a.y + b.y) * 0.5f, (a.z + b.z) * 0.5f);
20 }
21 
22 Vector operator- ( const Point& a, const Point& b )
23 {
24  //~ return make_vector(a.x - b.x, a.y - b.y, a.z - b.z);
25  return Vector(a.x - b.x, a.y - b.y, a.z - b.z);
26 }
27 
29 {
30  return Vector(-v.x, -v.y, -v.z);
31 }
32 
33 Point operator+ ( const Point& a, const Vector& v )
34 {
35  return Point(a.x + v.x, a.y + v.y, a.z + v.z);
36 }
37 
38 Point operator+ ( const Vector& v, const Point& a )
39 {
40  return a + v;
41 }
42 
43 Point operator- ( const Vector& v, const Point& a )
44 {
45  return a + (-v);
46 }
47 
48 Point operator- ( const Point& a, const Vector& v )
49 {
50  return a + (-v);
51 }
52 
53 Vector operator+ ( const Vector& u, const Vector& v )
54 {
55  return Vector(u.x + v.x, u.y + v.y, u.z + v.z);
56 }
57 
58 Vector operator- ( const Vector& u, const Vector& v )
59 {
60  return Vector(u.x - v.x, u.y - v.y, u.z - v.z);
61 }
62 
63 Vector operator* ( const float k, const Vector& v )
64 {
65  return Vector(k * v.x, k * v.y, k * v.z);
66 }
67 
68 Vector operator* ( const Vector& v, const float k )
69 {
70  return k * v;
71 }
72 
73 Vector operator/ ( const Vector& v, const float k )
74 {
75  float kk= 1 / k;
76  return kk * v;
77 }
78 
79 Vector normalize( const Vector& v )
80 {
81  float kk= 1 / length(v);
82  return kk * v;
83 }
84 
85 Vector cross( const Vector& u, const Vector& v )
86 {
87  return Vector(
88  (u.y * v.z) - (u.z * v.y),
89  (u.z * v.x) - (u.x * v.z),
90  (u.x * v.y) - (u.y * v.x));
91 }
92 
93 float dot( const Vector& u, const Vector& v )
94 {
95  return u.x * v.x + u.y * v.y + u.z * v.z;
96 }
97 
98 float length( const Vector& v )
99 {
100  return std::sqrt(length2(v));
101 }
102 
103 float length2( const Vector& v )
104 {
105  return v.x * v.x + v.y * v.y + v.z * v.z;
106 }
Vector operator-(const Point &a, const Point &b)
renvoie le vecteur a - b.
Definition: vec.cpp:22
Vector operator/(const Vector &v, const float k)
renvoie le vecteur v/k;
Definition: vec.cpp:73
float length(const Vector &v)
renvoie la longueur d'un vecteur.
Definition: vec.cpp:98
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
Definition: vec.cpp:79
float length2(const Vector &v)
renvoie la carre de la longueur d'un vecteur.
Definition: vec.cpp:103
representation d'un vecteur 3d.
Definition: vec.h:42
Vector operator*(const float k, const Vector &v)
renvoie le vecteur k*u;
Definition: vec.cpp:63
float dot(const Vector &u, const Vector &v)
renvoie le produit scalaire de 2 vecteurs.
Definition: vec.cpp:93
float distance(const Point &a, const Point &b)
renvoie la distance etre 2 points.
Definition: vec.cpp:7
representation d'un point 3d.
Definition: vec.h:19
Vector cross(const Vector &u, const Vector &v)
renvoie le produit vectoriel de 2 vecteurs.
Definition: vec.cpp:85
Point center(const Point &a, const Point &b)
renvoie le milieu du segment ab.
Definition: vec.cpp:17
Point operator+(const Point &a, const Vector &v)
renvoie le point a+v.
Definition: vec.cpp:33
float distance2(const Point &a, const Point &b)
renvoie le carre de la distance etre 2 points.
Definition: vec.cpp:12