00001 00002 #include <Navigator_tool.h> 00003 00004 #define PI 3.14259 00005 00006 00007 Navigator_tool::Navigator_tool() 00008 { 00009 kt=0; 00010 N_speed = 260; 00011 start_t=0.0; 00012 end_t=1.0; 00013 X_screen = 640; 00014 Y_screen = 480; 00015 percent_x = 0.65; 00016 percent_y = 0.65; 00017 00018 dist_obs = -84; 00019 dist_obs2 = -1; 00020 dist_obs3 = -1; 00021 dist_obs4 = -1; 00022 00023 current_view = 1; 00024 selection_mode = 0; 00025 selected_joint = -1; 00026 view_selection_mode = 0; 00027 00028 skeleton_shown=0; 00029 } 00030 00031 00032 00033 Navigator_tool::~Navigator_tool() 00034 { 00035 } 00036 00037 int Navigator_tool::set_tr_x(double _tr_x) 00038 {tr_x = _tr_x;return 0;} 00039 int Navigator_tool::set_tr_y(double _tr_y) 00040 {tr_y = _tr_y;return 0;} 00041 int Navigator_tool::set_tr_z(double _tr_z) 00042 {tr_z = _tr_z;return 0;} 00043 double Navigator_tool::get_tr_x() 00044 {return tr_x;} 00045 double Navigator_tool::get_tr_y() 00046 {return tr_y;} 00047 double Navigator_tool::get_tr_z() 00048 {return tr_z;} 00049 00050 int Navigator_tool::set_tr2_x(double _tr2_x) 00051 {tr2_x = _tr2_x;return 0;} 00052 int Navigator_tool::set_tr2_y(double _tr2_y) 00053 {tr2_y = _tr2_y;return 0;} 00054 int Navigator_tool::set_tr2_z(double _tr2_z) 00055 {tr2_z = _tr2_z;return 0;} 00056 double Navigator_tool::get_tr2_x() 00057 {return tr2_x;} 00058 double Navigator_tool::get_tr2_y() 00059 {return tr2_y;} 00060 double Navigator_tool::get_tr2_z() 00061 {return tr2_z;} 00062 00063 00064 int Navigator_tool::set_tr3_x(double _tr3_x) 00065 {tr3_x = _tr3_x;return 0;} 00066 int Navigator_tool::set_tr3_y(double _tr3_y) 00067 {tr3_y = _tr3_y;return 0;} 00068 int Navigator_tool::set_tr3_z(double _tr3_z) 00069 {tr3_z = _tr3_z;return 0;} 00070 double Navigator_tool::get_tr3_x() 00071 {return tr3_x;} 00072 double Navigator_tool::get_tr3_y() 00073 {return tr3_y;} 00074 double Navigator_tool::get_tr3_z() 00075 {return tr3_z;} 00076 00077 00078 int Navigator_tool::set_tr4_x(double _tr4_x) 00079 {tr4_x = _tr4_x;return 0;} 00080 int Navigator_tool::set_tr4_y(double _tr4_y) 00081 {tr4_y = _tr4_y;return 0;} 00082 int Navigator_tool::set_tr4_z(double _tr4_z) 00083 {tr4_z = _tr4_z;return 0;} 00084 double Navigator_tool::get_tr4_x() 00085 {return tr4_x;} 00086 double Navigator_tool::get_tr4_y() 00087 {return tr4_y;} 00088 double Navigator_tool::get_tr4_z() 00089 {return tr4_z;} 00090 00091 00092 00093 00094 int Navigator_tool::set_theta_1(double _theta_1) 00095 {theta_1=_theta_1;return 0;} 00096 int Navigator_tool::set_theta_2(double _theta_2) 00097 {theta_2=_theta_2;return 0;} 00098 double Navigator_tool::get_theta_1() 00099 {return theta_1;} 00100 double Navigator_tool::get_theta_2() 00101 {return theta_2;} 00102 00103 int Navigator_tool::set_width(double _width) 00104 {width=_width;return 0;} 00105 int Navigator_tool::set_height(double _height) 00106 {height=_height;return 0;} 00107 double Navigator_tool::get_width() 00108 {return width;} 00109 double Navigator_tool::get_height() 00110 {return height;} 00111 00112 int Navigator_tool::set_dist_obs(double _dist_obs) 00113 {dist_obs=_dist_obs;return 0;}; 00114 double Navigator_tool::get_dist_obs() 00115 {return dist_obs;} 00116 00117 int Navigator_tool::set_dist_obs2(double _dist_obs2) 00118 {dist_obs2=_dist_obs2;return 0;}; 00119 double Navigator_tool::get_dist_obs2() 00120 {return dist_obs2;} 00121 00122 int Navigator_tool::set_dist_obs3(double _dist_obs3) 00123 {dist_obs3=_dist_obs3;return 0;}; 00124 double Navigator_tool::get_dist_obs3() 00125 {return dist_obs3;} 00126 00127 int Navigator_tool::set_dist_obs4(double _dist_obs4) 00128 {dist_obs4=_dist_obs4;return 0;}; 00129 double Navigator_tool::get_dist_obs4() 00130 {return dist_obs4;} 00131 00132 00133 int Navigator_tool::set_left_b(int _left_b) 00134 {left_b=_left_b;return 0;} 00135 int Navigator_tool::set_right_b(int _right_b) 00136 {right_b=_right_b;return 0;} 00137 int Navigator_tool::get_left_b() 00138 {return left_b;} 00139 int Navigator_tool::get_right_b() 00140 {return right_b;} 00141 00142 int Navigator_tool::set_x_prec(int _x_prec) 00143 {x_prec=_x_prec;return 0;} 00144 int Navigator_tool::set_y_prec(int _y_prec) 00145 {y_prec=_y_prec;return 0;} 00146 int Navigator_tool::get_x_prec() 00147 {return x_prec;} 00148 int Navigator_tool::get_y_prec() 00149 {return y_prec;} 00150 00151 int Navigator_tool::set_sel_x(double _sel_x) 00152 {sel_x=_sel_x;return 0;} 00153 int Navigator_tool::set_sel_y(double _sel_y) 00154 {sel_y=_sel_y;return 0;} 00155 int Navigator_tool::set_sel_z(double _sel_z) 00156 {sel_z=_sel_z;return 0;} 00157 double Navigator_tool::get_sel_x() 00158 {return sel_x;} 00159 double Navigator_tool::get_sel_y() 00160 {return sel_y;} 00161 double Navigator_tool::get_sel_z() 00162 {return sel_z;} 00163 00164 int Navigator_tool::increase_sel_x(double d_x) 00165 {sel_x+=d_x;return 0;} 00166 int Navigator_tool::increase_sel_y(double d_y) 00167 {sel_y+=d_y;return 0;} 00168 int Navigator_tool::increase_sel_z(double d_z) 00169 {sel_z+=d_z;return 0;} 00170 00171 00172 00173 00174 00175 int Navigator_tool::increase_theta_1(double d_theta) 00176 { 00177 theta_1 += d_theta; 00178 return 0; 00179 } 00180 00181 int Navigator_tool::increase_theta_2(double d_theta) 00182 { 00183 theta_2 += d_theta; 00184 return 0; 00185 } 00186 00187 int Navigator_tool::increase_dist_obs(double factor) 00188 { 00189 dist_obs += (abs(dist_obs)+1)*factor; 00190 if(dist_obs>=0) 00191 dist_obs=0; 00192 return 0; 00193 } 00194 int Navigator_tool::increase_dist_obs2(double factor) 00195 { 00196 dist_obs2 += (abs(dist_obs2)+1)*factor; 00197 if(dist_obs2>=0) 00198 dist_obs2=0; 00199 return 0; 00200 } 00201 int Navigator_tool::increase_dist_obs3(double factor) 00202 { 00203 dist_obs3 += (abs(dist_obs3)+1)*factor; 00204 if(dist_obs3>=0) 00205 dist_obs3=0; 00206 return 0; 00207 } 00208 int Navigator_tool::increase_dist_obs4(double factor) 00209 { 00210 dist_obs4 += (abs(dist_obs4)+1)*factor; 00211 if(dist_obs4>=0) 00212 dist_obs4=0; 00213 return 0; 00214 } 00215 00216 00217 00218 int Navigator_tool::go_forward(double d_L) 00219 { 00220 tr_x -= d_L*sin(theta_2*PI/180)*cos(theta_1*PI/180); 00221 tr_y += d_L* sin(theta_1*PI/180); 00222 tr_z += d_L*cos(theta_2*PI/180)*cos(theta_1*PI/180); 00223 00224 return 0; 00225 } 00226 00227 int Navigator_tool::go_backward(double d_L) 00228 { 00229 tr_x += d_L*sin(theta_2*PI/180)*cos(theta_1*PI/180); 00230 tr_y -= d_L* sin(theta_1*PI/180); 00231 tr_z -= d_L*cos(theta_2*PI/180)*cos(theta_1*PI/180); 00232 00233 return 0; 00234 } 00235 00236 int Navigator_tool::go_right(double d_L) 00237 { 00238 00239 tr_x -= d_L*cos(theta_2*PI/180)*cos(theta_1*PI/180); 00240 tr_y -= d_L*0; 00241 tr_z -= d_L*sin(theta_2*PI/180)*cos(theta_1*PI/180); 00242 00243 return 0; 00244 } 00245 00246 int Navigator_tool::go_left(double d_L) 00247 { 00248 tr_x += d_L*cos(theta_2*PI/180)*cos(theta_1*PI/180); 00249 tr_y -= d_L*0; 00250 tr_z += d_L*sin(theta_2*PI/180)*cos(theta_1*PI/180); 00251 00252 return 0; 00253 } 00254 00255 int Navigator_tool::go_up(double d_L) 00256 { 00257 tr_x -= d_L*sin(theta_2*PI/180)*sin(theta_1*PI/180); 00258 tr_y -= d_L* cos(theta_1*PI/180); 00259 tr_z += d_L*cos(theta_2*PI/180)*sin(theta_1*PI/180); 00260 00261 return 0; 00262 } 00263 00264 int Navigator_tool::go_down(double d_L) 00265 { 00266 tr_x += d_L*sin(theta_2*PI/180)*sin(theta_1*PI/180); 00267 tr_y += d_L* cos(theta_1*PI/180); 00268 tr_z -= d_L*cos(theta_2*PI/180)*sin(theta_1*PI/180); 00269 00270 return 0; 00271 } 00272 00273 int Navigator_tool::increase_time() 00274 {++kt;return 0;} 00275 00276 int Navigator_tool::get_counter() 00277 {return kt;} 00278 00279 00280 double Navigator_tool::get_time() 00281 { 00282 //double start_t=0.28; 00283 //double end_t = 1.4; 00284 00285 double y=(double)(kt%(int)N_speed)/(double)(N_speed+1); 00286 double u = start_t + y*(end_t-start_t); 00287 //double u = 0.001 + y*0.998; 00288 return u; 00289 } 00290 00291 00292 int Navigator_tool::set_screen_size(int _X_screen,int _Y_screen) 00293 { 00294 X_screen = _X_screen; 00295 Y_screen = _Y_screen; 00296 return 0; 00297 } 00298 int Navigator_tool::get_X_screen() const 00299 {return X_screen;} 00300 int Navigator_tool::get_Y_screen() const 00301 {return Y_screen;} 00302 00303 double Navigator_tool::get_screen_ratio() const 00304 { 00305 return (double)X_screen/(double)Y_screen; 00306 } 00307 00308 int Navigator_tool::set_percent_x(double _percent_x) 00309 {percent_x = _percent_x;return 0;} 00310 int Navigator_tool::set_percent_y(double _percent_y) 00311 {percent_y = _percent_y;return 0;} 00312 double Navigator_tool::get_percent_x() const 00313 {return percent_x;} 00314 double Navigator_tool::get_percent_y() const 00315 {return percent_y;} 00316 00317 00318 int Navigator_tool::set_current_view(int _current_view) 00319 {current_view = _current_view;return 0;} 00320 int Navigator_tool::get_current_view() const 00321 {return current_view;} 00322 00323 int Navigator_tool::get_selection_mode() const 00324 {return selection_mode;return 0;} 00325 int Navigator_tool::set_selection_mode(int mode) 00326 {selection_mode = mode;return 0;} 00327 00328 int Navigator_tool::set_selected_joint(int _selected_joint) 00329 {selected_joint = _selected_joint;return 0;} 00330 int Navigator_tool::get_selected_joint() const 00331 {return selected_joint;} 00332 00333 int Navigator_tool::get_view_selection_mode() const 00334 {return view_selection_mode;} 00335 int Navigator_tool::set_view_selection_mode(int _view_selection_mode) 00336 {view_selection_mode = _view_selection_mode;return 0;} 00337 00338 int Navigator_tool::get_rotation_mode() const 00339 {return rotation_mode;} 00340 int Navigator_tool::set_rotation_mode(int _rotation_mode) 00341 {rotation_mode=_rotation_mode;return 0;} 00342 00343 00344 int Navigator_tool::set_N_speed(int _N_speed) 00345 { 00346 N_speed=_N_speed; 00347 return 0; 00348 } 00349 00350 int Navigator_tool::get_N_speed() const 00351 {return (int)N_speed;} 00352 00353 V_3D Navigator_tool::get_current_position() const 00354 { 00355 V_3D current; 00356 00357 current[0] = tr_x-dist_obs*sin(theta_2*PI/180)*cos(theta_1*PI/180); 00358 current[1] = tr_y+dist_obs *sin(theta_1*PI/180); 00359 current[2] = tr_z+dist_obs*cos(theta_2*PI/180)*cos(theta_1*PI/180); 00360 00361 return current; 00362 } 00363 00364 int Navigator_tool::is_skeleton_shown() const{return skeleton_shown;} 00365 int Navigator_tool::set_skeleton_shown(int is_shown){skeleton_shown=is_shown;return 0;}
1.5.6