ASL
0.1.7
Advanced Simulation Library
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
math
aslVectorsUtilities.h
Go to the documentation of this file.
1
/*
2
* Advanced Simulation Library <http://asl.org.il>
3
*
4
* Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5
*
6
*
7
* This file is part of Advanced Simulation Library (ASL).
8
*
9
* ASL is free software: you can redistribute it and/or modify it
10
* under the terms of the GNU Affero General Public License as
11
* published by the Free Software Foundation, version 3 of the License.
12
*
13
* ASL is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Affero General Public License for more details.
17
*
18
* You should have received a copy of the GNU Affero General Public License
19
* along with ASL. If not, see <http://www.gnu.org/licenses/>.
20
*
21
*/
22
23
25
26
#ifndef _aslVectors
27
#define _aslVectors
28
29
30
#include "
aslVectors.h
"
31
#include <cmath>
32
33
34
namespace
asl {
35
36
37
/*
39
template <int I,typename T> inline std::ostream& operator<<(std::ostream &f,const Vec<I,T> &a) {
40
for (int i(0);i<I-1;++i)f<<a[i]<<' '; return f<<a[I-1];
41
}
42
43
template <int I,typename T> inline const Vec<I,T> & operator+=(Vec<I,T> &a,const Vec<I,T> &b){
44
for (int i(0);i<I;++i) a[i]+=b[i]; return a;
45
}
46
template <int I,typename T> inline const Vec<I,T> & operator-=(Vec<I,T> &a,const Vec<I,T> &b){
47
for (int i(0);i<I;++i) a[i]-=b[i]; return a;
48
}
49
template <int I,typename T> inline const int operator== (const Vec<I,T> &a,const Vec<I,T> &b) {
50
int c(1); for (int i(0);i<I;++i) c&=(a[i]==b[i]); return c;
51
}
52
// template <int I,typename T> inline const Vec<I,T> operator/ (const Vec<I,T> &b,const T &a) {return (1./a)*b;}
53
55
template <int I,typename T> inline const T bvol (const Vec<I,T> &a) {T p(1); for (int i(0);i<I;++i) p*=a[i]; return p;}
57
template <int I,typename T,class IT> inline bool nonneg(const Vec<I,T,IT> &a) {
58
int c(1); for (int i(0);i<I;++i) c&=(a[i]>=0); return c;
59
}
60
61
62
template <int I,typename T> inline const Vec<I,T> operator+ (const Vec<I,T> &a,const Vec<I,T> &b) {
63
Vec<I,T> c; for (int i(0);i<I;++i) c[i]=a[i]+b[i]; return c;
64
};
65
template <int I,typename T> inline const Vec<I,T> operator- (const Vec<I,T> &a,const Vec<I,T> &b) {
66
Vec<I,T> c; for (int i(0);i<I;++i) c[i]=a[i]-b[i]; return c;
67
};
68
template <int I,typename T> inline const Vec<I,T> operator* (const T &a,const Vec<I,T> &b) {
69
Vec<I,T> c; for (int i(0);i<I;++i) c[i]=a*b[i]; return c;
70
};
71
template <int I,typename T> inline const T operator* (const Vec<I,T> &a,const Vec<I,T> &b) {
72
T c=0; for (int i(0);i<I;++i) c+=a[i]*b[i]; return c;
73
};
74
75
// inline Vec<1,int> vceil(const Vec<1> &a) {return Vec<1,int>((int)ceil(a.x()));}
76
// inline Vec<1,int> vfloor(const Vec<1> &a) {return Vec<1,int>((int)floor(a.x()));}
77
*/
78
80
/* template <typename T> inline Vec<3,T> cast_max(const Vec<3,T> &a,const Vec<3,T> &b) {
81
return Vec<3,T>(max(a.x(),b.x()),max(a.y(),b.y()),max(a.z(),b.z()));
82
}
84
template <typename T> inline Vec<3,T> cast_min(const Vec<3,T> &a,const Vec<3,T> &b) {
85
return Vec<3,T>(min(a.x(),b.x()),min(a.y(),b.y()),min(a.z(),b.z()));
86
}
87
template <typename T> inline Vec<3,T> vabs(const Vec<3,T> &a) {
88
return Vec<3,T>(fabs(a.x()),fabs(a.y()),fabs(a.z()));
89
}*/
90
91
// inline Vec<3,int> vround(const Vec<3> &a) {return Vec<3,int>((int)round(a.x()),(int)round(a.y()),(int)round(a.z()));}
92
// inline Vec<3,int> vtrunc(const Vec<3> &a) {return Vec<3,int>((int)a.x(),(int)a.y(),(int)a.z());}
93
94
96
// template <typename T> inline const T min(const Vec<1,T>& a){return a.x();}
98
// template <typename T> inline const T max(const Vec<1,T>& a){return a.x();}
99
101
// template <typename T> inline const Vec<3,T> cprod(const Vec<3,T> &a,const Vec<3,T> &b) {
102
// return Vec<3,T>(a.x()*b.x(),a.y()*b.y(),a.z()*b.z());
103
// }
104
105
/* inline Vec<1,int> vec(int x){return Vec<1,int>(x);}
106
inline Vec<2,int> vec(int x,int y){return Vec<2,int>(x,y);}
107
inline Vec<3,int> vec(int x,int y,int z){return Vec<3,int>(x,y,z);}
108
inline Vec<1> vec(lFl x){return Vec<1>(x);}
109
inline Vec<2> vec(lFl x,lFl y){return Vec<2>(x,y);}
110
inline Vec<3> vec(lFl x,lFl y,lFl z){return Vec<3>(x,y,z);}
111
*/
112
113
}
114
115
#endif
aslVectors.h
definition of class АVec<T>
Generated by
1.8.5