remove/replace extended ASCII characters from comments
This commit is contained in:
@ -2,9 +2,9 @@
|
||||
*
|
||||
* Copyright (c), Ilya Valuev 2005 All Rights Reserved.
|
||||
*
|
||||
* Author : Ilya Valuev, MIPT, Moscow, Russia
|
||||
* Author : Ilya Valuev, MIPT, Moscow, Russia
|
||||
*
|
||||
* Project : GridMD, ivutils
|
||||
* Project : GridMD, ivutils
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@ -69,11 +69,11 @@
|
||||
* Revision 1.11 2008/04/15 13:11:41 valuev
|
||||
* Added antisymmetrized wave packets
|
||||
*
|
||||
|
||||
|
||||
*
|
||||
*******************************************************************************/
|
||||
/*r @file vector_3.h @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
/*r @file vector_3.h
|
||||
*/
|
||||
|
||||
# ifndef VECTOR_3_H
|
||||
|
||||
@ -92,7 +92,6 @@
|
||||
# endif
|
||||
|
||||
# ifndef fmod
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
# define fmod(a,b) ((a)-((long)((a)/(b))*(b)))
|
||||
# endif
|
||||
|
||||
@ -104,8 +103,6 @@ typedef double vec_type;
|
||||
typedef float vec_type;
|
||||
#endif
|
||||
|
||||
//e "infinitely" large number in Vector_3 sense
|
||||
//r "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3
|
||||
//# ifndef SINGLE_PRECISION
|
||||
//# define VEC_INFTY 1.e20
|
||||
//# else
|
||||
@ -113,8 +110,6 @@ typedef float vec_type;
|
||||
//# endif
|
||||
#define VEC_INFTY numeric_limits<vec_type>::max()
|
||||
|
||||
//e "infinitely" small number in Vector_3 sense (used for vector comparisons)
|
||||
//r "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//# ifndef SINGLE_PRECISION
|
||||
//# define VEC_ZERO 1.e-20
|
||||
//# else
|
||||
@ -122,11 +117,10 @@ typedef float vec_type;
|
||||
//# endif
|
||||
#define VEC_ZERO 512*numeric_limits<vec_type>::epsilon()
|
||||
|
||||
//r N-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> T, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
template <class T, const int N=3>
|
||||
template <class T, const int N=3>
|
||||
struct Vector_Nt {
|
||||
typedef T value_type;
|
||||
|
||||
|
||||
T v[N];
|
||||
|
||||
Vector_Nt(const T &a=0){
|
||||
@ -134,7 +128,7 @@ struct Vector_Nt {
|
||||
v[i]=a;
|
||||
}
|
||||
|
||||
|
||||
|
||||
explicit Vector_Nt(const T &a1, const T &a2) {
|
||||
if(N>0)v[0]=a1;
|
||||
if(N>1)v[1]=a2;
|
||||
@ -160,14 +154,12 @@ struct Vector_Nt {
|
||||
for (int i=0; i<N; i++) v[i]=v1[i];
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> it
|
||||
template <class A>
|
||||
void copy_to(A *beg) const {
|
||||
void copy_to(A *beg) const {
|
||||
for (int i=0; i<N; i++, ++beg)
|
||||
*beg=v[i];
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline T& operator[](int i) const { return (T&)v[i]; };
|
||||
|
||||
|
||||
@ -177,14 +169,12 @@ struct Vector_Nt {
|
||||
return *this;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a.
|
||||
inline Vector_Nt& operator=(const T &a){
|
||||
for (int i=0; i<N; i++)
|
||||
v[i]=a;
|
||||
return *this;
|
||||
};
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> VEC_ZERO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline bool operator==(const Vector_Nt &vect) const{
|
||||
for (int i=0; i<N ;i++)
|
||||
if(fabs(v[i]-vect.v[i])>VEC_ZERO)return false;
|
||||
@ -208,8 +198,7 @@ struct Vector_Nt {
|
||||
result.v[i]=v[i]-vect.v[i];
|
||||
return result;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
inline T operator*(const Vector_Nt& vect) const {
|
||||
T result=0;
|
||||
for (int i=0; i<N; i++)
|
||||
@ -217,7 +206,6 @@ struct Vector_Nt {
|
||||
return result;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt operator*(const T &coeff) const {
|
||||
Vector_Nt result;
|
||||
for (int i=0; i<N; i++)
|
||||
@ -226,7 +214,6 @@ struct Vector_Nt {
|
||||
}
|
||||
|
||||
//e vector multiplication (N=3 only)
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt operator%(const Vector_Nt &r) const{ //reserved for N specializations
|
||||
if(N==3){
|
||||
return Vector_Nt(v[1]*r.v[2]-v[2]*r.v[1],v[2]*r.v[0]-v[0]*r.v[2],v[0]*r.v[1]-v[1]*r.v[0]);
|
||||
@ -234,10 +221,8 @@ struct Vector_Nt {
|
||||
return *this;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
// friend Vector_Nt operator*(T coeff,const Vector_Nt& vec);
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt operator/(const T &coeff) const {
|
||||
Vector_Nt result;
|
||||
for (int i=0; i<N; i++)
|
||||
@ -245,7 +230,6 @@ struct Vector_Nt {
|
||||
return result;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> -1
|
||||
inline Vector_Nt operator-() const {
|
||||
Vector_Nt r;
|
||||
for (int i=0; i<N; i++)
|
||||
@ -253,48 +237,41 @@ struct Vector_Nt {
|
||||
return r;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt& operator+=(const Vector_Nt &vect){
|
||||
for (int i=0; i<N; i++)
|
||||
v[i]+=vect.v[i];
|
||||
return *this;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt& operator-=(const Vector_Nt &vect){
|
||||
for (int i=0; i<N; i++)
|
||||
v[i]-=vect.v[i];
|
||||
return *this;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt& operator*=(const T &coeff){
|
||||
for (int i=0; i<N; i++)
|
||||
v[i]*=coeff;
|
||||
return *this;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
inline Vector_Nt& operator/=(const T &coeff){
|
||||
for (int i=0; i<N; i++)
|
||||
v[i]/=coeff;
|
||||
return *this;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
T norm2() const {
|
||||
T result=0;
|
||||
for (int i=0; i<N; i++)
|
||||
result+=v[i]*v[i];
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
T norm() const {
|
||||
return sqrt(norm2());
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> norm() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> newnorm).
|
||||
T normalize(T newnorm=1.){
|
||||
T norm=this->norm();
|
||||
if(norm>=VEC_ZERO){
|
||||
@ -325,22 +302,14 @@ struct Vector_Nt {
|
||||
newnorm/=sqrt(fabs(result));
|
||||
for (int i=0; i<N; i++)
|
||||
v[i]*=newnorm;
|
||||
return result<0 ? VEC_INFTY : result;
|
||||
return result<0 ? VEC_INFTY : result;
|
||||
}
|
||||
|
||||
|
||||
//e nearest image distance within rectangular cell (FOR DISTANCE MEASUREMENTS)
|
||||
//e assumes that each coordinate absolute value is in the range [0,cell[i])
|
||||
//e assumes that each coordinate absolute value is in the range [0,cell[i])
|
||||
//e returned vector is in the range [-cell[i]/2,cell[i]/2)
|
||||
//e flags indicate the periodicity in specific directions: 0x1 for X, 0x2 for Y, 0x4 for Z
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/*r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> rcell, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> *this <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> *this.\n
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> *this <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 3*3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
*this <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
*/
|
||||
Vector_Nt rcell1(const Vector_Nt &cell,int flags=0xffff) const{
|
||||
Vector_Nt ret(*this);
|
||||
int i;
|
||||
@ -378,9 +347,6 @@ struct Vector_Nt {
|
||||
|
||||
//e reduction to elementary cell [0, cell[i]) (FOR REDUCTION TO ELEMENTARY CELL)
|
||||
//e flags indicate the periodicity in specific directions: 0x1 for X, 0x2 for Y, 0x4 for Z
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>, <20><><EFBFBD> <20> rcell1, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *this <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/*r <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Vector_Nt rcell(const Vector_Nt &cell, int flags=0xffff) const {
|
||||
Vector_Nt ret(*this);
|
||||
for (int i=0, flag=1; i<N; i++, flag<<=1) {
|
||||
@ -406,9 +372,8 @@ struct Vector_Nt {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ind
|
||||
|
||||
T maxcoord(int *ind=NULL) const {
|
||||
int im=0;
|
||||
T vv=v[0];
|
||||
@ -452,7 +417,6 @@ struct Vector_Nt {
|
||||
}
|
||||
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ind
|
||||
T mincoord(int *ind=NULL) const {
|
||||
int im=0;
|
||||
T vv=v[0];
|
||||
@ -466,7 +430,6 @@ struct Vector_Nt {
|
||||
return vv;
|
||||
}
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (x,y,z)\\n
|
||||
void print() const{
|
||||
cout<< "(";
|
||||
for(int i=0;i<N;i++){
|
||||
@ -505,7 +468,7 @@ typedef Vector_3 *Vector_3P;
|
||||
typedef Vector_Nt<vec_type, 2> Vector_2;
|
||||
typedef Vector_2 *Vector_2P;
|
||||
|
||||
template <int N>
|
||||
template <int N>
|
||||
class Vector_N: public Vector_Nt<vec_type, N>{
|
||||
};
|
||||
|
||||
@ -515,25 +478,18 @@ class Vector_N: public Vector_Nt<vec_type, N>{
|
||||
|
||||
|
||||
//e finds the maximum distance between vector pairs
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> va1[i], va2[i], i=1..n
|
||||
/*r @param va1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3[n]
|
||||
@param n - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> va1 <20> va2
|
||||
*/
|
||||
vec_type dist_max(Vector_3 *va1,Vector_3 *va2,int n);
|
||||
|
||||
//e finds average distance between vector pairs
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> va1[i], va2[i], i=1..n
|
||||
vec_type dist_av(Vector_3 *va1,Vector_3 *va2,int n);
|
||||
|
||||
//e finds the average difference norm between two vector sets of the same length
|
||||
/*e optionally gives the indexes for maximal and minimal difference
|
||||
va2 can be NULL, then the norm of va1 is used */
|
||||
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> va1[i] <20> va2[i], <20> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> min <20> max <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=0, int *maxind=0);
|
||||
|
||||
//e finds suitable perpendicular to a vector
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vAB
|
||||
Vector_3 FindPerp(const Vector_3 &vAB);
|
||||
|
||||
|
||||
@ -551,19 +507,12 @@ Vector_3 GetIScopei(const Vector_3 *varr,int *indarr,int n,Vector_3* box_min,Vec
|
||||
// neue Funktionen
|
||||
|
||||
//e clears vector array with optional integer index
|
||||
//r <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/*r
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector_3 vec[] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> ind==NULL, <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> ind!=NULL, <20><> <20><><EFBFBD> i=0..n-1
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vec[ind[i]]
|
||||
<EFBFBD><EFBFBD>. @ref indexed_calculations.
|
||||
*/
|
||||
void clear_vecarri(int n,Vector_3 *vec, int *ind=0);
|
||||
|
||||
//e reflects the vector ini+dir*t+0.5*force*t^2 to be inside a box limited by 0 and box sizes
|
||||
//e changes dir according to the final state
|
||||
//e fills crossed dir with bit flags corresponding directions along which the walls were crossed
|
||||
Vector_3 Reflect(Vector_3& ini, double t,Vector_3 &dir, double *box, int flag=0x7, const Vector_3 &force=Vector_3());
|
||||
Vector_3 Reflect(Vector_3& ini, double t,Vector_3 &dir, double *box, int flag=0x7, const Vector_3 &force=Vector_3());
|
||||
|
||||
|
||||
inline vec_type vec_area(const Vector_2 &vect1, const Vector_2 &vect2) {
|
||||
|
||||
Reference in New Issue
Block a user