int main (int argc, char** argv) { Graph *G; CayleyGraph *C; G = get_D(6); C = G -> make_cayley_graph(); std::cout << C -> identify_group() << std::endl; delete C,G; G = get_Q8(); C = G -> make_cayley_graph(); std::cout << C -> identify_group() << std::endl; delete C,G; Graph *G1, *G2, *G3, *G4; CayleyGraph *C1,*C2,*C3; G1 = get_Z(4); G2 = get_Z(1); G3 = get_Q8(); G4 = get_Z(1); C1 = direct_product(*(G1->make_cayley_graph()), *(G2->make_cayley_graph())); C2 = direct_product(*(G3->make_cayley_graph()), *(G4->make_cayley_graph())); C3 = direct_product(*C1,*C2); std::cout << "Direct product 1: " << C1 -> identify_group() << std::endl; std::cout << "Direct product 2: " << C2 -> identify_group() << std::endl; std::cout << "Direct product 3: " << C3 -> identify_group() << std::endl; delete G1,G2,G3,G4,C1,C2,C3; return 0; }
/*! Print to stdout the values of the current visual feature. \param select : Selection of a subset of the possible 2D image point feature coordinates. - To print all the two polar coordinates \f$(\rho,\theta)\f$ used as features use vpBasicFeature::FEATURE_ALL. - To print only one of the polar coordinate feature \f$(\rho,\theta)\f$ use one of the corresponding function selectRho() or selectTheta(). \code // Creation of the current feature s vpFeaturePointPolar s; s.buildFrom(0.1, M_PI_2, 1.3); s.print(); // print all the 2 components of the image point feature s.print(vpBasicFeature::FEATURE_ALL); // same behavior then previous line s.print(vpFeaturePointPolar::selectRho()); // print only the rho component \endcode */ void vpFeaturePointPolar::print(const unsigned int select ) const { std::cout <<"Point: Z=" << get_Z() ; if (vpFeaturePointPolar::selectRho() & select ) std::cout << " rho=" << get_rho() ; if (vpFeaturePointPolar::selectTheta() & select ) std::cout << " theta=" << get_theta() ; std::cout <<std::endl ; }
/*! Print to stdout the values of the current visual feature \f$ s \f$. \param select : Selection of a subset of the possible 3D point feature coordinates. - To print all the three coordinates used as features use vpBasicFeature::FEATURE_ALL. - To print only one of the coordinate feature \f$(X,Y,Z)\f$ use one of the corresponding function selectX(), selectX() or selectZ(). \code vpPoint point; // Creation of the current feature s vpFeaturePoint3D s; s.buildFrom(point); s.print(); // print all the 3 components of the translation feature s.print(vpBasicFeature::FEATURE_ALL); // same behavior then previous line s.print(vpFeaturePoint3D::selectZ()); // print only the Z component \endcode */ void vpFeaturePoint3D::print(const unsigned int select ) const { std::cout <<"Point3D: " ; if (vpFeaturePoint3D::selectX() & select ) std::cout << " X=" << get_X() ; if (vpFeaturePoint3D::selectY() & select ) std::cout << " Y=" << get_Y() ; if (vpFeaturePoint3D::selectZ() & select ) std::cout << " Z=" << get_Z() ; std::cout <<std::endl ; }
void test_Z() { // RUN: c-index-test -code-completion-at=%s:23:11 %s | FileCheck -check-prefix=CHECK-MEMBER %s get_Z().member = 17; }
/*! Compute and return the interaction matrix \f$ L \f$ associated to a subset of the possible 3D point features \f$(X,Y,Z)\f$ that represent the 3D point coordinates expressed in the camera frame. \f[ L = \left[ \begin{array}{rrrrrr} -1 & 0 & 0 & 0 & -Z & Y \\ 0 & -1 & 0 & Z & 0 & -X \\ 0 & 0 & -1 & -Y & X & 0 \\ \end{array} \right] \f] \param select : Selection of a subset of the possible 3D point coordinate features. - To compute the interaction matrix for all the three subset features \f$(X,Y,Z)\f$ use vpBasicFeature::FEATURE_ALL. In that case the dimension of the interaction matrix is \f$ [3 \times 6] \f$ - To compute the interaction matrix for only one of the subset (\f$X, Y,Z\f$) use one of the corresponding function selectX(), selectY() or selectZ(). In that case the returned interaction matrix is \f$ [1 \times 6] \f$ dimension. \return The interaction matrix computed from the 3D point coordinate features. The code below shows how to compute the interaction matrix associated to the visual feature \f$s = X \f$. \code vpPoint point; ... // Creation of the current feature s vpFeaturePoint3D s; s.buildFrom(point); vpMatrix L_X = s.interaction( vpFeaturePoint3D::selectX() ); \endcode The code below shows how to compute the interaction matrix associated to the \f$s = (X,Y) \f$ subset visual feature: \code vpMatrix L_XY = s.interaction( vpFeaturePoint3D::selectX() | vpFeaturePoint3D::selectY() ); \endcode L_XY is here now a 2 by 6 matrix. The first line corresponds to the \f$ X \f$ visual feature while the second one to the \f$ Y \f$ visual feature. It is also possible to build the interaction matrix from all the 3D point coordinates by: \code vpMatrix L_XYZ = s.interaction( vpBasicFeature::FEATURE_ALL ); \endcode In that case, L_XYZ is a 3 by 6 interaction matrix where the last line corresponds to the \f$ Z \f$ visual feature. */ vpMatrix vpFeaturePoint3D::interaction(const unsigned int select) { vpMatrix L ; L.resize(0,6) ; if (deallocate == vpBasicFeature::user) { for (unsigned int i = 0; i < nbParameters; i++) { if (flags[i] == false) { switch(i){ case 0: vpTRACE("Warning !!! The interaction matrix is computed but X was not set yet"); break; case 1: vpTRACE("Warning !!! The interaction matrix is computed but Y was not set yet"); break; case 2: vpTRACE("Warning !!! The interaction matrix is computed but Z was not set yet"); break; default: vpTRACE("Problem during the reading of the variable flags"); } } } resetFlags(); } double X = get_X() ; double Y = get_Y() ; double Z = get_Z() ; if (vpFeaturePoint3D::selectX() & select ) { vpMatrix Lx(1,6) ; Lx = 0; Lx[0][0] = -1 ; Lx[0][1] = 0 ; Lx[0][2] = 0 ; Lx[0][3] = 0 ; Lx[0][4] = -Z ; Lx[0][5] = Y ; L = vpMatrix::stackMatrices(L,Lx) ; } if (vpFeaturePoint3D::selectY() & select ) { vpMatrix Ly(1,6) ; Ly = 0; Ly[0][0] = 0 ; Ly[0][1] = -1 ; Ly[0][2] = 0 ; Ly[0][3] = Z ; Ly[0][4] = 0 ; Ly[0][5] = -X ; L = vpMatrix::stackMatrices(L,Ly) ; } if (vpFeaturePoint3D::selectZ() & select ) { vpMatrix Lz(1,6) ; Lz = 0; Lz[0][0] = 0 ; Lz[0][1] = 0 ; Lz[0][2] = -1 ; Lz[0][3] = -Y ; Lz[0][4] = X ; Lz[0][5] = 0 ; L = vpMatrix::stackMatrices(L,Lz) ; } return L ; }
/*! Compute and return the interaction matrix \f$ L \f$ associated to a subset of the possible 2D image point features with polar coordinates \f$(\rho,\theta)\f$. \f[ L = \left[ \begin{array}{l} L_{\rho} \\ \; \\ L_{\theta}\\ \end{array} \right] = \left[ \begin{array}{cccccc} \frac{-\cos \theta}{Z} & \frac{-\sin \theta}{Z} & \frac{\rho}{Z} & (1+\rho^2)\sin\theta & -(1+\rho^2)\cos\theta & 0 \\ \; \\ \frac{\sin\theta}{\rho Z} & \frac{-\cos\theta}{\rho Z} & 0 & \cos\theta /\rho & \sin\theta/\rho & -1 \\ \end{array} \right] \f] where \f$Z\f$ is the 3D depth of the considered point. \param select : Selection of a subset of the possible polar point coordinate features. - To compute the interaction matrix for all the two subset features \f$(\rho,\theta)\f$ use vpBasicFeature::FEATURE_ALL. In that case the dimension of the interaction matrix is \f$ [2 \times 6] \f$ - To compute the interaction matrix for only one of the subset (\f$\rho,\theta\f$) use one of the corresponding function selectRho() or selectTheta(). In that case the returned interaction matrix is \f$ [1 \times 6] \f$ dimension. \return The interaction matrix computed from the 2D point polar coordinate features. \exception vpFeatureException::badInitializationError : If the point is behind the camera \f$(Z < 0)\f$, or if the 3D depth is null \f$(Z = 0)\f$, or if the \f$\rho\f$ polar coordinate of the point is null. The code below shows how to compute the interaction matrix associated to the visual feature \f$s = (\rho,\theta)\f$. \code vpFeaturePointPolar s; double rho = 0.3; double theta = M_PI; double Z = 1; // Creation of the current feature s s.buildFrom(rho, theta, Z); // Build the interaction matrix L_s vpMatrix L = s.interaction(); \endcode The interaction matrix could also be build by: \code vpMatrix L = s.interaction( vpBasicFeature::FEATURE_ALL ); \endcode In both cases, L is a 2 by 6 matrix. The first line corresponds to the \f$\rho\f$ visual feature while the second one to the \f$\theta\f$ visual feature. It is also possible to build the interaction matrix associated to one of the possible features. The code below shows how to consider only the \f$\theta\f$ component. \code vpMatrix L_theta = s.interaction( vpFeaturePointPolar::selectTheta() ); \endcode In that case, L_theta is a 1 by 6 matrix. */ vpMatrix vpFeaturePointPolar::interaction(const unsigned int select) { vpMatrix L ; L.resize(0,6) ; if (deallocate == vpBasicFeature::user) { for (unsigned int i = 0; i < nbParameters; i++) { if (flags[i] == false) { switch(i){ case 0: vpTRACE("Warning !!! The interaction matrix is computed but rho was not set yet"); break; case 1: vpTRACE("Warning !!! The interaction matrix is computed but theta was not set yet"); break; case 2: vpTRACE("Warning !!! The interaction matrix is computed but Z was not set yet"); break; default: vpTRACE("Problem during the reading of the variable flags"); } } } resetFlags(); } double rho = get_rho() ; double theta = get_theta() ; double Z_ = get_Z() ; double c_ = cos(theta); double s_ = sin(theta); double rho2 = rho*rho; if (fabs(rho) < 1e-6) { vpERROR_TRACE("rho polar coordinate of the point is null") ; std::cout <<"rho = " << rho << std::endl ; throw(vpFeatureException(vpFeatureException::badInitializationError, "rho polar coordinate of the point is null")) ; } if (Z_ < 0) { vpERROR_TRACE("Point is behind the camera ") ; std::cout <<"Z = " << Z_ << std::endl ; throw(vpFeatureException(vpFeatureException::badInitializationError, "Point is behind the camera ")) ; } if (fabs(Z_) < 1e-6) { vpERROR_TRACE("Point Z coordinates is null ") ; std::cout <<"Z = " << Z_ << std::endl ; throw(vpFeatureException(vpFeatureException::badInitializationError, "Point Z coordinates is null")) ; } if (vpFeaturePointPolar::selectRho() & select ) { vpMatrix Lrho(1,6) ; Lrho = 0; Lrho[0][0] = -c_/Z_ ; Lrho[0][1] = -s_/Z_ ; Lrho[0][2] = rho/Z_ ; Lrho[0][3] = (1+rho2)*s_ ; Lrho[0][4] = -(1+rho2)*c_ ; Lrho[0][5] = 0 ; // printf("Lrho: rho %f theta %f Z %f\n", rho, theta, Z); // std::cout << "Lrho: " << Lrho << std::endl; L = vpMatrix::stackMatrices(L,Lrho) ; } if (vpFeaturePointPolar::selectTheta() & select ) { vpMatrix Ltheta(1,6) ; Ltheta = 0; Ltheta[0][0] = s_/(rho*Z_) ; Ltheta[0][1] = -c_/(rho*Z_) ; Ltheta[0][2] = 0 ; Ltheta[0][3] = c_/rho ; Ltheta[0][4] = s_/rho ; Ltheta[0][5] = -1 ; // printf("Ltheta: rho %f theta %f Z %f\n", rho, theta, Z); // std::cout << "Ltheta: " << Ltheta << std::endl; L = vpMatrix::stackMatrices(L,Ltheta) ; } return L ; }
void cvqual_subsume_test(Z z) { cvqual_subsume(z); // expected-error{{call to 'cvqual_subsume' is ambiguous; candidates are:}} int& x = cvqual_subsume2(get_Z()); // expected-error{{call to 'cvqual_subsume2' is ambiguous; candidates are:}} }
void cvqual_subsume_test(Z z) { cvqual_subsume(z); // expected-error{{call to 'cvqual_subsume' is ambiguous; candidates are:}} int& x = cvqual_subsume2(get_Z()); // okay: only binds to the first one }