Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 template<typename T1, typename T2>
00024 inline
00025 void
00026 glue_cross::apply(Mat<typename T1::elem_type>& out, const Glue<T1, T2, glue_cross>& X)
00027 {
00028 arma_extra_debug_sigprint();
00029
00030 typedef typename T1::elem_type eT;
00031
00032 const unwrap<T1> A_tmp(X.A);
00033 const unwrap<T2> B_tmp(X.B);
00034
00035 const Mat<eT>& A = A_tmp.M;
00036 const Mat<eT>& B = B_tmp.M;
00037
00038 arma_debug_check( ((A.n_elem != 3) || (B.n_elem != 3)), "cross(): input vectors must have 3 elements" );
00039
00040 out.set_size(A.n_rows, A.n_cols);
00041
00042 eT* out_ptr = out.memptr();
00043 const eT* A_ptr = A.memptr();
00044 const eT* B_ptr = B.memptr();
00045
00046
00047
00048
00049
00050 const eT ax = A_ptr[0];
00051 const eT ay = A_ptr[1];
00052 const eT az = A_ptr[2];
00053
00054 const eT bx = B_ptr[0];
00055 const eT by = B_ptr[1];
00056 const eT bz = B_ptr[2];
00057
00058 out_ptr[0] = ay*bz - az*by;
00059 out_ptr[1] = az*bx - ax*bz;
00060 out_ptr[2] = ax*by - ay*bx;
00061 }
00062
00063
00064
00065