⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 history.cpp

📁 pic 模拟程序!面向对象
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		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 + -