<
classT>
class CVect2;
47 template<
classT>
class CVect3;
48 template<
classT>
class CVect4;
88 template<
classT,
classU>
94(v1[0]+
v2[0], v1[1]+
v2[1]);
98 template<
classT,
classU>
104(v1[0]+
v2[0], v1[1]+
v2[1], v1[2]+
v2[2]);
108 template<
classT,
classU>
114(v1[0]+
v2[0], v1[1]+
v2[1], v1[2]+
v2[2], v1[3]+
v2[3]);
124 #define NCBI_ADD_VECT2(type) \ 126 inline CVect2< NCBI_PROMOTE(type,U) > \ 127 operator+ (type v1, const CVect2<U>& v2) \ 130 CVect2< NCBI_PROMOTE(type,U) > \ 131 (v1 + v2[0], v1 + v2[1]); \ 134 inline CVect2< NCBI_PROMOTE(T,type) > \ 135 operator+ (const CVect2<T>& v1, type v2) \ 138 CVect2< NCBI_PROMOTE(T,type) > \ 139 (v1[0] + v2, v1[1] + v2); \ 147 #undef NCBI_ADD_VECT2 150 #define NCBI_ADD_VECT3(type) \ 152 inline CVect3< NCBI_PROMOTE(type,U) > \ 153 operator+ (type v1, const CVect3<U>& v2) \ 156 CVect3< NCBI_PROMOTE(type,U) > \ 157 (v1 + v2[0], v1 + v2[1], v1 + v2[2]); \ 160 inline CVect3< NCBI_PROMOTE(T,type) > \ 161 operator+ (const CVect3<T>& v1, type v2) \ 164 CVect3< NCBI_PROMOTE(T,type) > \ 165 (v1[0] + v2, v1[1] + v2, v1[2] + v2); \ 173 #undef NCBI_ADD_VECT3 176 #define NCBI_ADD_VECT4(type) \ 178 inline CVect4< NCBI_PROMOTE(type,U) > \ 179 operator+ (type v1, const CVect4<U>& v2) \ 182 CVect4< NCBI_PROMOTE(type,U) > \ 183 (v1 + v2[0], v1 + v2[1], v1 + v2[2], v1 + v2[3]); \ 186 inline CVect4< NCBI_PROMOTE(T,type) > \ 187 operator+ (const CVect4<T>& v1, type v2) \ 190 CVect4< NCBI_PROMOTE(T,type) > \ 191 (v1[0] + v2, v1[1] + v2, v1[2] + v2, v1[3] + v2); \ 199 #undef NCBI_ADD_VECT4 225 return CVect4<T>(-v[0], -v[1], -v[2], -v[3]);
231 template<
classT,
classU>
237(v1[0]-
v2[0], v1[1]-
v2[1]);
241 template<
classT,
classU>
247(v1[0]-
v2[0], v1[1]-
v2[1], v1[2]-
v2[2]);
251 template<
classT,
classU>
257(v1[0]-
v2[0], v1[1]-
v2[1], v1[2]-
v2[2], v1[3]-
v2[3]);
267 #define NCBI_SUBTRACT_VECT2(type) \ 269 inline CVect2< NCBI_PROMOTE(type,U) > \ 270 operator- (type v1, const CVect2<U>& v2) \ 273 CVect2< NCBI_PROMOTE(type,U) > \ 274 (v1 - v2[0], v1 - v2[1]); \ 277 inline CVect2< NCBI_PROMOTE(T,type) > \ 278 operator- (const CVect2<T>& v1, type v2) \ 281 CVect2< NCBI_PROMOTE(T,type) > \ 282 (v1[0] - v2, v1[1] - v2); \ 290 #undef NCBI_SUBTRACT_VECT2 293 #define NCBI_SUBTRACT_VECT3(type) \ 295 inline CVect3< NCBI_PROMOTE(type,U) > \ 296 operator- (type v1, const CVect3<U>& v2) \ 299 CVect3< NCBI_PROMOTE(type,U) > \ 300 (v1 - v2[0], v1 - v2[1], v1 - v2[2]); \ 303 inline CVect3< NCBI_PROMOTE(T,type) > \ 304 operator- (const CVect3<T>& v1, type v2) \ 307 CVect3< NCBI_PROMOTE(T,type) > \ 308 (v1[0] - v2, v1[1] - v2, v1[2] - v2); \ 316 #undef NCBI_SUBTRACT_VECT3 319 #define NCBI_SUBTRACT_VECT4(type) \ 321 inline CVect4< NCBI_PROMOTE(type,U) > \ 322 operator- (type v1, const CVect4<U>& v2) \ 325 CVect4< NCBI_PROMOTE(type,U) > \ 326 (v1 - v2[0], v1 - v2[1], v1 - v2[2], v1 - v2[3]); \ 329 inline CVect4< NCBI_PROMOTE(T,type) > \ 330 operator- (const CVect4<T>& v1, type v2) \ 333 CVect4< NCBI_PROMOTE(T,type) > \ 334 (v1[0] - v2, v1[1] - v2, v1[2] - v2, v1[3] - v2); \ 342 #undef NCBI_SUBTRACT_VECT4 352 #define NCBI_MULTIPLY_VECT2(type) \ 354 inline CVect2< NCBI_PROMOTE(type,U) > \ 355 operator* (type v1, const CVect2<U>& v2) \ 358 CVect2< NCBI_PROMOTE(type,U) > \ 359 (v1 * v2[0], v1 * v2[1]); \ 362 inline CVect2< NCBI_PROMOTE(T,type) > \ 363 operator* (const CVect2<T>& v1, type v2) \ 366 CVect2< NCBI_PROMOTE(T,type) > \ 367 (v1[0] * v2, v1[1] * v2); \ 375 #undef NCBI_MULTIPLY_VECT2 378 #define NCBI_MULTIPLY_VECT3(type) \ 380 inline CVect3< NCBI_PROMOTE(type,U) > \ 381 operator* (type v1, const CVect3<U>& v2) \ 384 CVect3< NCBI_PROMOTE(type,U) > \ 385 (v1 * v2[0], v1 * v2[1], v1 * v2[2]); \ 388 inline CVect3< NCBI_PROMOTE(T,type) > \ 389 operator* (const CVect3<T>& v1, type v2) \ 392 CVect3< NCBI_PROMOTE(T,type) > \ 393 (v1[0] * v2, v1[1] * v2, v1[2] * v2); \ 401 #undef NCBI_MULTIPLY_VECT3 404 #define NCBI_MULTIPLY_VECT4(type) \ 406 inline CVect4< NCBI_PROMOTE(type,U) > \ 407 operator* (type v1, const CVect4<U>& v2) \ 410 CVect4< NCBI_PROMOTE(type,U) > \ 411 (v1 * v2[0], v1 * v2[1], v1 * v2[2], v1 * v2[3]); \ 414 inline CVect4< NCBI_PROMOTE(T,type) > \ 415 operator* (const CVect4<T>& v1, type v2) \ 418 CVect4< NCBI_PROMOTE(T,type) > \ 419 (v1[0] * v2, v1[1] * v2, v1[2] * v2, v1[3] * v2); \ 427 #undef NCBI_MULTIPLY_VECT4 437 template<
classT,
classU>
441 return(v1[0] *
v2[0] +
446 template<
classT,
classU>
450 return(v1[0] *
v2[0] +
456 template<
classT,
classU>
460 return(v1[0] *
v2[0] +
471 template<
classT,
classU>
478(v1[0]*
v2, v1[1]*
v2);
482 template<
classT,
classU>
489(v1[0]*
v2, v1[1]*
v2, v1[2]*
v2);
493 template<
classT,
classU>
500(v1[0]*
v2, v1[1]*
v2, v1[2]*
v2, v1[3]*
v2);
507 template<
classT,
classU>
511 return(v1[0] ==
v2[0] &&
516 template<
classT,
classU>
520 return(v1[0] ==
v2[0] &&
526 template<
classT,
classU>
530 return(v1[0] ==
v2[0] &&
540 template<
classT,
classU>
544 if(v1[0] <
v2[0]) {
546}
else if(v1[0] >
v2[0]) {
550 if(v1[1] <
v2[1]) {
558 template<
classT,
classU>
562 if(v1[0] <
v2[0]) {
564}
else if(v1[0] >
v2[0]) {
568 if(v1[1] <
v2[1]) {
570}
else if(v1[1] >
v2[1]) {
574 if(v1[2] <
v2[2]) {
582 template<
classT,
classU>
586 if(v1[0] <
v2[0]) {
588}
else if(v1[0] >
v2[0]) {
592 if(v1[1] <
v2[1]) {
594}
else if(v1[1] >
v2[1]) {
598 if(v1[2] <
v2[2]) {
600}
else if(v1[2] >
v2[2]) {
604 if(v1[3] <
v2[3]) {
624 template<
classT,
classU>
630(m1[0]+m2[0], m1[1]+m2[1], m1[2]+m2[2],
631m1[3]+m2[3], m1[4]+m2[4], m1[5]+m2[5],
632m1[6]+m2[6], m1[7]+m2[7], m1[8]+m2[8]);
636 template<
classT,
classU>
642(m1[ 0]+m2[ 0], m1[ 1]+m2[ 1], m1[ 2]+m2[ 2], m1[ 3]+m2[ 3],
643m1[ 4]+m2[ 4], m1[ 5]+m2[ 5], m1[ 6]+m2[ 6], m1[ 7]+m2[ 7],
644m1[ 8]+m2[ 8], m1[ 9]+m2[ 9], m1[10]+m2[10], m1[11]+m2[11],
645m1[12]+m2[12], m1[13]+m2[13], m1[14]+m2[14], m1[15]+m2[15]);
652 #define NCBI_ADD_MATRIX3(type) \ 654 inline CMatrix3< NCBI_PROMOTE(type,U) > \ 655 operator+ (type s, const CMatrix3<U>& m) \ 658 CMatrix3< NCBI_PROMOTE(type,U) > \ 659 (m[0]+s, m[1]+s, m[2]+s, \ 660 m[3]+s, m[4]+s, m[5]+s, \ 661 m[6]+s, m[7]+s, m[8]+s); \ 664 inline CMatrix3< NCBI_PROMOTE(T,type) > \ 665 operator+ (const CMatrix3<T>& m, type s) \ 668 CMatrix3< NCBI_PROMOTE(T,type) > \ 669 (m[0]+s, m[1]+s, m[2]+s, \ 670 m[3]+s, m[4]+s, m[5]+s, \ 671 m[6]+s, m[7]+s, m[8]+s); \ 679 #undef NCBI_ADD_MATRIX3 682 #define NCBI_ADD_MATRIX4(type) \ 684 inline CMatrix4< NCBI_PROMOTE(type,U) > \ 685 operator+ (type s, const CMatrix4<U>& m) \ 688 CMatrix4< NCBI_PROMOTE(type,U) > \ 689 (m[ 0]+s, m[ 1]+s, m[ 2]+s, m[ 3]+s, \ 690 m[ 4]+s, m[ 5]+s, m[ 6]+s, m[ 7]+s, \ 691 m[ 8]+s, m[ 9]+s, m[10]+s, m[11]+s, \ 692 m[12]+s, m[13]+s, m[14]+s, m[15]+s); \ 695 inline CMatrix4< NCBI_PROMOTE(T,type) > \ 696 operator+ (const CMatrix4<T>& m, type s) \ 699 CMatrix4< NCBI_PROMOTE(T,type) > \ 700 (m[ 0]+s, m[ 1]+s, m[ 2]+s, m[ 3]+s, \ 701 m[ 4]+s, m[ 5]+s, m[ 6]+s, m[ 7]+s, \ 702 m[ 8]+s, m[ 9]+s, m[10]+s, m[11]+s, \ 703 m[12]+s, m[13]+s, m[14]+s, m[15]+s); \ 710 #undef NCBI_ADD_MATRIX3 716 #define NCBI_SUBTRACT_MATRIX3(type) \ 718 inline CMatrix3< NCBI_PROMOTE(type,U) > \ 719 operator- (type s, const CMatrix3<U>& m) \ 722 CMatrix3< NCBI_PROMOTE(type,U) > \ 723 (m[0]-s, m[1]-s, m[2]-s, \ 724 m[3]-s, m[4]-s, m[5]-s, \ 725 m[6]-s, m[7]-s, m[8]-s); \ 728 inline CMatrix3< NCBI_PROMOTE(T,type) > \ 729 operator- (const CMatrix3<T>& m, type s) \ 732 CMatrix3< NCBI_PROMOTE(T,type) > \ 733 (m[0]-s, m[1]-s, m[2]-s, \ 734 m[3]-s, m[4]-s, m[5]-s, \ 735 m[6]-s, m[7]-s, m[8]-s); \ 743 #undef NCBI_SUBTRACT_MATRIX3 746 #define NCBI_SUBTRACT_MATRIX4(type) \ 748 inline CMatrix4< NCBI_PROMOTE(type,U) > \ 749 operator- (type s, const CMatrix4<U>& m) \ 752 CMatrix4< NCBI_PROMOTE(type,U) > \ 753 (m[ 0]-s, m[ 1]-s, m[ 2]-s, m[ 3]-s, \ 754 m[ 4]-s, m[ 5]-s, m[ 6]-s, m[ 7]-s, \ 755 m[ 8]-s, m[ 9]-s, m[10]-s, m[11]-s, \ 756 m[12]-s, m[13]-s, m[14]-s, m[15]-s); \ 759 inline CMatrix4< NCBI_PROMOTE(T,type) > \ 760 operator- (const CMatrix4<T>& m, type s) \ 763 CMatrix4< NCBI_PROMOTE(T,type) > \ 764 (m[ 0]-s, m[ 1]-s, m[ 2]-s, m[ 3]-s, \ 765 m[ 4]-s, m[ 5]-s, m[ 6]-s, m[ 7]-s, \ 766 m[ 8]-s, m[ 9]-s, m[10]-s, m[11]-s, \ 767 m[12]-s, m[13]-s, m[14]-s, m[15]-s); \ 774 #undef NCBI_SUBTRACT_MATRIX3 780 #define NCBI_MULTIPLY_MATRIX3(type) \ 782 inline CMatrix3< NCBI_PROMOTE(type,U) > \ 783 operator* (type s, const CMatrix3<U>& m) \ 786 CMatrix3< NCBI_PROMOTE(type,U) > \ 787 (m[0]*s, m[1]*s, m[2]*s, \ 788 m[3]*s, m[4]*s, m[5]*s, \ 789 m[6]*s, m[7]*s, m[8]*s); \ 792 inline CMatrix3< NCBI_PROMOTE(T,type) > \ 793 operator* (const CMatrix3<T>& m, type s) \ 796 CMatrix3< NCBI_PROMOTE(T,type) > \ 797 (m[0]*s, m[1]*s, m[2]*s, \ 798 m[3]*s, m[4]*s, m[5]*s, \ 799 m[6]*s, m[7]*s, m[8]*s); \ 807 #undef NCBI_MULTIPLY_MATRIX3 810 #define NCBI_MULTIPLY_MATRIX4(type) \ 812 inline CMatrix4< NCBI_PROMOTE(type,U) > \ 813 operator* (type s, const CMatrix4<U>& m) \ 816 CMatrix4< NCBI_PROMOTE(type,U) > \ 817 (m[ 0]*s, m[ 1]*s, m[ 2]*s, m[ 3]*s, \ 818 m[ 4]*s, m[ 5]*s, m[ 6]*s, m[ 7]*s, \ 819 m[ 8]*s, m[ 9]*s, m[10]*s, m[11]*s, \ 820 m[12]*s, m[13]*s, m[14]*s, m[15]*s); \ 823 inline CMatrix4< NCBI_PROMOTE(T,type) > \ 824 operator* (const CMatrix4<T>& m, type s) \ 827 CMatrix4< NCBI_PROMOTE(T,type) > \ 828 (m[ 0]*s, m[ 1]*s, m[ 2]*s, m[ 3]*s, \ 829 m[ 4]*s, m[ 5]*s, m[ 6]*s, m[ 7]*s, \ 830 m[ 8]*s, m[ 9]*s, m[10]*s, m[11]*s, \ 831 m[12]*s, m[13]*s, m[14]*s, m[15]*s); \ 838 #undef NCBI_MULTIPLY_MATRIX3 844 template<
classT,
classU>
850(m1[0]-m2[0], m1[1]-m2[1], m1[2]-m2[2],
851m1[3]-m2[3], m1[4]-m2[4], m1[5]-m2[5],
852m1[6]-m2[6], m1[7]-m2[7], m1[8]-m2[8]);
856 template<
classT,
classU>
862(m1[ 0]-m2[ 0], m1[ 1]-m2[ 1], m1[ 2]-m2[ 2], m1[ 3]-m2[ 3],
863m1[ 4]-m2[ 4], m1[ 5]-m2[ 5], m1[ 6]-m2[ 6], m1[ 7]-m2[ 7],
864m1[ 8]-m2[ 8], m1[ 9]-m2[ 9], m1[10]-m2[10], m1[11]-m2[11],
865m1[12]-m2[12], m1[13]-m2[13], m1[14]-m2[14], m1[15]-m2[15]);
873 template<
classT,
classU>
879(m[0]*v[0] + m[1]*v[1] + m[2]*v[2],
880m[3]*v[0] + m[4]*v[1] + m[5]*v[2],
881m[6]*v[0] + m[7]*v[1] + m[8]*v[2] );
885 template<
classT,
classU>
891(m[ 0]*v[0] + m[ 1]*v[1] + m[ 2]*v[2] + m[ 3]*v[3],
892m[ 4]*v[0] + m[ 5]*v[1] + m[ 6]*v[2] + m[ 7]*v[3],
893m[ 8]*v[0] + m[ 9]*v[1] + m[10]*v[2] + m[11]*v[3],
894m[12]*v[0] + m[13]*v[1] + m[14]*v[2] + m[15]*v[3] );
901 template<
classT,
classU>
907(v[0]*m[0] + v[1]*m[3] + v[2]*m[6],
908v[0]*m[1] + v[1]*m[4] + v[2]*m[7],
909v[0]*m[2] + v[1]*m[5] + v[2]*m[8] );
913 template<
classT,
classU>
919(v[0]*m[ 0] + v[1]*m[ 4] + v[2]*m[ 8] + m[12]*v[3],
920v[0]*m[ 1] + v[1]*m[ 5] + v[2]*m[ 9] + m[13]*v[3],
921v[0]*m[ 2] + v[1]*m[ 6] + v[2]*m[10] + m[14]*v[3],
922v[0]*m[ 3] + v[1]*m[ 7] + v[2]*m[11] + m[15]*v[3] );
929 template<
classT,
classU>
935(m1[0]*m2[0] + m1[1]*m2[3] + m1[2]*m2[6],
936m1[0]*m2[1] + m1[1]*m2[4] + m1[2]*m2[7],
937m1[0]*m2[2] + m1[1]*m2[5] + m1[2]*m2[8],
939m1[3]*m2[0] + m1[4]*m2[3] + m1[5]*m2[6],
940m1[3]*m2[1] + m1[4]*m2[4] + m1[5]*m2[7],
941m1[3]*m2[2] + m1[4]*m2[5] + m1[5]*m2[8],
943m1[6]*m2[0] + m1[7]*m2[3] + m1[8]*m2[6],
944m1[6]*m2[1] + m1[7]*m2[4] + m1[8]*m2[7],
945m1[6]*m2[2] + m1[7]*m2[5] + m1[8]*m2[8]);
949 template<
classT,
classU>
955(m1[ 0]*m2[ 0] + m1[ 1]*m2[ 4] + m1[ 2]*m2[ 8] + m1[ 3]*m2[12],
956m1[ 0]*m2[ 1] + m1[ 1]*m2[ 5] + m1[ 2]*m2[ 9] + m1[ 3]*m2[13],
957m1[ 0]*m2[ 2] + m1[ 1]*m2[ 6] + m1[ 2]*m2[10] + m1[ 3]*m2[14],
958m1[ 0]*m2[ 3] + m1[ 1]*m2[ 7] + m1[ 2]*m2[11] + m1[ 3]*m2[15],
960m1[ 4]*m2[ 0] + m1[ 5]*m2[ 4] + m1[ 6]*m2[ 8] + m1[ 7]*m2[12],
961m1[ 4]*m2[ 1] + m1[ 5]*m2[ 5] + m1[ 6]*m2[ 9] + m1[ 7]*m2[13],
962m1[ 4]*m2[ 2] + m1[ 5]*m2[ 6] + m1[ 6]*m2[10] + m1[ 7]*m2[14],
963m1[ 4]*m2[ 3] + m1[ 5]*m2[ 7] + m1[ 6]*m2[11] + m1[ 7]*m2[15],
965m1[ 8]*m2[ 0] + m1[ 9]*m2[ 4] + m1[10]*m2[ 8] + m1[11]*m2[12],
966m1[ 8]*m2[ 1] + m1[ 9]*m2[ 5] + m1[10]*m2[ 9] + m1[11]*m2[13],
967m1[ 8]*m2[ 2] + m1[ 9]*m2[ 6] + m1[10]*m2[10] + m1[11]*m2[14],
968m1[ 8]*m2[ 3] + m1[ 9]*m2[ 7] + m1[10]*m2[11] + m1[11]*m2[15],
970m1[12]*m2[ 0] + m1[13]*m2[ 4] + m1[14]*m2[ 8] + m1[15]*m2[12],
971m1[12]*m2[ 1] + m1[13]*m2[ 5] + m1[14]*m2[ 9] + m1[15]*m2[13],
972m1[12]*m2[ 2] + m1[13]*m2[ 6] + m1[14]*m2[10] + m1[15]*m2[14],
973m1[12]*m2[ 3] + m1[13]*m2[ 7] + m1[14]*m2[11] + m1[15]*m2[15]);
979 template<
classT,
classU>
986(m1[0]*s, m1[1]*s, m1[2]*s,
987m1[3]*s, m1[4]*s, m1[5]*s,
988m1[6]*s, m1[7]*s, m1[8]*s);
992 template<
classT,
classU>
999(m1[ 0]*s, m1[ 1]*s, m1[ 2]*s, m1[ 3]*s,
1000m1[ 4]*s, m1[ 5]*s, m1[ 6]*s, m1[ 7]*s,
1001m1[ 8]*s, m1[ 9]*s, m1[10]*s, m1[11]*s,
1002m1[12]*s, m1[13]*s, m1[14]*s, m1[15]*s);
Include a standard set of the NCBI C++ Toolkit most basic headers.
CVect2< T > operator-(const CVect2< T > &v)
bool operator==(const CVect2< T > &v1, const CVect2< U > &v2)
#define NCBI_ADD_MATRIX3(type)
#define NCBI_SUBTRACT_MATRIX3(type)
#define NCBI_ADD_VECT2(type)
#define NCBI_MULTIPLY_VECT2(type)
#define NCBI_MULTIPLY_VECT4(type)
#define NCBI_MULTIPLY_MATRIX3(type)
#define NCBI_ADD_VECT3(type)
bool operator<(const CVect2< T > &v1, const CVect2< U > &v2)
#define NCBI_ADD_VECT4(type)
#define NCBI_MULTIPLY_MATRIX4(type)
CVect2< NCBI_PROMOTE(T, U) > operator+(const CVect2< T > &v1, const CVect2< U > &v2)
#define NCBI_SUBTRACT_VECT4(type)
CVect2< NCBI_PROMOTE(T, U) > operator/(const CVect2< T > &v1, U v2)
#define NCBI_SUBTRACT_VECT3(type)
#define NCBI_SUBTRACT_MATRIX4(type)
#define NCBI_ADD_MATRIX4(type)
#define NCBI_SUBTRACT_VECT2(type)
NCBI_PROMOTE(T, U) operator*(const CVect2< T > &v1
#define NCBI_MULTIPLY_VECT3(type)
CVect2< NCBI_PROMOTE(int,U) > operator*(int v1, const CVect2< U > &v2)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4