static void change_view() { /* Change the view */ setup_view( (float)disp_crnt_view_x, (float)disp_crnt_view_y, DFLT_VIEW_DIST, disp_crnt_zoom, 0 ) ; /* And redraw */ display_scene( disp_fill_mode, disp_patch_switch, disp_mesh_switch, disp_interaction_switch, 0 ) ; }
void change_display(long val) #endif { #if defined(SGI_GL) && defined(GL_NASA) long val ; val = g_get_choice_val( ap, &choices[1] ) ; #endif /* Display image */ switch( val ) { case CHOICE_DISP_RADIOSITY: disp_fill_switch = (! disp_fill_switch) ; break ; case CHOICE_DISP_SHADED: disp_shade_switch = (! disp_shade_switch) ; break ; case CHOICE_DISP_PATCH: disp_patch_switch = (! disp_patch_switch) ; break ; case CHOICE_DISP_MESH: disp_mesh_switch = (! disp_mesh_switch) ; break ; case CHOICE_DISP_INTERACTION: disp_interaction_switch = (! disp_interaction_switch) ; break ; default: return ; } if( disp_fill_switch == 0 ) disp_fill_mode = 0 ; else { if( disp_shade_switch == 0 ) disp_fill_mode = 1 ; else disp_fill_mode = 2 ; } /* Display image */ display_scene( disp_fill_mode, disp_patch_switch, disp_mesh_switch, disp_interaction_switch, 0 ) ; }
static void expose_callback() { /* Display image */ display_scene( disp_fill_mode, disp_patch_switch, disp_mesh_switch, disp_interaction_switch, 0 ) ; }
void start_radiosity(long val) #endif { static long state = 0 ; long i; long total_rad_time, max_rad_time, min_rad_time; long total_refine_time, max_refine_time, min_refine_time; long total_wait_time, max_wait_time, min_wait_time; long total_vertex_time, max_vertex_time, min_vertex_time; #if defined(SGI_GL) && defined(GL_NASA) long val ; val = g_get_choice_val( ap, &choices[0] ) ; #endif if( val == CHOICE_RAD_RUN ) { if( state == -1 ) { printf( "Please reset first\007\n" ) ; return ; } /* Time stamp */ CLOCK( time_rad_start ) ; global->index = 0; /* Create slave processes */ for (i = 0 ; i < n_processors ; i++ ) { taskqueue_id[i] = assign_taskq(0) ; } /* And start processing */ CREATE(radiosity, n_processors); WAIT_FOR_END(n_processors); /* Time stamp */ CLOCK( time_rad_end ); /* Print out running time */ /* Print out running time */ printf("TIMING STATISTICS MEASURED BY MAIN PROCESS:\n"); print_running_time(0); if (dostats) { printf("\n\n\nPER-PROCESS STATISTICS:\n"); printf("%8s%20s%20s%12s%12s\n","Proc","Total","Refine","Wait","Smooth"); printf("%8s%20s%20s%12s%12s\n\n","","Time","Time","Time","Time") ; for (i = 0; i < n_processors; i++) printf("%8ld%20lu%20lu%12lu%12lu\n",i,timing[i]->rad_time, timing[i]->refine_time, timing[i]->wait_time, timing[i]->vertex_time); total_rad_time = timing[0]->rad_time; max_rad_time = timing[0]->rad_time; min_rad_time = timing[0]->rad_time; total_refine_time = timing[0]->refine_time; max_refine_time = timing[0]->refine_time; min_refine_time = timing[0]->refine_time; total_wait_time = timing[0]->wait_time; max_wait_time = timing[0]->wait_time; min_wait_time = timing[0]->wait_time; total_vertex_time = timing[0]->vertex_time; max_vertex_time = timing[0]->vertex_time; min_vertex_time = timing[0]->vertex_time; for (i = 1; i < n_processors; i++) { total_rad_time += timing[i]->rad_time; if (timing[i]->rad_time > max_rad_time) max_rad_time = timing[i]->rad_time; if (timing[i]->rad_time < min_rad_time) min_rad_time = timing[i]->rad_time; total_refine_time += timing[i]->refine_time; if (timing[i]->refine_time > max_refine_time) max_refine_time = timing[i]->refine_time; if (timing[i]->refine_time < min_refine_time) min_refine_time = timing[i]->refine_time; total_wait_time += timing[i]->wait_time; if (timing[i]->wait_time > max_wait_time) max_wait_time = timing[i]->wait_time; if (timing[i]->wait_time < min_wait_time) min_wait_time = timing[i]->wait_time; total_vertex_time += timing[i]->vertex_time; if (timing[i]->vertex_time > max_vertex_time) max_vertex_time = timing[i]->vertex_time; if (timing[i]->vertex_time < min_vertex_time) min_vertex_time = timing[i]->vertex_time; } printf("\n\n%8s%20lu%20lu%12lu%12lu\n","Max", max_rad_time, max_refine_time, max_wait_time, max_vertex_time); printf("\n%8s%20lu%20lu%12lu%12lu\n","Min", min_rad_time, min_refine_time, min_wait_time, min_vertex_time); printf("\n%8s%20lu%20lu%12lu%12lu\n","Avg", (long) (((double) total_rad_time) / ((double) (1.0 * n_processors))), (long) (((double) total_refine_time) / ((double) (1.0 * n_processors))), (long) (((double) total_wait_time) / ((double) (1.0 * n_processors))), (long) (((double) total_vertex_time) / ((double) (1.0 * n_processors)))); printf("\n\n"); } /* print_fork_time(0) ; */ print_statistics( stdout, 0 ) ; /* Display image */ display_scene( disp_fill_mode, disp_patch_switch, disp_mesh_switch, disp_interaction_switch, 0) ; state = -1 ; } else if( val == CHOICE_RAD_STEP ) { if( state == -1 ) { printf( "Please reset first\007\n" ) ; return ; } /* Step execution */ switch( state ) { case 0: /* Step execute as a single process */ global->index = 1; /* Create slave processes */ for ( i = 0 ; i < n_processors ; i++ ) { taskqueue_id[i] = assign_taskq(0) ; } CREATE(radiosity, n_processors/* - 1*/); /* Decompose model objects into patches and build the BSP tree */ /* Create the first tasks (MASTER only) */ init_modeling_tasks(0) ; process_tasks(0) ; state ++ ; break ; case 1: if( init_ray_tasks(0) ) { BARRIER(global->barrier, n_processors); process_tasks(0) ; } else state++ ; break ; default: BARRIER(global->barrier, n_processors); init_radavg_tasks( RAD_AVERAGING_MODE, 0 ) ; process_tasks(0) ; init_radavg_tasks( RAD_NORMALIZING_MODE, 0 ) ; process_tasks(0) ; WAIT_FOR_END(n_processors/* - 1*/) state = -1 ; } /* Display image */ display_scene( disp_fill_mode, disp_patch_switch, disp_mesh_switch, disp_interaction_switch, 0) ; } else if( val == CHOICE_RAD_RESET ) { /* Initialize global variables again */ init_global(0) ; init_visibility_module(0) ; g_clear() ; state = 0 ; } }
/*! Get the view of the camera's robot. According to the initialisation method you used, the current position and maybee the desired position of the object are displayed. \param I_ : The image where the internal view is displayed. \warning : The objects are displayed thanks to overlays. The image I is not modified. */ void vpRobotWireFrameSimulator::getInternalView(vpImage<unsigned char> &I_) { if (!sceneInitialized) throw; double u; double v; //if(px_int != 1 && py_int != 1) // we assume px_int and py_int > 0 if( (std::fabs(px_int-1.) > vpMath::maximum(px_int,1.)*std::numeric_limits<double>::epsilon()) && (std::fabs(py_int-1) > vpMath::maximum(py_int,1.)*std::numeric_limits<double>::epsilon())) { u = (double)I.getWidth()/(2*px_int); v = (double)I.getHeight()/(2*py_int); } else { u = (double)I_.getWidth()/(vpMath::minimum(I_.getWidth(),I_.getHeight())); v = (double)I_.getHeight()/(vpMath::minimum(I_.getWidth(),I_.getHeight())); } float o44c[4][4],o44cd[4][4],x,y,z; Matrix id = IDENTITY_MATRIX; vpHomogeneousMatrix* fMit = new vpHomogeneousMatrix[size_fMi]; get_fMi(fMit); this->cMo = fMit[size_fMi-1].inverse()*fMo; this->cMo = rotz*cMo; vp2jlc_matrix(cMo.inverse(),o44c); vp2jlc_matrix(cdMo.inverse(),o44cd); while (get_displayBusy()) vpTime::wait(2); add_vwstack ("start","cop", o44c[3][0],o44c[3][1],o44c[3][2]); x = o44c[2][0] + o44c[3][0]; y = o44c[2][1] + o44c[3][1]; z = o44c[2][2] + o44c[3][2]; add_vwstack ("start","vrp", x,y,z); add_vwstack ("start","vpn", o44c[2][0],o44c[2][1],o44c[2][2]); add_vwstack ("start","vup", o44c[1][0],o44c[1][1],o44c[1][2]); add_vwstack ("start","window", -u, u, -v, v); if (displayObject) { display_scene(id,this->scene,I_, curColor); } add_vwstack ("start","cop", o44cd[3][0],o44cd[3][1],o44cd[3][2]); x = o44cd[2][0] + o44cd[3][0]; y = o44cd[2][1] + o44cd[3][1]; z = o44cd[2][2] + o44cd[3][2]; add_vwstack ("start","vrp", x,y,z); add_vwstack ("start","vpn", o44cd[2][0],o44cd[2][1],o44cd[2][2]); add_vwstack ("start","vup", o44cd[1][0],o44cd[1][1],o44cd[1][2]); add_vwstack ("start","window", -u, u, -v, v); if (displayDesiredObject) { if (desiredObject == D_TOOL) display_scene(o44cd,desiredScene,I_, vpColor::red); else display_scene(id,desiredScene,I_, desColor); } delete[] fMit; set_displayBusy(false); }