static void CB_node_counter(FL_OBJECT *ob, long arg){ int num_node; p3d_list_node* list_node; int i; pp3d_rob robotPt; int max_count; configPt q_copy; robotPt = (p3d_rob*) p3d_get_desc_curid(P3D_ROBOT); if(XYZ_GRAPH != NULL) { fl_set_counter_bounds(NODE_COUNTER, 1, (double)( XYZ_GRAPH->nnode)); num_node = (int) fl_get_counter_value(NODE_COUNTER); list_node = XYZ_GRAPH->nodes; max_count = MIN(num_node, XYZ_GRAPH->nnode); for(i = 1; i<max_count;i++) { list_node = list_node->next; } if(list_node!=NULL){ q_copy = p3d_copy_config(robotPt,list_node->N->q); // p3d_set_robot_config(robotPt,q_copy); p3d_set_and_update_this_robot_conf_multisol(robotPt, q_copy, NULL, 0, list_node->N->iksol); p3d_set_robot_iksol(robotPt, list_node->N->iksol); //edit mokhtar création de trajectoires p3d_copy_config_into(robotPt, q_copy, &(robotPt->ROBOT_POS)); p3d_copy_iksol(robotPt->cntrt_manager, list_node->N->iksol, &robotPt->ikSolPos); // Very strange : g3d_draw_allwin_active() must //be called twice to draw correctly the position of the robot g3d_draw_allwin_active(); g3d_draw_allwin_active(); } }else{ fl_set_counter_bounds(NODE_COUNTER, 0, 0); } }
void cnt_precision_cb( FL_OBJECT * obj, long data FL_UNUSED_ARG ) { fl_set_counter_precision( curobj, fl_get_counter_value( obj ) ); redraw_the_form( 0 ); }
static void CB_ndraw_counter(FL_OBJECT *ob, long arg){ int index; fl_set_counter_bounds(NDRAW_COUNTER, 1,(double)p3d_get_nretract() ); index = (int) fl_get_counter_value(NDRAW_COUNTER); p3d_set_num_draw_proj(index); g3d_plot_proj_in_form(XYZ_GRAPH); }
static void CB_dof2_counter(FL_OBJECT *ob, long arg){ p3d_rob *robotPt; int dof2; robotPt = (p3d_rob*) p3d_get_desc_curid(P3D_ROBOT); dof2 = p3d_robot_user_dof_to_dof(robotPt,(int)floor(fl_get_counter_value(DOF2_COUNTER))); p3d_set_dof2(dof2); g3d_draw_allwin_active(); }