gKit2 light

- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List
- File Members

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
28 Vector operator- ( const Vector& v )
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 }
operator-
Vector operator-(const Point &a, const Point &b)
renvoie le vecteur a - b.
Definition: vec.cpp:22
operator/
Vector operator/(const Vector &v, const float k)
renvoie le vecteur v/k;
Definition: vec.cpp:73
length
float length(const Vector &v)
renvoie la longueur d'un vecteur.
Definition: vec.cpp:98
normalize
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
Definition: vec.cpp:79
length2
float length2(const Vector &v)
renvoie la carre de la longueur d'un vecteur.
Definition: vec.cpp:103
Vector
representation d'un vecteur 3d.
Definition: vec.h:42
operator*
Vector operator*(const float k, const Vector &v)
renvoie le vecteur k*u;
Definition: vec.cpp:63
dot
float dot(const Vector &u, const Vector &v)
renvoie le produit scalaire de 2 vecteurs.
Definition: vec.cpp:93
distance
float distance(const Point &a, const Point &b)
renvoie la distance etre 2 points.
Definition: vec.cpp:7
Point
representation d'un point 3d.
Definition: vec.h:19
cross
Vector cross(const Vector &u, const Vector &v)
renvoie le produit vectoriel de 2 vecteurs.
Definition: vec.cpp:85
center
Point center(const Point &a, const Point &b)
renvoie le milieu du segment ab.
Definition: vec.cpp:17
operator+
Point operator+(const Point &a, const Vector &v)
renvoie le point a+v.
Definition: vec.cpp:33
distance2
float distance2(const Point &a, const Point &b)
renvoie le carre de la distance etre 2 points.
Definition: vec.cpp:12
vec.h