📄 history.cpp
字号:
return; } take_state = step-1; // reset the counter hist_hi++; hist_num = hist_hi+1; if(hist_hi >= alloc_size) comb_arrays(); for(int i=0;i<vector_size;i++) data[i][hist_hi] = values[i]; time_array[hist_hi] = time;}void Vector_History::comb_arrays(void) { int i; int j; hist_hi/=comb; hist_num = hist_hi+1; n_comb++; // discard elements by taking every "comb"th element for(i=0,j=0;i<hist_hi;i++,j+=comb) { for(int k=0;k<vector_size;k++) data[k][i]=data[k][j]; time_array[i]=time_array[j]; } step*=comb; // increase the step.}void Vector_History::dump(FILE *DMPFile){ History::dump(DMPFile); int datasize = vector_size * hist_num; XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&comb, 4, 1, DMPFile, "int"); XGWrite(&n_comb, 4, 1, DMPFile, "int"); XGWrite(&take_state, 4, 1, DMPFile, "int"); XGWrite(&step, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); // the following 6 ints are redundant but necessary XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); for(int v=0;v<vector_size;v++) for(int i=0; i<hist_num; i++) XGWrite(&data[v][i], ScalarInt, 1, DMPFile, ScalarChar);} void Vector_History::restore_2_00(FILE *DMPFile){ History::restore_2_00(DMPFile); XGRead(&comb, 4, 1, DMPFile, "int"); XGRead(&n_comb, 4, 1, DMPFile, "int"); XGRead(&take_state, 4, 1, DMPFile, "int"); XGRead(&step, 4, 1, DMPFile, "int"); XGRead(&vector_size, 4, 1, DMPFile, "int"); for(int v=0;v<vector_size;v++) for(int i=0; i<hist_num; i++) XGRead(&data[v][i], ScalarInt, 1, DMPFile, ScalarChar);}void Vector_History::restore(FILE *DMPFile, Scalar _A1, Scalar _A2, Scalar _B1, Scalar _B2, int xl, int yl, Scalar A1, Scalar A2, Scalar B1, Scalar B2, int j1, int k1, int j2, int k2 ) { History::restore(DMPFile, _A1, _A2, _B1, _B2, xl, yl, A1, A2, B1, B2, j1, k1, j2, k2); int datasize; int dummy[11]; XGRead(&datasize,4,1,DMPFile,"int"); XGRead(&comb, 4, 1, DMPFile, "int"); XGRead(&n_comb, 4, 1, DMPFile, "int"); XGRead(&take_state, 4, 1, DMPFile, "int"); XGRead(&step, 4, 1, DMPFile, "int"); XGRead(&vector_size, 4, 1, DMPFile, "int"); //read in the unused ints XGRead(&dummy, 4, 6, DMPFile, "int"); History::load_line_history_from_file(DMPFile,_A1,_A2,_B1,_B2,xl,yl, A1,A2,B1,B2,vector_size,hist_num,data,j1,k1,j2,k2);} /************************************************************************/Vec_Pointers_Local_History::Vec_Pointers_Local_History(int _vector_size,int _alloc_size,int _left_shift):History(_alloc_size) { vector_size = _vector_size; left_shift = _left_shift; if(left_shift > alloc_size) left_shift = alloc_size; if(left_shift < 1) left_shift = 1; data = new Scalar*[vector_size]; for(int i=0;i<vector_size;i++) { data[i]=new Scalar[alloc_size+1]; memset(data[i],0,(alloc_size+1) * sizeof(Scalar)); }}void Vec_Pointers_Local_History::add(Scalar** values, Scalar time){ hist_hi++; hist_num = hist_hi+1; if(hist_hi>=alloc_size) shift_arrays(); for(int i=0;i<vector_size;i++) data[i][hist_hi] = *values[i]; time_array[hist_hi] = time;}void Vec_Pointers_Local_History::shift_arrays(){ int i,j; // unfortunately, we can't just do this cyclically because // of limitations of our graphics library for(i=left_shift,j=0;i<hist_hi;i++,j++) { for(int k=0;k<vector_size;k++) data[k][i]=data[k][j]; time_array[j]=time_array[i]; } hist_hi-=left_shift; hist_num = hist_hi+1;}void Vec_Pointers_Local_History::dump(FILE *DMPFile){ History::dump(DMPFile); int datasize = vector_size * hist_num; XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&left_shift, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); //redundant but necessary XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); for(int v=0;v<vector_size;v++) for(int i=0; i<hist_num; i++) XGWrite(&data[v][i], ScalarInt, 1, DMPFile, ScalarChar);} void Vec_Pointers_Local_History::restore_2_00(FILE *DMPFile){ History::restore_2_00(DMPFile); XGRead(&left_shift, 4, 1, DMPFile, "int"); XGRead(&vector_size, 4, 1, DMPFile, "int"); for(int v=0;v<vector_size;v++) for(int i=0; i<hist_num; i++) XGRead(&data[v][i], ScalarInt, 1, DMPFile, ScalarChar);}void Vec_Pointers_Local_History::restore(FILE *DMPFile,Scalar _A1, Scalar _A2,Scalar _B1,Scalar _B2,int xl, int yl,Scalar A1,Scalar A2, Scalar B1,Scalar B2, int j1, int k1, int j2, int k2){ History::restore(DMPFile,_A1, _A2,_B1, _B2, xl, yl, A1, A2, B1, B2,j1,k1,j2,k2); int dummy[11]; int datasize; XGRead(&datasize, 4, 1, DMPFile, "int"); XGRead(&left_shift, 4, 1, DMPFile, "int"); XGRead(&vector_size, 4, 1, DMPFile, "int"); // read in the unused ints XGRead(dummy,4,9,DMPFile,"int"); History::load_line_history_from_file(DMPFile,_A1,_A2,_B1,_B2,xl,yl, A1,A2,B1,B2,vector_size,hist_num,data,j1,k1,j2,k2);}/*******************************************************************************/Vector_Local_History::Vector_Local_History(int _vector_size,int _alloc_size,int _left_shift):History(_alloc_size) { vector_size = _vector_size; left_shift = _left_shift; if(left_shift > alloc_size) left_shift = alloc_size; if(left_shift < 1) left_shift = 1; data = new Scalar*[vector_size]; for(int i=0;i<vector_size;i++) { data[i]=new Scalar[alloc_size+1]; memset(data[i],0,(alloc_size+1) * sizeof(Scalar)); } hist_hi = 0; hist_num = 1;}void Vector_Local_History::add(Scalar* values, Scalar time){ hist_hi++; hist_num = hist_hi+1; if(hist_hi>=alloc_size) shift_arrays(); for(int i=0;i<vector_size;i++) data[i][hist_hi] = values[i]; time_array[hist_hi] = time;}void Vector_Local_History::shift_arrays(){ int i,j; // unfortunately, we can't just do this cyclically because // of limitations of our graphics library for(i=left_shift,j=0;i<hist_hi;i++,j++) { for(int k=0;k<vector_size;k++) data[k][j]=data[k][i]; time_array[j]=time_array[i]; } hist_hi-=left_shift; hist_num = hist_hi+1;}void Vector_Local_History::dump(FILE *DMPFile){ History::dump(DMPFile); int datasize = vector_size * hist_num; XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&left_shift, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); // the following 9 ints are redundant but necessary XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); XGWrite(&vector_size, 4, 1, DMPFile, "int"); for(int v=0;v<vector_size;v++) for(int i=0; i<hist_num; i++) XGWrite(&data[v][i], ScalarInt, 1, DMPFile, ScalarChar);} void Vector_Local_History::restore_2_00(FILE *DMPFile){ History::restore_2_00(DMPFile); XGRead(&left_shift, 4, 1, DMPFile, "int"); XGRead(&vector_size, 4, 1, DMPFile, "int"); for(int v=0;v<vector_size;v++) for(int i=0; i<hist_num; i++) XGRead(&data[v][i], ScalarInt, 1, DMPFile, ScalarChar);}void Vector_Local_History::restore(FILE *DMPFile,Scalar _A1, Scalar _A2,Scalar _B1,Scalar _B2,int xl, int yl,Scalar A1,Scalar A2, Scalar B1,Scalar B2, int j1, int k1, int j2, int k2){ History::restore(DMPFile,_A1, _A2, _B1, _B2, xl, yl, A1, A2, B1, B2,j1,k1,j2,k2); int datasize; int dummy[11]; XGRead(&datasize, 4, 1, DMPFile, "int"); XGRead(&left_shift, 4, 1, DMPFile, "int"); XGRead(&vector_size, 4, 1, DMPFile, "int"); XGRead(dummy,4,9,DMPFile,"int"); History::load_line_history_from_file(DMPFile,_A1,_A2,_B1,_B2,xl,yl, A1,A2,B1,B2,vector_size,hist_num,data,j1,k1,j2,k2);}/***************************************************************************/JE_Region_History::JE_Region_History(int _vector_size_x, int _vector_size_y, int _Ave):History(_vector_size_x){ Ave = _Ave; array_size_x = _vector_size_x; array_size_y = _vector_size_y; data = new Scalar*[array_size_x]; for(int i=0;i<array_size_x;i++) { data[i]=new Scalar[array_size_y]; memset(data[i],0,(array_size_y) * sizeof(Scalar)); } hist_hi = -1;}void JE_Region_History::add(Vector3 ***values1, Vector3 ***values2, Vector3 **values3, Scalar time){ hist_hi++; if ((hist_hi>=Ave)&&(Ave>0)) clear_array(); for (int j=0; j<array_size_x; j++) for (int k=0; k<array_size_y; k++) data[j][k] = (data[j][k]*hist_hi + *values1[j][k]*((*values2[j][k]).jvDivide((values3[j][k]))))/(hist_hi+1);}void JE_Region_History::clear_array(){ for (int j=0; j<array_size_x; j++) for (int k=0; k<array_size_y; k++) data[j][k] = 0; hist_hi = 0;}void JE_Region_History::dump(FILE *DMPFile){ History::dump(DMPFile); int datasize = array_size_x*array_size_y; XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&Ave, 4, 1, DMPFile, "int"); XGWrite(&array_size_x, 4, 1, DMPFile, "int"); XGWrite(&array_size_y, 4, 1, DMPFile, "int"); // the following 8 ints are redundant but necessary XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); for(int j=0;j<array_size_x;j++) for(int k=0; k<array_size_y; k++) XGWrite(&data[j][k], ScalarInt, 1, DMPFile, ScalarChar);} void JE_Region_History::restore_2_00(FILE *DMPFile){ History::restore_2_00(DMPFile); XGWrite(&Ave, 4, 1, DMPFile, "int"); XGRead(&array_size_x, 4, 1, DMPFile, "int"); XGRead(&array_size_y, 4, 1, DMPFile, "int"); for(int j=0;j<array_size_x;j++) for(int k=0; k<array_size_y; k++) XGRead(&data[j][k], ScalarInt, 1, DMPFile, ScalarChar);}void JE_Region_History::restore(FILE *DMPFile,Scalar _A1, Scalar _A2,Scalar _B1,Scalar _B2,int xl, int yl,Scalar A1,Scalar A2, Scalar B1,Scalar B2, int j1, int k1, int j2, int k2){ History::restore(DMPFile,_A1, _A2, _B1, _B2, xl, yl, A1, A2, B1, B2,j1,k1,j2,k2);/* NOT DONE */}/*************************************************************************/Region_History::Region_History(int _vector_size_x, int _vector_size_y, int _Ave):History(_vector_size_x){ hist_hi = -1; Ave = _Ave; array_size_x = _vector_size_x; array_size_y = _vector_size_y; data = new Scalar*[array_size_x]; for(int i=0;i<array_size_x;i++) { data[i]=new Scalar[array_size_y]; memset(data[i],0,(array_size_y) * sizeof(Scalar)); }}void Region_History::add(Scalar ***values, Scalar time){ hist_hi++; if ((hist_hi>=Ave)&&(Ave>0)) clear_array(); for (int j=0; j<array_size_x; j++) for (int k=0; k<array_size_y; k++) data[j][k] = (data[j][k]*hist_hi + *values[j][k])/(hist_hi+1);}void Region_History::clear_array(){ for (int j=0; j<array_size_x; j++) for (int k=0; k<array_size_y; k++) data[j][k] = 0; hist_hi = 0;}void Region_History::dump(FILE *DMPFile){ History::dump(DMPFile); int datasize = array_size_x*array_size_y; XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&hist_hi, 4, 1, DMPFile, "int"); XGWrite(&Ave, 4, 1, DMPFile, "int"); XGWrite(&array_size_x, 4, 1, DMPFile, "int"); XGWrite(&array_size_y, 4, 1, DMPFile, "int"); // the following 7 ints are redundant but necessary XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); XGWrite(&datasize, 4, 1, DMPFile, "int"); for(int j=0;j<array_size_x;j++) for(int k=0; k<array_size_y; k++) XGWrite(&data[j][k], ScalarInt, 1, DMPFile, ScalarChar);} void Region_History::restore_2_00(FILE *DMPFile){// History::restore_2_00(DMPFile); XGRead(&hist_hi, 4, 1, DMPFile, "int"); XGRead(&Ave, 4, 1, DMPFile, "int"); XGRead(&array_size_x, 4, 1, DMPFile, "int"); XGRead(&array_size_y, 4, 1, DMPFile, "int"); for(int j=0;j<array_size_x;j++) for(int k=0; k<array_size_y; k++) XGRead(&data[j][k], ScalarInt, 1, DMPFile, ScalarChar);}void Region_History::restore(FILE *DMPFile,Scalar _A1, Scalar _A2,Scalar _B1,Scalar _B2,int xl, int yl,Scalar A1,Scalar A2, Scalar B1,Scalar B2, int j1, int k1, int j2, int k2){ History::restore(DMPFile,_A1, _A2, _B1, _B2, xl, yl, A1, A2, B1, B2,j1,k1,j2,k2);/* NOT DONE */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -