gKit3
Loading...
Searching...
No Matches
vec.cpp
1
2#include <algorithm>
3#include <cmath>
4
5#include "vec.h"
6
7
9{
10 return Point(0, 0, 0);
11}
12
13
14float distance( const Point& a, const Point& b )
15{
16 return length(a - b);
17}
18
19float distance2( const Point& a, const Point& b )
20{
21 return length2(a - b);
22}
23
24Point center( const Point& a, const Point& b )
25{
26 return Point((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2);
27}
28
29
30Point min( const Point& a, const Point& b )
31{
32 return Point( std::min(a.x, b.x), std::min(a.y, b.y), std::min(a.z, b.z) );
33}
34
35Point max( const Point& a, const Point& b )
36{
37 return Point( std::max(a.x, b.x), std::max(a.y, b.y), std::max(a.z, b.z) );
38}
39
40
41Vector operator- ( const Point& a, const Point& b )
42{
43 return Vector(a.x - b.x, a.y - b.y, a.z - b.z);
44}
45
46Point operator* ( const float k, const Point& a )
47{
48 return Point(k * a.x, k * a.y, k * a.z);
49}
50
51Point operator* ( const Point& a, const float k )
52{
53 return k * a;
54}
55
56Point operator/ ( const Point& a, const float k )
57{
58 float kk= 1.f / k;
59 return kk * a;
60}
61
62Point operator+ ( const Point& a, const Point& b )
63{
64 return Point(a.x + b.x, a.y + b.y, a.z + b.z);
65}
66
68{
69 return Vector(-v.x, -v.y, -v.z);
70}
71
72Point operator+ ( const Point& a, const Vector& v )
73{
74 return Point(a.x + v.x, a.y + v.y, a.z + v.z);
75}
76
77Point operator+ ( const Vector& v, const Point& a )
78{
79 return a + v;
80}
81
82Point operator- ( const Vector& v, const Point& a )
83{
84 return a + (-v);
85}
86
87Point operator- ( const Point& a, const Vector& v )
88{
89 return a + (-v);
90}
91
92Vector operator+ ( const Vector& u, const Vector& v )
93{
94 return Vector(u.x + v.x, u.y + v.y, u.z + v.z);
95}
96
97Vector operator- ( const Vector& u, const Vector& v )
98{
99 return Vector(u.x - v.x, u.y - v.y, u.z - v.z);
100}
101
102
103Vector operator+ ( const float k, const Vector& v )
104{
105 return Vector(k + v.x, k + v.y, k + v.z);
106}
107Vector operator+ ( const Vector& v, const float k )
108{
109 return Vector(k + v.x, k + v.y, k + v.z);
110}
111
112Vector operator* ( const float k, const Vector& v )
113{
114 return Vector(k * v.x, k * v.y, k * v.z);
115}
116
117Vector operator* ( const Vector& v, const float k )
118{
119 return k * v;
120}
121
122Vector operator* ( const Vector& a, const Vector& b )
123{
124 return Vector(a.x * b.x, a.y * b.y, a.z * b.z);
125}
126
127Vector operator/ ( const Vector& v, const float k )
128{
129 float kk= 1 / k;
130 return kk * v;
131}
132
134{
135 float kk= 1 / length(v);
136 return kk * v;
137}
138
139Vector cross( const Vector& u, const Vector& v )
140{
141 return Vector(
142 (u.y * v.z) - (u.z * v.y),
143 (u.z * v.x) - (u.x * v.z),
144 (u.x * v.y) - (u.y * v.x));
145}
146
147float dot( const Vector& u, const Vector& v )
148{
149 return u.x * v.x + u.y * v.y + u.z * v.z;
150}
151
152float length( const Vector& v )
153{
154 return std::sqrt(length2(v));
155}
156
157float length2( const Vector& v )
158{
159 return v.x * v.x + v.y * v.y + v.z * v.z;
160}
Point center(const Point &a, const Point &b)
renvoie le milieu du segment ab.
Definition vec.cpp:24
Point Origin()
renvoie le point origine (0, 0, 0)
Definition vec.cpp:8
Vector operator-(const Point &a, const Point &b)
renvoie le vecteur a - b.
Definition vec.cpp:41
Point max(const Point &a, const Point &b)
renvoie la plus grande composante de chaque point. x, y, z= max(a.x, b.x), max(a.y,...
Definition vec.cpp:35
Point operator*(const float k, const Point &a)
renvoie le "point" k*a;
Definition vec.cpp:46
Point operator/(const Point &a, const float k)
renvoie le "point" v/k;
Definition vec.cpp:56
float distance(const Point &a, const Point &b)
renvoie la distance etre 2 points.
Definition vec.cpp:14
Point operator+(const Point &a, const Point &b)
renvoie le "point" a + b.
Definition vec.cpp:62
Point min(const Point &a, const Point &b)
renvoie la plus petite composante de chaque point. x, y, z= min(a.x, b.x), min(a.y,...
Definition vec.cpp:30
float length2(const Vector &v)
renvoie la carre de la longueur d'un vecteur.
Definition vec.cpp:157
float dot(const Vector &u, const Vector &v)
renvoie le produit scalaire de 2 vecteurs.
Definition vec.cpp:147
float distance2(const Point &a, const Point &b)
renvoie le carre de la distance etre 2 points.
Definition vec.cpp:19
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
Definition vec.cpp:133
float length(const Vector &v)
renvoie la longueur d'un vecteur.
Definition vec.cpp:152
Vector cross(const Vector &u, const Vector &v)
renvoie le produit vectoriel de 2 vecteurs.
Definition vec.cpp:139
representation d'un point 3d.
Definition vec.h:21
representation d'un vecteur 3d.
Definition vec.h:58