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);
  }
}
Beispiel #2
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();
}