00001 /* ======================================================================== 00002 * PROJECT: ARToolKitPlus 00003 * ======================================================================== 00004 * 00005 * The robust pose estimator algorithm has been provided by G. Schweighofer 00006 * and A. Pinz (Inst.of El.Measurement and Measurement Signal Processing, 00007 * Graz University of Technology). Details about the algorithm are given in 00008 * a Technical Report: TR-EMT-2005-01, available at: 00009 * http://www.emt.tu-graz.ac.at/publications/index.htm 00010 * 00011 * Ported from MATLAB to C by T.Pintaric (Vienna University of Technology). 00012 * 00013 * Copyright of the derived and new portions of this work 00014 * (C) 2006 Graz University of Technology 00015 * 00016 * This framework is free software; you can redistribute it and/or modify 00017 * it under the terms of the GNU General Public License as published by 00018 * the Free Software Foundation; either version 2 of the License, or 00019 * (at your option) any later version. 00020 * 00021 * This framework is distributed in the hope that it will be useful, 00022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00024 * GNU General Public License for more details. 00025 * 00026 * You should have received a copy of the GNU General Public License 00027 * along with this framework; if not, write to the Free Software 00028 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00029 * 00030 * For further information please contact 00031 * Dieter Schmalstieg 00032 * <schmalstieg@icg.tu-graz.ac.at> 00033 * Graz University of Technology, 00034 * Institut for Computer Graphics and Vision, 00035 * Inffeldgasse 16a, 8010 Graz, Austria. 00036 * ======================================================================== 00037 ** @author Thomas Pintaric 00038 * 00039 * $Id: rpp_types.h 162 2006-04-19 21:28:10Z grabner $ 00040 * @file 00041 * ======================================================================== */ 00042 00043 00044 00045 #ifndef __RPP_TYPES_H__ 00046 #define __RPP_TYPES_H__ 00047 00048 #include <vector> 00049 #include "rpp_const.h" 00050 00051 // 00052 // _USE_CUSTOMFLOAT_ is defined in rpp_const.h 00053 // 00054 00055 #ifdef _USE_CUSTOMFLOAT_ 00056 # include "../math/artkpFloat_float.h" 00057 #endif 00058 00059 namespace rpp { 00060 00061 #ifdef _USE_CUSTOMFLOAT_ 00062 typedef artkpFloat_float<float> real_t; 00063 #else 00064 typedef double real_t; 00065 #endif 00066 00067 // standard types 00068 // 00069 typedef real_t vec3[3]; 00070 struct vec3_t { vec3 v; }; 00071 typedef std::vector<vec3_t> vec3_array; 00072 typedef std::vector<vec3_t>::iterator vec3_array_iter; 00073 typedef std::vector<vec3_t>::const_iterator vec3_array_const_iter; 00074 00075 typedef real_t mat33[3][3]; 00076 struct mat33_t { mat33 m; }; 00077 typedef std::vector<mat33_t> mat33_array; 00078 typedef std::vector<mat33_t>::iterator mat33_array_iter; 00079 typedef std::vector<mat33_t>::const_iterator mat33_array_const_iter; 00080 00081 typedef std::vector<real_t> scalar_array; 00082 00083 00084 00085 struct pose_t 00086 { 00087 mat33_t R; 00088 vec3_t t; 00089 real_t E; 00090 mat33_t PoseLu_R; 00091 vec3_t PoseLu_t; 00092 real_t obj_err; 00093 }; 00094 00095 typedef std::vector<pose_t> pose_vec; 00096 00097 struct quat_t 00098 { 00099 vec3_t v; 00100 real_t s; 00101 }; 00102 00103 struct options_t 00104 { 00105 mat33_t initR; 00106 real_t tol; 00107 real_t epsilon; 00108 unsigned int max_iter; 00109 }; 00110 00111 } // namespace rpp 00112 #endif